Usar políticas de recursos para limitar os objetos que um aplicativo pode criar¶
Este tópico descreve como usar políticas de recursos para limitar os objetos que um Snowflake Native App pode criar.
Sobre as políticas de recursos¶
Se um aplicativo estiver configurado para usar a concessão automatizada de privilégios, o aplicativo pode solicitar os seguintes privilégios:
EXECUTE TASK
EXECUTE MANAGED TASK
CREATE WAREHOUSE
CREATE COMPUTE POOL
BIND SERVICE ENDPOINT
CREATE DATABASE
CREATE EXTERNAL ACCESS INTEGRATION
Se o aplicativo estiver configurado para usar esses privilégios, eles não poderão ser revogados por consumidores após a instalação do aplicativo. No entanto, os administradores de consumidores podem usar políticas de recursos para limitar os objetos que um aplicativo pode criar na conta do consumidor.
Por exemplo, se um consumidor não quiser que um aplicativo crie warehouses ou pools de computação, um administrador de conta do consumidor poderá criar uma política de recurso que proíbe um aplicativo específico ou todos os aplicativos de criar warehouses ou pools de computação.
As políticas de recursos permitem que os consumidores impeçam um aplicativo de criar ou usar os seguintes objetos:
COMPUTE POOLS
DATABASES
TASKS
WAREHOUSES
Nota
Integrações de acesso externo não podem ser bloqueadas usando políticas de recurso. Em vez disso, os consumidores podem aprovar ou recusar os pontos de extremidade de um aplicativo usando as especificações dele.
Fluxo de trabalho¶
Este é o fluxo de trabalho geral para usar políticas de recursos para limitar os objetos que um aplicativo pode criar:
Ver a listagem do aplicativo para determinar os privilégios que o aplicativo está solicitando.
Se houver algum objeto que você queira restringir, crie uma política de recursos para bloquear esses objetos.
Para obter mais informações, consulte Criar uma nova política de recursos.
Aplicar a política de recursos à conta ou a um objeto específico.
Para obter mais informações, consulte Atribuir uma política de recursos no nível da conta e Aplicar uma política de recursos a um aplicativo.
Considerações sobre a replicação ao usar políticas de recursos¶
As referências de política de recursos no nível da conta são replicadas quando o banco de dados que contém a política é especificado, por exemplo, definindo ALLOWED_DATABASES = policy_db em um grupo de replicação ou de failover.
Se a conta já tiver sido replicada para uma de destino, o administrador da conta do consumidor deve fazer o seguinte:
Atualizar o grupo de replicação ou failover na conta de origem para incluir os bancos de dados e os tipos de objetos necessários para replicar a política de recursos.
Executar uma operação para atualizar a conta de destino.
Nota
A política de recursos deve estar na mesma conta que a atribuição da política no nível de conta.
Se você tiver uma política de recursos definida na conta e não atualizar o grupo de replicação ou failover para incluir o policy_db com a política, isso criará uma referência pendente na conta de destino. Isso significa que o Snowflake não consegue localizar a política na conta de destino porque o nome totalmente qualificado da política aponta para o banco de dados na conta de origem. O resultado é que a conta ou os usuários de destino na conta de destino não são obrigados a cumprir a política de recurso.
Para replicar com sucesso uma política de recurso, verifique se o grupo de replicação ou failover inclui os tipos de objetos e bancos de dados necessários para evitar uma referência pendente.
Para obter mais informações, consulte Considerações sobre a replicação.
Precedência da política de recursos¶
Os consumidores podem aplicar uma política de recursos a todos os aplicativos de uma conta ou a um aplicativo específico. Se houver políticas de recursos aplicadas a mais de um deles, a política de recursos mais específica substituirá as políticas de recursos mais gerais. O seguinte resume a ordem de precedência:
- Conta:
As políticas de recursos aplicadas a uma conta são as políticas de recursos mais gerais. Elas são substituídas por políticas de recursos aplicadas a um objeto específico, por exemplo, um aplicativo
- Objeto:
As políticas de recursos aplicadas a um objeto específico substituem as políticas de recursos aplicadas à conta.
Os consumidores podem usar essa precedência para ajustar os objetos que um aplicativo pode criar em sua conta. Por exemplo, um consumidor pode aplicar uma política de recursos no nível da conta que proíba todos os aplicativos da conta de criar um banco de dados. Se um aplicativo tentar criar um banco de dados durante a instalação, a instalação falhará.
No entanto, os consumidores também podem criar uma política de recursos sem restrições e aplicar essa política de recursos a um aplicativo específico. Esse aplicativo teria permissão para criar um banco de dados.
Para obter mais informações, consulte Criar uma nova política de recursos.
Privilégios necessários para usar as políticas de recursos¶
A tabela a seguir descreve os privilégios necessários para criar e usar políticas de recursos:
Privilégio |
Objeto |
Notas |
|---|---|---|
CREATE FEATURE POLICY |
SCHEMA |
Necessário para criar uma política de recursos. Esse privilégio deve ser concedido ao esquema que contém a política de recursos. |
APPLY FEATURE POLICY |
ACCOUNT |
|
APPLY ou OWNERSHIP |
FEATURE POLICY |
Como trabalhar com políticas de recursos¶
Os consumidores podem usar Snowsight ou SQL para gerenciar o ciclo de vida de uma política de recursos.
Criar uma nova política de recursos¶
Os consumidores podem criar políticas de recursos para proibir um aplicativo de criar determinados tipos de objetos. O exemplo a seguir mostra como criar uma política de recursos para proibir um aplicativo de criar um banco de dados:
CREATE DATABASE feature_policy_db;
CREATE SCHEMA sch;
CREATE FEATURE POLICY block_create_db_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = (DATABASE);
Nota
As políticas de recursos devem ser criadas dentro de um esquema.
Os consumidores também podem criar uma política de recursos que não restrinja a criação de objetos, conforme mostrado no exemplo a seguir:
CREATE FEATURE POLICY block_nothing_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
Atribuir uma política de recursos no nível da conta¶
Os consumidores podem aplicar uma política de recursos no nível da conta usando o comando ALTER ACCOUNT, conforme mostrado no exemplo a seguir:
ALTER ACCOUNT
SET FEATURE POLICY feature_policy_db.sch.block_create_db_policy
FOR ALL APPLICATIONS;
Esse comando aplica a política block_create_db_policy a qualquer aplicativo que esteja instalado na conta. Depois de aplicar essa política, os aplicativos não poderão mais criar bancos de dados.
Aplicar uma política de recursos a um aplicativo¶
Para aplicar uma política de recursos ao criar um aplicativo manualmente, use a cláusula WITH FEATURE POLICY do comando CREATE APPLICATION, conforme mostrado no exemplo a seguir:
CREATE APPLICATION hello_snowflake_app
WITH FEATURE POLICY = feature_policy_db.block_create_db_policy;
Para aplicar uma política de recursos a um aplicativo, use o comando ALTER APPLICATION, conforme mostrado no exemplo a seguir:
ALTER APPLICATION hello_snowflake_app
SET FEATURE POLICY feature_policy_db.block_create_db_policy;
Cancelar a aplicação de uma política de recursos¶
Para cancelar a aplicação de uma política de recursos no nível da conta, use o comando ALTER ACCOUNT, conforme mostrado no exemplo a seguir:
ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS;
Para cancelar a aplicação de uma política de recursos para um aplicativo específico, use o comando ALTER APPLICATION, conforme mostrado no exemplo a seguir:
ALTER APPLICATION FEATURE_POLICY_TEST_APP UNSET FEATURE POLICY;
Excluir uma política de recursos¶
Para excluir uma política de recursos, use o comando DROP FEATURE POLICY, conforme mostrado no exemplo a seguir:
DROP FEATURE POLICY block_create_db_policy;
Visualizar informações sobre políticas de recursos¶
Para visualizar as políticas de recursos em uma conta na qual você tem privilégios de acesso, use o comando SHOW FEATURE POLICIES:
SHOW FEATURE POLICIES ON ACCOUNT;
Para visualizar as políticas de recursos aplicadas a um aplicativo, use o seguinte comando:
SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
Para ver informações sobre uma política de recursos específica, use DESCRIBE FEATURE POLICY, conforme mostrado no exemplo a seguir:
DESCRIBE FEATURE POLICY feature_policy_db.block_create_db_policy;