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 :

  1. Affichez le listing de l’application pour déterminer les privilèges exigés par l’application.

  2. 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.

  3. 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);
Copy

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 = ();
Copy

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

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

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

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

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

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

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

Pour afficher les politiques de fonctions appliquées à une application, utilisez la commande suivante :

SHOW FEATURE POLICIES ON APPLICATION hello_snowflake_app;
Copy

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