Funções do aplicativo: Permitir que os consumidores compartilhem diferentes exibições dos mesmos dados¶
Como provedor, você pode aprimorar a experiência do consumidor incluindo funções de aplicativo no Declarative Native App. Uma função de aplicativo é uma credencial criada no contexto de um Declarative Native App. Para informações sobre funções de aplicativo, consulte Sobre as funções de aplicativo.
As funções de aplicativo isolam a segurança do aplicativo de modo que as credenciais específicas dele não precisem ser gerenciadas dentro do modelo de segurança organizacional mais amplo do consumidor. Usando essas funções, os provedores podem controlar o acesso a recursos do aplicativo sem complicações. Assim, as contas de consumidor podem conceder acesso à lógica e aos dados do aplicativo usando uma simples instrução SQL GRANT.
Por exemplo, se um aplicativo usar uma função de aplicativo Operations para acessar uma tabela de log, o consumidor não precisará manter essa função fora do contexto do aplicativo; ele só precisa saber que pode compartilhar o aplicativo com a equipe de suporte usando a função de aplicativo Operations.
Using the manifest file, you define application roles, and assign them to content in the app. When the consumer installs the app, they can share the content with their organization members by assigning the application roles to their account roles and users. Consumers can also create hierarchies of application roles by assigning application roles to other application roles.
As funções de aplicativo permitem que os consumidores compartilhem dados de diferentes maneiras com os membros da organização. Por exemplo, um aplicativo pode incluir dois notebooks para apresentar os dados, um com a exibição completa dos dados e outro com uma exibição com filtros.
Depois, o proprietário do aplicativo de consumidor pode compartilhar uma exibição com filtros com uma equipe sem perder o próprio acesso à exibição completa.
Quando você usa funções de aplicativo para permitir acesso aos recursos do banco de dados, os recursos filho herdam as funções dos recursos pai. Por exemplo, se você designar uma função de aplicativo a um esquema, todas as tabelas e exibições nesse esquema herdam a função. Se você designar uma função de aplicativo a um banco de dados, todos os esquemas, tabelas e exibições nesse banco de dados herdam a função.
Atribuição de funções de aplicativo ao conteúdo no arquivo de manifesto¶
In the manifest file, in the top-level roles field, define the available application roles, for example,
sales,marketing, andoperations.roles: - sales: comment: "The sales role provides access to the filtered view of the sales data." - marketing: comment: "The marketing role provides access to the filtered view of the marketing data." - operations: comment: "The operations role provides access to the full view of the data, including logs."
CopyAtribua funções de aplicativo ao conteúdo do arquivo de manifesto usando uma lista. Por exemplo,
roles: [sales, support]:- customer_table: roles: [sales,marketing] # Accessible to sales and marketing, app owners
CopyPara adicionar uma tabela, adicione a função a
<named table>.rolese<named schema>.rolesonde a tabela está.schemas: - sales_table: roles: [sales] tables: - sales_table: roles: [sales]
CopyPara adicionar uma exibição, adicione a função a
<named view>.rolese<named schema>.rolesonde a exibição está.schemas: - sales_view: roles: [sales] views: - sales_view: roles: [sales]
CopyAo adicionar uma exibição de uma tabela com filtros, não adicione a tabela subjacente; isso impede que os usuários acessem os dados não filtrados.
Para incluir um notebook, adicione a função a
<named notebook>.rolese adiciona as tabelas e exibições (e seus esquemas subjacentes) referenciadas no notebook.notebooks: - SALES_NB: main_file: ALL-DATA.ipynb roles: [sales] comment: Accessible to sales and app owners, references full view of the sales data
CopyAo adicionar um notebook que faça referência à exibição de uma tabela com filtros, não adicione a tabela subjacente; isso impede que os usuários acessem os dados não filtrados.
To give an object no app roles, either leave the field empty (
[]) or omit it. These objects are only accessible by the app owner and roles with granted IMPORTED PRIVILEGES.
- my_schema: roles: [] # Accessible to app owners onlyCopy
Exemplo de arquivo de manifesto:
roles:
- sales:
comment: "The sales role provides access to the filtered view of the sales data."
- marketing:
comment: "The marketing role provides access to the filtered view of the marketing data."
- operations:
comment: "The operations role provides access to the full view of the log data."
application_content:
notebooks:
- SALES_NB:
main_file: ALL-DATA.ipynb
roles: [sales]
comment: Accessible to sales and app owners, references full view of the sales data
- MARKETING_NB:
main_file: FILTERED.ipynb
roles: [marketing] #
comment: Accessible to marketing and app owners, references filtered view of the marketing data
shared_content:
databases:
- my_database:
schemas:
- my_schema:
roles: [] # Accessible to app owners
tables:
- sales_table:
roles: [sales] # Accessible to sales, app owners
- marketing_table:
roles: [marketing] # Accessible to marketing, app owners
- customer_table:
roles: [sales,marketing] # Accessible to sales and marketing, app owners
- logs_table:
roles: [operations] # Accessible to operations and app owners
views:
- sales_view:
roles: [sales] # Accessible to sales and app owners
- marketing_view:
roles: [marketing] # Accessible to marketing and app owners
- customer_view:
roles: [sales,marketing] # Accessible to sales, marketing, and app owners
- operations_view:
roles: [operations] # Accessible to operations and app owners
Mais tarde, quando o consumidor instalar o aplicativo, ele terá acesso aos dois notebooks, às tabelas e às exibições.
Para compartilhar a exibição de operações com a equipe de suporte, a função de aplicativo operations é atribuída à função da equipe de suporte da organização.
GRANT APPLICATION ROLE customer_app.operations TO ROLE support_team_west;
Membros da equipe de consumidores com a função support_team_west podem ver a tabela logs, mas não os notebooks na guia Available Notebooks no Snowsight nem acessar as tabelas e exibições sales e customers.
Para compartilhar a exibição de vendas com a equipe, a função de aplicativo Sales é atribuída à função de organização da equipe de vendas.
GRANT APPLICATION ROLE customer_app.sales TO ROLE sales_team_east;
Membros da equipe de consumidores com a função sales_team_east podem ver o notebook na guia ** Availabel Notebooks** no Snowsight. Eles não podem ver a tabela logs, mas podem acessar as tabelas e exibições sales e customers.
For more information about how consumers share roles, see Compartilhamento do acesso ao aplicativo.