Configuração dos privilégios exigidos por um aplicativo

Este tópico descreve como usar a concessão automatizada de privilégios para solicitar os privilégios de um consumidor ao instalar ou atualizar um Snowflake Native App.

Visão geral da concessão automatizada de privilégios

Muitas vezes, um aplicativo precisa criar ou acessar objetos ou executar outras ações na conta do consumidor. Isso requer que o consumidor conceda os privilégios necessários que permitem que o aplicativo execute essas ações. Por exemplo, os aplicativos devem ter privilégios para executar os seguintes tipos de tarefas:

  • Criar e iniciar warehouses e pools de computação.

  • Acesse os dados na conta do consumidor.

  • Conectar-se a pontos de extremidade externos (fora do Snowflake).

Ao usar a concessão automatizada de privilégios, os provedores podem especificar os privilégios necessários no arquivo de manifesto de um aplicativo. Quando o consumidor instala ou atualiza um aplicativo, os privilégios especificados no manifesto são concedidos automaticamente ao aplicativo.

Cuidado

O provedor deve comunicar esses privilégios e seu possível impacto para que fiquem visíveis ao consumidor ao avaliar e instalar o aplicativo. Depois que os privilégios são concedidos automaticamente durante a instalação ou atualização, esses privilégios não podem ser revogados.

Solicitação de privilégios para um aplicativo usando a concessão automatizada de privilégios

Os provedores podem usar a concessão automatizada de privilégios para especificar os privilégios que um aplicativo precisa para criar e usar objetos na conta do consumidor. A concessão automatizada de privilégios concede os privilégios necessários ao aplicativo quando o consumidor instala ou atualiza o aplicativo.

Definição da versão do arquivo de manifesto

Para habilitar a concessão automatizada de privilégios para um aplicativo, defina a versão no início do arquivo de manifesto, conforme mostrado no exemplo a seguir:

manifest_version: 2
Copy

Especificação dos privilégios no arquivo de manifesto

Para especificar os privilégios exigidos pelo aplicativo, os provedores devem declará-los no arquivo de manifesto do aplicativo.

Nota

Para usar a concessão automatizada de privilégios, os provedores devem especificar manifest_version: 2.

O exemplo a seguir mostra como especificar o privilégio CREATE WAREHOUSE no arquivo de manifesto:

manifest_version: 2
...
privileges:
  - CREATE WAREHOUSE
    description: "Allows the app to create warehouses in the consumer account"
Copy

Quando um consumidor instala o aplicativo, o privilégio CREATE WAREHOUSE é concedido automaticamente ao aplicativo.

Cuidado

Se um provedor alterar a propriedade manifest_version do arquivo de manifesto de 2 para 1, todos os privilégios automáticos serão revogados do aplicativo durante a atualização. Se o consumidor tiver concedido privilégios explicitamente ao aplicativo, esses privilégios permanecerão inalterados.

Nota

Os provedores só podem alterar a propriedade manifest_version durante as principais atualizações para uma nova versão do aplicativo. O manifest_version não pode ser alterado em uma versão de patch.

Criação dos objetos necessários no script de configuração

Usando a concessão automatizada de privilégios, os provedores podem adicionar comandos do SQL ao script de configuração usado para criar e acessar objetos na conta do consumidor.

O exemplo a seguir mostra como criar um warehouse na conta do consumidor:

CREATE OR REPLACE WAREHOUSE application_wh;
Copy

Este comando cria um warehouse denominado application_wh na conta do consumidor. A concessão automatizada de privilégios permite que o aplicativo crie o warehouse diretamente. O provedor não precisa adicionar mais alguma lógica para verificar se o consumidor concedeu os privilégios necessários.

Privilégios concedidos pela concessão automatizada de privilégios

Os seguintes privilégios são suportados pela concessão automatizada de privilégios:

  • EXECUTE TASK

  • EXECUTE MANAGED TASK

  • CREATE WAREHOUSE

  • CREATE COMPUTE POOL

  • BIND SERVICE ENDPOINT

  • CREATE DATABASE

  • CREATE EXTERNAL ACCESS INTEGRATION

  • CREATE SECURITY INTEGRATION

Quando um provedor adiciona esses privilégios ao arquivo de manifesto, eles são concedidos automaticamente ao aplicativo durante a instalação e a atualização.

Restrições no privilégio CREATE EXTERNAL ACCESS INTEGRATION

O privilégio CREATE EXTERNAL ACCESS INTEGRATION permite que um aplicativo crie uma integração de acesso externo na conta do consumidor. No entanto, para permitir conexões com um ponto de extremidade externo, os consumidores também devem aprovar a especificação do aplicativo, que permite que o aplicativo se conecte a hosts externos.

Para obter mais informações, consulte Usar especificações de aplicativo para solicitar pontos de extremidade externos dos consumidores.

Privilégios não concedidos pela concessão automatizada de privilégios

Alguns privilégios não são concedidos automaticamente ao aplicativo. Os consumidores devem conceder manualmente esses privilégios ao instalar ou atualizar um aplicativo. Por exemplo, os seguintes privilégios não são concedidos automaticamente ao aplicativo:

  • MANAGE WAREHOUSES

  • IMPORTED PRIVILEGES ON SNOWFLAKE DB

  • READ SESSION

  • EXECUTE ALERT

Uso da concessão automatizada de privilégios durante as atualizações

Ao publicar uma nova versão de um aplicativo, talvez seja necessário adicionar ou remover os privilégios exigidos pelo aplicativo. O script de configuração da nova versão ou patch é executado com os novos privilégios automáticos especificados no manifesto e os privilégios exigidos pela versão anterior. Quaisquer privilégios em excesso removidos na nova versão são revogados quando a atualização do aplicativo é concluída.

Para garantir a estabilidade durante as atualizações, quando a versão do arquivo de manifesto é definida como 2, a lista de privilégios solicitados no arquivo de manifesto não pode ser modificada como parte de um patch. Isso evita que os provedores interrompam involuntariamente os aplicativos, removendo os privilégios necessários em um patch.