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

Si l’application est configurée pour utiliser ces privilèges, un consommateur ne peut pas révoquer directement ces privilèges après l’installation de l’application. Toutefois, les administrateurs des consommateurs peuvent utiliser des politiques de fonctionnalités pour limiter les objets qu’une application peut créer dans le compte de consommateur.

Par exemple, si un consommateur ne souhaite pas qu’une application crée des entrepôts ou des pools de calcul, un administrateur de compte de consommateur peut créer une politique de fonctionnalités qui interdit à une application en particulier 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 externe ne peuvent pas être bloquées à l’aide de politiques de fonctionnalités. Au lieu de cela, les consommateurs peuvent choisir d’approuver ou de refuser les points de terminaison d’une application en utilisant les spécifications d’application.

Workflow

Le workflow général pour l’utilisation de politiques de fonctionnalités 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.

Considérations relatives à la réplication lors de l’utilisation de politiques de fonctionnalités

Les références aux politiques de fonctionnalités au niveau du compte sont répliquées au moment de spécifier la base de données contenant la politique, par exemple en définissant ALLOWED_DATABASES = policy_db dans un groupe de réplication ou un groupe de basculement.

Si le compte a déjà été répliqué vers un compte cible, un administrateur de compte de consommateur doit procéder comme suit :

  1. Mettez à jour le groupe de réplication ou le groupe de basculement dans le compte source pour inclure les bases de données et les types d’objets nécessaires à la réplication réussie de la politique de fonctionnalités.

  2. Exécutez ensuite une opération d’actualisation pour mettre à jour le compte cible.

Note

La politique de fonctionnalités doit être dans le même compte que la politique au niveau du compte.

Si vous avez défini une politique de fonctionnalités sur le compte et que vous ne mettez pas à jour le groupe de réplication ou le groupe de basculement pour inclure la politique_db contenant la politique, cela crée une référence pendante dans le compte cible. Cela signifie que Snowflake ne peut pas localiser la politique dans le compte cible, car le nom entièrement qualifié de la politique pointe vers la base de données dans le compte source. Ainsi, le compte cible ou les utilisateurs du compte cible ne sont pas tenus de respecter la politique de fonctionnalités.

Pour répliquer avec succès une politique de sécurité, vérifiez que le groupe de réplication ou le groupe de basculement comprend les types d’objets et les bases de données nécessaires pour éviter une référence pendante.

Pour plus d’informations, voir Remarques relatives à la réplication.

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 fonctionnalités 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