Utiliser des politiques de fonctions pour limiter les objets qu’une application peut créer¶
Cette rubrique explique comment utiliser des politiques de fonctions pour limiter les objets qu’une Snowflake Native App peut créer.
À propos des politiques de fonctions¶
Si une application est configurée pour utiliser l’octroi automatique de privilèges, l’application peut demander à utiliser les privilèges suivants :
EXECUTE TASK
EXECUTE MANAGED TASK
CREATE WAREHOUSE
CREATE COMPUTE POOL
BIND SERVICE ENDPOINT
CREATE DATABASE
CREATE EXTERNAL ACCESS INTEGRATION
Le consommateur ne peut pas révoquer ces privilèges après l’installation de l’application. Cependant, les politiques de fonctions permettent aux consommateurs de limiter les objets qu’une application peut créer.
Par exemple, si vous ne souhaitez pas qu’une application crée des entrepôts ou des pools de calcul, un administrateur de compte consommateur peut créer une politique de fonction qui interdit à une application particulière ou à toutes les applications de créer des entrepôts ou des pools de calcul.
Les politiques de fonctions permettent aux consommateurs d’empêcher une application de créer ou d’utiliser les objets suivants :
COMPUTE POOLS
DATABASES
TASKS
WAREHOUSES
Note
Les intégrations d’accès externes ne peuvent pas être bloquées à l’aide de politiques de fonctions. Au lieu de cela, les consommateurs peuvent choisir d’approuver les points de terminaison d’une application à l’aide des spécifications de l’application.
Limitations¶
Les politiques de fonctions ne sont pas prises en charge sur les bases de données, les schémas ou les objets qu’ils contiennent et qui utilisent la réplication. Les politiques de fonctions sont ignorées pour tout objet faisant partie d’un groupe de réplication.
Workflow¶
Le workflow général d’utilisation des politiques de fonctions pour limiter les objets qu’une application peut créer est le suivant :
Affichez le listing de l’application pour déterminer les privilèges exigés par l’application.
Si vous souhaitez restreindre certains objets, créez une politique de fonction pour bloquer ces objets.
Pour plus d’informations, voir Créer une nouvelle politique de fonction.
Appliquez la politique de fonction au compte ou à un objet spécifique.
Pour plus d’informations, voir Attribuer une politique de fonction au niveau du compte et Appliquer une politique de fonction à une application.
Ordre de priorité de la politique de fonction¶
Les consommateurs peuvent appliquer une politique de fonction à toutes les applications d’un compte ou à une application spécifique. Si des politiques de fonction sont appliquées à plusieurs de ces éléments, la fonction la plus spécifique prévaut sur les politiques de fonction plus générales. Le tableau suivant résume l’ordre de priorité :
- Compte:
Les politiques de fonctions appliquées à un compte sont les politiques de fonctions les plus générales. Elles sont remplacées par des politiques de fonctions appliquées à un objet spécifique, par exemple une application
- Objet:
Les politiques de fonctions appliquées à un objet spécifique prévalent sur les politiques de fonctions appliquées au compte.
Les consommateurs peuvent utiliser cet ordre de priorité pour affiner les objets qu’une application peut créer dans leur compte. Par exemple, un consommateur peut appliquer une politique de fonction au niveau du compte qui interdit à toutes les applications du compte de créer une base de données. Si une application tente de créer une base de données pendant l’installation, celle-ci échoue.
Toutefois, les consommateurs peuvent également créer une politique de fonction sans restrictions et l’appliquer à une application spécifique. Cette application serait autorisée à créer une base de données.
Pour plus d’informations, voir Créer une nouvelle politique de fonction.
Privilèges requis pour l’utilisation des politiques de fonctions¶
La table suivante décrit les privilèges requis pour créer et utiliser des politiques de fonctions :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE FEATURE POLICY |
SCHEMA |
Privilèges requis pour créer une politique de fonction. Ce privilège doit être accordé sur le schéma contenant la politique de fonction. |
APPLY FEATURE POLICY |
ACCOUNT |
|
APPLY ou OWNERSHIP |
FEATURE POLICY |
Utilisation des politiques de fonctions¶
Les consommateurs peuvent utiliser Snowsight ou SQL pour gérer le cycle de vie d’une politique de fonction.
Créer une nouvelle politique de fonction¶
Les consommateurs peuvent créer des politiques de fonctions pour interdire à une application de créer certains types d’objets. L’exemple suivant montre comment créer une politique de fonction pour interdire à une application de créer une base de données :
CREATE DATABASE feature_policy_db;
CREATE SCHEMA sch;
CREATE FEATURE POLICY block_create_db_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = (DATABASE);
Note
Les politiques de fonctions doivent être créées dans un schéma.
Les consommateurs peuvent également créer une politique de fonction qui n’empêche pas la création d’objets, comme le montre l’exemple suivant :
CREATE FEATURE POLICY block_nothing_policy
BLOCKED_OBJECT_TYPES_FOR_CREATION = ();
Attribuer une politique de fonction au niveau du compte¶
Les consommateurs peuvent appliquer une politique de fonction au niveau du compte à l’aide de la commande ALTER ACCOUNT, comme le montre l’exemple suivant :
ALTER ACCOUNT
SET FEATURE POLICY feature_policy_db.sch.block_create_db_policy
FOR ALL APPLICATIONS;
Cette commande permet d’appliquer la politique block_create_db_policy
à toute application installée sur le compte. Après avoir appliqué cette politique, les applications ne peuvent plus créer de bases de données.
Appliquer une politique de fonction à une application¶
Pour appliquer une politique de fonction lors de la création manuelle d’une application, utilisez la clause WITH FEATURE POLICY de la commande CREATE APPLICATION, comme le montre l’exemple suivant :
CREATE APPLICATION hello_snowflake_app
WITH FEATURE POLICY = feature_policy_db.block_create_db_policy;
Pour appliquer une politique de fonction à une application, utilisez la commande ALTER APPLICATION, comme indiqué dans l’exemple suivant :
ALTER APPLICATION hello_snowflake_app
SET FEATURE POLICY feature_policy_db.block_create_db_policy;
Annuler une politique de fonction¶
Pour annuler une politique de fonction au niveau du compte, utilisez la commande ALTER ACCOUNT, comme indiqué dans l’exemple suivant :
ALTER ACCOUNT UNSET FEATURE POLICY FOR ALL APPLICATIONS;
Pour annuler une politique de fonction pour une application spécifique, utilisez la commande ALTER APPLICATION, comme indiqué dans l’exemple suivant :
ALTER APPLICATION FEATURE_POLICY_TEST_APP UNSET FEATURE POLICY;
Supprimer une politique de fonction¶
Pour supprimer une politique de fonction, utilisez la commande DROP FEATURE POLICY, comme indiqué dans l’exemple suivant :
DROP FEATURE POLICY block_create_db_policy;
Afficher les informations sur les politiques de fonctions¶
Pour afficher les politiques de fonctions d’un compte pour lequel vous disposez de privilèges d’accès, utilisez la commande SHOW FEATURE POLICIES :
SHOW FEATURE POLICIES ON ACCOUNT;
Pour afficher les politiques de fonctions appliquées à une application, utilisez la commande suivante :
SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
Pour obtenir des informations sur une politique de fonctions spécifique, utilisez la commande DESCRIBE FEATURE POLICY, comme indiqué dans l’exemple suivant :
DESCRIBE FEATURE POLICY feature_policy_db.block_create_db_policy;