Catégories :

Table, vue et séquence DDL

ALTER MASKING POLICY

Remplace les règles de politique de masquage existantes par de nouvelles règles ou un nouveau commentaire et permet de renommer une politique de masquage.

Toutes les modifications apportées aux règles de politiques entrent en vigueur lors de l’exécution de la prochaine requête SQL qui utilise la politique de masquage.

Voir aussi :

CREATE MASKING POLICY , DROP MASKING POLICY , SHOW MASKING POLICIES , DESCRIBE MASKING POLICY

Syntaxe

ALTER MASKING POLICY [ IF EXISTS ] <name> SET BODY -> <expression_on_arg_name>

ALTER MASKING POLICY [ IF EXISTS ] <name> RENAME TO <new_name>

ALTER MASKING POLICY [ IF EXISTS ] <NAME> SET COMMENT = '<string_literal>'

Paramètres

nom

Identificateur de la politique de masquage ; doit être unique dans le schéma parent de la politique.

La valeur de l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

expression_sur_nom_argument

Expression SQL qui transforme les données.

L’expression peut inclure Fonctions d’expressions conditionnelles pour représenter la logique conditionnelle, les fonctions intégrées ou les UDFs pour transformer les données.

Si une fonction UDF ou externe est utilisée dans le corps de la politique de masquage, le propriétaire de la politique doit avoir le privilège USAGE sur l’UDF ou la fonction externe. Les utilisateurs interrogeant une colonne à laquelle une politique de masquage est appliquée n’ont pas besoin d’avoir le privilège USAGE sur l’UDF ou sur la fonction externe.

Si une fonction UDF ou externe est utilisée dans le corps de la politique de masquage conditionnelle, le propriétaire de la politique doit avoir le privilège OWNERSHIP sur l’UDF ou la fonction externe. Les utilisateurs interrogeant une colonne à laquelle une politique de masquage conditionnelle est appliquée n’ont pas besoin d’avoir le privilège USAGE sur l’UDF ou sur la fonction externe.

RENAME TO nouveau_nom

Spécifie le nouvel identificateur de la politique de masquage ; doit être unique pour votre schéma. Le nouvel identificateur ne peut pas être utilisé si l’identificateur est déjà en place pour une politique de masquage différente.

Pour plus de détails, voir Exigences relatives à l’identificateur.

COMMENT = 'littéral_chaine'

Ajoute un commentaire ou écrase le commentaire existant pour la politique de masquage.

Par défaut : aucune valeur

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

OWNERSHIP

Politique de masquage

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Contrôle d’accès dans Snowflake.

Pour plus de détails sur la DDL de politique de masquage et les privilèges, voir Gestion de la sécurité au niveau des colonnes.

Notes sur l’utilisation

  • Si vous souhaitez mettre à jour une politique de masquage existante et si vous avez besoin de voir la définition actuelle de cette politique, appelez la fonction GET_DDL ou exécutez la commande DESCRIBE MASKING POLICY.

  • Vous ne pouvez pas modifier la signature de la politique (par exemple, le nom de l’argument ou le type de données d’entrée/de sortie). Si vous devez modifier la signature, exécutez une instruction DROP MASKING POLICY sur la politique et créez-en une nouvelle.

  • Avant d’exécuter une instruction ALTER, vous pouvez exécuter une instruction DESCRIBE MASKING POLICY pour déterminer le nom d’argument à utiliser pour mettre à jour la politique.

  • Pour les politiques de masquage qui incluent une sous-requête dans le corps de la politique de masquage, utilisez EXISTS dans la clause WHEN. Pour un exemple représentatif, consultez l’exemple de table de droits personnalisée dans la section Exemples de CREATE MASKING POLICY.

  • Le déplacement d’une politique de masquage vers un schéma d’accès géré (utilisant la syntaxe ALTER MASKINGPOLICY … RENAME TO) est interdit sauf si le propriétaire de la politique de masquage (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur la politique de masquage) est également propriétaire du schéma cible.

  • L’ajout d’une politique de masquage à une colonne échoue si la colonne est référencée par une politique d’accès aux lignes. Pour plus d’informations, voir ALTER ROW ACCESS POLICY.

  • Si vous utilisez une UDF dans une politique de masquage, assurez-vous que le type de données de la colonne, l’UDF, et la politique de masquage correspondent. Pour plus d’informations, voir Fonctions définies par l’utilisateur dans une politique de masquage.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Exemples

L’exemple suivant met à jour la politique de masquage permettant d’utiliser un hachage SHA-512. Les utilisateurs sans le rôle ANALYST voient la valeur comme un hachage SHA-512, tandis que les utilisateurs avec le rôle ANALYST voient la valeur en texte brut.

DESCRIBE MASKING POLICY email_mask;

-- evaluate output

+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
| Row | name       | signature     | return_type       | body                                                                  |
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+
| 1   | EMAIL_MASK | (VAL VARCHAR) | VARCHAR(16777216) | case when current_role() in ('ANALYST') then val else '*********' end |
+-----+------------+---------------+-------------------+-----------------------------------------------------------------------+

ALTER MASKING POLICY email_mask SET BODY ->
  CASE
    WHEN current_role() IN ('ANALYST') THEN VAL
    ELSE sha2(val, 512)
  END;
Revenir au début