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.

Usando o arquivo de manifesto, você define as funções de aplicativo e as atribui ao conteúdo desse aplicativo. Quando o consumidor instala o aplicativo, ele pode compartilhar o conteúdo com os membros da organização atribuindo as funções de aplicativo a às funções e aos usuários da organização. Os consumidores também podem criar hierarquias de funções de aplicativo atribuindo-as a outras funções de aplicativo.

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.

Componentes de um aplicativo que inclui duas exibições dos mesmos dados.

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.

Os proprietários de aplicativos podem designar funções às equipes na organização

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

  1. No arquivo de manifesto, no campo de funções de nível superior, defina as funções de aplicativo disponíveis, por exemplo, sales, marketing`e :code:`operations.

    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."
    
    Copy
  2. Atribua 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
    
    Copy
  3. Para adicionar uma tabela, adicione a função a <named table>.roles e <named schema>.roles onde a tabela está.

    schemas:
      - sales_table:
        roles: [sales]
    tables:
      - sales_table:
        roles: [sales]
    
    Copy
  4. Para adicionar uma exibição, adicione a função a <named view>.roles e <named schema>.roles onde a exibição está.

    schemas:
       - sales_view:
         roles: [sales]
    views:
       - sales_view:
         roles: [sales]
    
    Copy
  5. Ao 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.

  6. Para incluir um notebook, adicione a função a <named notebook>.roles e 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
    
    Copy
  7. Ao 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.

  8. Para não atribuir funções de aplicativo a um objeto, omita ou deixe o campo ([]) vazio. Esses objetos só podem ser acessados pelo proprietário do aplicativo e pelas funções com IMPORTED PRIVILEGES atribuído.

- my_schema:
  roles: [] # Accessible to app owners only
Copy

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
Copy

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;
Copy

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;
Copy

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.

Para mais informações sobre como os consumidores compartilham funções, consulte Compartilhamento do acesso ao aplicativo.