Gestion des changements de comportement

Ce document explique comment vérifier si un bundle de changements de comportement spécifique est activé dans votre compte et comment l’activer ou le désactiver.

Vue d’ensemble

Snowflake met en œuvre des changements de comportement tous les mois dans des bundles inclus dans des versions planifiées régulièrement. Au cours de la période d’essai et de la période d’exclusion de chaque bundle de changement de comportement, vous pouvez activer ou désactiver le bundle dans votre compte. Ce document explique comment vérifier si un bundle particulier est activé dans votre compte et comment l’activer ou le désactiver.

Dans ce document, le nom du bundle de changements de comportement se présente sous la forme YYYY_NN. Pour les noms des bundles de changements de comportement actuellement disponibles, voir Journal des modifications de comportement.

Note

Les changements de comportement dans les bundles ne peuvent pas être activés/désactivés individuellement. Pour activer/désactiver une modification de comportement, vous devez activer/désactiver le bundle contenant la modification.

Vérifier le statut d’un bundle de changement de comportement sur votre compte

Pour vérifier si un bundle de changements de comportement spécifique est activé sur votre compte, appelez la fonction SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS. Par exemple, pour vérifier le statut du bundle nommé 2024_02 :

SELECT SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2024_02');
Copy
+-------------------------------------------------+
| SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2024_02') |
|-------------------------------------------------|
| DISABLED                                        |
+-------------------------------------------------+

Pour vérifier le statut de tous les bundle de changements de comportement actuellement disponibles, appelez la fonction SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES :

SELECT SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES();
Copy
+--------------------------------------------------------------------------------------------------------------+
| SYSTEM$SHOW_ACTIVE_BEHAVIOR_CHANGE_BUNDLES()                                                                 |
|--------------------------------------------------------------------------------------------------------------|
| [{"name":"2023_08","isDefault":true,"isEnabled":true},{"name":"2024_01","isDefault":false,"isEnabled":true}] |
+--------------------------------------------------------------------------------------------------------------+

Activation d’un bundle de changements de comportement dans votre compte

Pour activer un changement de comportement particulier dans votre compte, appelez la fonction SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE. Par exemple, pour activer le bundle nommé 2024_02 :

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Copy
+-------------------------------------------------+
| SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02') |
|-------------------------------------------------|
| ENABLED                                         |
+-------------------------------------------------+

Désactiver un bundle de changement de comportement dans votre compte

Pour désactiver un changement de comportement particulier dans votre compte, appelez le SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE. Par exemple, pour désactiver le bundle nommé 2024_02 :

SELECT SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02');
Copy
+-------------------------------------------------+
| SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2024_02')|
|-------------------------------------------------|
| DISABLED                                        |
+-------------------------------------------------+

Déterminer la version actuelle de votre compte

Pour vérifier la version actuelle de Snowflake qui se trouve dans votre compte, appelez la fonction CURRENT_VERSION. Par exemple :

SELECT CURRENT_VERSION();
Copy
+-------------------+
| CURRENT_VERSION() |
|-------------------|
| 8.5.1             |
+-------------------+
Copy

Atténuation des mises à jour des valeurs de retour des politiques de masquage

Dans une futur bundle de changements de comportement, Snowflake prévoit de renvoyer des valeurs pour la longueur, la précision et l’échelle dans les conditions de la politique de masquage (collectivement : « mises à jour des valeurs de retour »). Lorsque ces mises à jour des valeurs de retour sont effectuées, une requête sur une colonne protégée par une politique de masquage échoue lorsque les conditions suivantes sont réunies :

  • La bundle est activé.

  • Les conditions de la politique de masquage renvoient une valeur dont la longueur, l’échelle ou la précision est supérieure à la longueur, l’échelle ou la précision de la colonne à laquelle la politique de masquage est affectée. Par exemple :

    Créer une politique :

    CREATE MASKING POLICY MP AS (s string)
    RETURNS STRING -> 'abcdef';
    
    Copy

    Assigner la politique :

    CREATE TABLE t(col1 string(2));
    
    ALTER TABLE t MODIFY COLUMN col1 SET MASKING POLICY mp;
    
    Copy

    Interroger la colonne (échoue) :

    SELECT * FROM t;
    
    Copy

Pour déterminer l’impact de ce changement et disposer de suffisamment de temps pour mettre à jour les conditions de la politique de masquage afin de protéger les données, interrogez la vue SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT pour comprendre comment les futures mises à jour de la valeur de retour affectent votre compte.

