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 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.
Connect to external endpoints outside of 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.
Considerações de segurança ao usar a concessão automatizada de privilégios¶
Quando um provedor configura um aplicativo para usar manifest_version: 2 no arquivo de manifesto, a concessão automática de privilégios está habilitada. Por padrão, isso permite que o Snowflake conceda automaticamente certos privilégios ao aplicativo. Para informações sobre os privilégios que podem ser concedidos automaticamente ao aplicativo, consulte Privilégios concedidos pela concessão automatizada de privilégios.
Durante a instalação, Snowsight exibe uma notificação sobre os privilégios solicitados pelo aplicativo. Quando um consumidor instala um aplicativo que usa a concessão automática de privilégios, ele concorda que o aplicativo pode receber esses privilégios durante atualizações sem exigir consentimento adicional.
Os consumidores podem criar políticas de recursos que restringem os objetos que um aplicativo pode criar. Para mais informações sobre a criação de políticas de recursos, consulte Usar políticas de recursos para limitar os objetos que um aplicativo pode criar.
Solicitação de privilégios para um aplicativo usando a concessão automatizada de privilégios¶
Providers can use automated granting of privileges to specify the privileges an app needs to create and use objects in the consumer account. Automated granting of privileges grants the required privileges to the app when the consumer installs or upgrades the app.
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
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"
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¶
Using automated granting of privileges, providers can add the SQL commands to the setup script to create and access objects in the consumer account.
O exemplo a seguir mostra como criar um warehouse na conta do consumidor:
CREATE OR REPLACE WAREHOUSE application_wh;
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
CREATE SHARE
CREATE LISTING
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.
Restrictions on privileges gated by app specifications¶
The following privileges allow apps to create objects, but require additional app specification approval:
- CREATE EXTERNAL ACCESS INTEGRATION
Allows an app to create an external access integration in the consumer account. However, to allow connections to an external endpoint, consumers must also approve the app specification that allows the app to connect to external hosts.
- CREATE SECURITY INTEGRATION
Allows an app to create a security integration in the consumer account. However, to enable OAuth authentication, consumers must also approve the app specification that defines the OAuth endpoints and scopes.
- CREATE SHARE and CREATE LISTING
Allow an app to create shares and listings in the consumer account. However, to share data with target accounts, consumers must also approve the app specification that specifies the target accounts and auto-fulfillment settings.
For more information about app specifications, see Visão geral das especificações do aplicativo.
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.