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 changements 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 changements 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             |
+-------------------+

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

Dans le bundle 2024_04, des modifications ont été apportées aux valeurs de précision et d’échelle dans les conditions de politique de masquage (collectivement : « mises à jour des valeurs de retour »). 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 précision est supérieure à la précision de la colonne à laquelle la politique de masquage est affectée.

Si l’échelle de la valeur de retour est supérieure à l’échelle de la colonne, la valeur est tronquée pour correspondre à l’échelle de la colonne.

Si vous souhaitez appliquer le nouveau comportement à une politique préexistante, créez une nouvelle politique de masquage et remplacez la politique préexistante à l’aide du mot-clé :code:`FORCE <label-security_column_intro_replace_policy>`.

Lorsque le bundle est activé, vous pouvez tester le comportement comme suit :

  1. Créer une politique :

    CREATE MASKING POLICY MP AS (s string)
    RETURNS STRING -> 'abcdef';
    
    Copy
  2. Attribuer la politique :

    CREATE TABLE t(col1 string(2));
    
    ALTER TABLE t MODIFY COLUMN col1 SET MASKING POLICY mp;
    
    Copy
  3. Effectuer une requête sur la colonne (échec) :

    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_2024_03_DDM_ROLLOUT pour comprendre comment les futures mises à jour de la valeur de retour affectent votre compte.

La vue BCR_2024_03_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 mars 2024. 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 DDM_CASTING_BCR_START_DATE = '2024-03-01';
SET DDM_CASTING_BCR_END_DATE = '2024-04-03';
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. Effectuez une requête sur la vue SNOWFLAKE.BCR_ROLLOUT.BCR_2024_03_DDM_ROLLOUT. Par exemple :

    USE ROLE ACCOUNTADMIN;
    SET DDM_CASTING_BCR_START_DATE = '2024-03-01';
    SET DDM_CASTING_BCR_END_DATE = '2024-04-03';
    SELECT * FROM SNOWFLAKE.BCR_ROLLOUT.BCR_2024_03_DDM_ROLLOUT;
    
    Copy
  2. Évaluez la colonne REASON de la section BCR_2024_03_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_2024_03_DDM_ROLLOUT Afficher référence

La vue BCR_2024_03_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.

COLUMN_TYPE

VARCHAR

Le type de données de la colonne.

COLUMN_LENGTH

NUMBER

La longueur de la colonne qui contient la politique ou [NULL] si elle n’est pas définie pour la colonne.

COLUMN_PRECISION

NUMBER

La précision de la colonne qui contient la politique ou [NULL] si elle n’est pas définie pour la colonne.

COLUMN_SCALE

NUMBER

L’échelle de la colonne qui contient la politique ou [NULL] si elle n’est pas définie pour la colonne.

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.

table_kind

VARCHAR

Le type de table. Un des éléments suivants : TABLE, LOCAL TEMPORARY, VIEW, MATERIALIZED VIEW, EXTERNAL TABLE, ou DYNAMIC TABLE.

reason

VARCHAR

Raison possible de la disconcordance. Un des éléments suivants : precision ou scale

LARGEST_MASKED_SIZE

NUMBER

Longueur, échelle ou précision maximales qu’une valeur masquée peut avoir en fonction de la politique de masquage attribuée à la colonne.