La vue BCR_2022_07_DDM_ROLLOUT est temporaire. Snowflake supprimera la vue lorsque les mises à jour des valeurs de retour seront activées de manière générale dans un futur bundle de changements de comportement. À ce stade, vous ne pourrez pas interroger la vue pour déterminer les colonnes et les politiques affectées, ni éviter les échecs des opérations d’interrogation des colonnes ou d’affectation des politiques de masquage en raison des mises à jour des valeurs de retour.

La vue enregistre les données à partir de juillet 2022. Si une requête sur la vue prend beaucoup de temps, vous pouvez spécifier les variables de session de date de début et de date de fin à l’aide d’une commande SET. Ces variables permettent de réduire le nombre de lignes à évaluer lorsque vous interrogez la vue. Par exemple :

SET START_DATE = '2023-02-28';
SET END_DATE = '2023-11-30';
Copy

Politique de masquage d’identification et associations de colonnes

Pour interroger la vue et atténuer les changements de valeur de retour à venir, procédez comme suit :

  1. Interrogez la vue SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT. Par exemple :

    USE ROLE ACCOUNTADMIN;
    SET START_DATE = '2023-02-28';
    SET END_DATE = '2023-11-30';
    SELECT * FROM SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT;
    
    Copy
  2. Évaluez la colonne REASON de la section BCR_2022_07_DDM_ROLLOUT Afficher référence pour déterminer la mise à jour à apporter aux conditions de la politique de masquage.

  3. Mettez à jour les conditions de la politique de masquage avec une instruction ALTER MASKING POLICY pour que les données de la colonne restent protégées et que les opérations d’affectation de la politique ou les requêtes sur les colonnes protégées n’échouent pas.

  4. Testez les nouvelles conditions de la politique en interrogeant les colonnes de la table auxquelles sont attribuées les politiques de masquage.

BCR_2022_07_DDM_ROLLOUT Afficher référence

La vue BCR_2022_07_DDM_ROLLOUT (dans le schéma SNOWFLAKE.BCR_ROLLOUT) enregistre les informations à partir du 15 juillet 2022 et contient les colonnes suivantes :

Colonne

Type de données

Description

POLICY_NAME

VARCHAR

Nom de la politique.

POLICY_ID

NUMBER

Identificateur interne/généré par le système pour la politique.

POLICY_SCHEMA

VARCHAR

Le schéma parent de la politique.

POLICY_DATABASE

VARCHAR

La base de données parente de la politique.

POLICY_BODY

VARIANT

Les conditions de la politique pour masquer ou démasquer les données de la colonne.

COLUMN_NAME

VARCHAR

Le nom de la colonne qui a la politique.

TABLE_NAME

VARCHAR

Le nom de la table.

TABLE_ID

NUMBER

Identificateur interne/généré par le système pour la table.

TABLE_SCHEMA

VARCHAR

Le schéma parent de la table.

TABLE_DATABASE

VARCHAR

La base de données parente de la table.

REASON

VARCHAR

Raison possible de la disconcordance.

La colonne REASON peut avoir l’une des valeurs suivantes, comme spécifié par la colonne REASON_MESSAGE dans la table suivante. Les colonnes supplémentaires de la table ci-dessous sont destinées à aider les administrateurs à décider comment interpréter la colonne REASON et mettre à jour les conditions de la politique de masquage :

Message concernant le motif

Cause

Action

POLICY_ASSOCIATION_ON_NOT_NULL_COLUMN

Une politique de masquage est attribuée à une colonne NOT NULL.

Vérifiez que les conditions de la politique de masquage ne renvoient pas une valeur NULL n’importe où dans les conditions de la politique.

LENGTH_MISMATCH

Une politique de masquage affectée à une colonne dont le type de données est VARCHAR ou BINARY renvoie des données dont la longueur est supérieure à celle de la colonne.

Modifiez les conditions de la politique de masquage pour vous assurer que la longueur de la valeur de retour est inférieure ou égale à la longueur de la colonne.

PRECISION_MISMATCH

Une politique de masquage affectée à une colonne dont le type de données est NUMBER renvoie une donnée de précision supérieure à la précision de la colonne.

Modifiez les conditions de la politique pour vous assurer que la précision de la valeur de retour est inférieure ou égale à la précision de la colonne.

SCALE_MISMATCH

Une politique affectée à une colonne dont le type de données est NUMBER ou TIMESTAMP renvoie des données dont l’échelle est supérieure à celle de la colonne.

Modifiez les conditions de la politique pour vous assurer que l’échelle de la valeur de retour est inférieure ou égale à l’échelle de la colonne.

Unknown mismatch. Manual investigation recommended.

La politique de masquage renvoie une valeur NULL ou les conditions de la politique de masquage contiennent une sous-requête.

Modifiez la politique pour que la valeur de retour soit inférieure ou égale à la longueur, la précision ou l’échelle de la colonne.