動作変更の管理

このドキュメントでは、特定の動作変更バンドルが、アカウントで有効になっているかどうかを確認する方法と、それを有効または無効にする方法について説明します。

このトピックの内容:

概要

Snowflakeは、定期的にスケジュールされた リリース に含まれるバンドルで動作の変更を毎月実装します。各動作変更バンドルのテスト期間およびオプトアウト期間中に、アカウントでバンドルを有効または無効にできます。このドキュメントでは、特定のバンドルがアカウントで有効になっているかどうかを確認する方法と、それを有効または無効にする方法について説明します。

このドキュメントでは、 bundle_name動作変更ログ にある YYYY_NN 形式の動作変更バンドルの名前です。

注釈

バンドルの動作変更を個別に有効/無効にすることはできません。動作の変更を有効または無効にするには、変更を含むバンドルを有効または無効にする必要があります。

アカウントにおける動作変更バンドルのステータスの確認

アカウントで特定の動作変更バンドルが有効になっているかどうかを確認するには、 bundle_name を引数として SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS 関数を使用します。

SELECT SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2021_02');

+-------------------------------------------------+
| SYSTEM$BEHAVIOR_CHANGE_BUNDLE_STATUS('2021_02') |
|-------------------------------------------------|
| DISABLED                                        |
+-------------------------------------------------+
Copy

アカウントでの行動変更バンドルの有効化

アカウントで特定の動作の変更を有効にするには、 SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE 関数を使用して、変更を含む bundle_name を指定します。

SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02');

+-------------------------------------------------+
| SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02') |
|-------------------------------------------------|
| ENABLED                                         |
+-------------------------------------------------+
Copy

アカウントでの行動変更バンドルの無効化

アカウントの特定の動作変更を無効にするには、 SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE 関数を使用して、変更を含む bundle_name を指定します。

SELECT SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02');

+-------------------------------------------------+
| SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02')|
|-------------------------------------------------|
| DISABLED                                        |
+-------------------------------------------------+
Copy

マスキングポリシーの戻り値更新の軽減

将来の動作変更リリースバンドルでは、Snowflakeは、マスキングポリシー条件の長さ、精度、およびスケールの値を返す予定です(総称して「戻り値の更新」)。これらの戻り値が更新されると、マスキングポリシーで保護された列に対するクエリは、以下の場合に失敗します。

  • バンドルが有効になっている。

  • マスキングポリシーの条件が、マスキングポリシーに割り当てられている列の長さ、スケール、または精度よりも 大きい 長さ、スケール、または精度を持つ値を返す。例:

    ポリシーを作成する:

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

    ポリシーを割り当てる:

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

    列をクエリする(失敗):

    SELECT * FROM t;
    
    Copy

この変更の影響を判断し、マスキングポリシー条件を更新してデータを保護するための十分な時間を確保するには、 SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT ビューにクエリを実行して、将来の戻り値の更新がアカウントにどのように影響するかを把握します。

BCR_2022_07_DDM_ROLLOUT ビューは仮のものです。Snowflakeは、動作変更バンドル内の戻り値の更新が 一般で有効 になると、ビューを削除します。この時点で、ビューをクエリして、影響を受ける列とポリシーを特定したり、戻り値の更新による列クエリやマスキングポリシーの割り当て操作の失敗を防いだりすることはできません。

マスキングポリシーおよび列の関連付けの識別

ビューをクエリして、今後の戻り値の変更を軽減するには、次を実行します。

  1. SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT ビューをクエリします。例:

    USE ROLE ACCOUNTADMIN;
    
    SELECT * FROM SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT;
    
    Copy
  2. BCR_2022_07_DDM_ROLLOUT ビュー参照 セクションの REASON 列を評価して、マスキングポリシーの条件に対してどのような更新が必要かを判断します。

  3. マスキングポリシーの条件を ALTER MASKING POLICY ステートメントで更新して、列データが保護されたままになり、ポリシーの割り当て操作または保護された列のクエリが失敗しないようにします。

  4. マスキングポリシーが割り当てられているテーブル列をクエリして、新しいポリシー条件をテストします。

BCR_2022_07_DDM_ROLLOUT ビュー参照

BCR_2022_07_DDM_ROLLOUT ビュー(SNOWFLAKE.BCR_ROLLOUT スキーマ内)は、2022年7月15日以降の情報を記録し、次の列を含みます。

データ型

説明

POLICY_NAME

TEXT

ポリシーの名前。

POLICY_ID

NUMBER

ポリシーの内部/システム生成識別子。

POLICY_SCHEMA

TEXT

ポリシーの親スキーマ。

POLICY_DATABASE

TEXT

ポリシーの親データベース。

POLICY_BODY

TEXT

列データをマスクまたはマスク解除するポリシーの条件。

COLUMN_NAME

TEXT

ポリシーを持つ列の名前。

TABLE_NAME

TEXT

テーブルの名前。

TABLE_ID

NUMBER

テーブルの内部/システム生成識別子。

TABLE_SCHEMA

TEXT

テーブルの親スキーマ。

TABLE_DATABASE

TEXT

テーブルの親データベース。

REASON

TEXT

考えられる不一致の理由。

REASON 列には、次のテーブルの REASON_MESSAGE 列で指定されている次の値のいずれかを指定できます。以下のテーブルにある追加の列は、管理者が REASON 列を解釈してマスキングポリシー条件を更新する方法を決定するのに役立ちます。

理由メッセージ

原因

アクション

POLICY_ASSOCIATION_ON_NOT_NULL_COLUMN

NOT NULL 列にマスキングポリシーが割り当てられています。

マスキングポリシー条件が、ポリシー条件のどこにも NULL 値を返さないことを確認します。

LENGTH_MISMATCH

データ型が VARCHAR または BINARY の列に割り当てられたマスキングポリシーが、列の長さよりも長いデータを返します。

マスキングポリシー条件を変更して、戻り値の長さが列の長さ以下になるようにします。

PRECISION_MISMATCH

データ型が NUMBER の列に割り当てられたマスキングポリシーが、列の精度よりも高い精度のデータを返します。

ポリシー条件を変更して、戻り値の精度が列の精度以下になるようにします。

SCALE_MISMATCH

データ型が NUMBER または TIMESTAMP の列に割り当てられたポリシーが、列のスケールより大きいスケールのデータを返します。

ポリシー条件を変更して、戻り値のスケールが列のスケール以下になるようにします。

Unknown mismatch.Manual investigation recommended.

マスキングポリシーが NULL 値を返すか、マスキングポリシーの条件にサブクエリが含まれています。

戻り値が列の長さ、精度、またはスケール以下になるようにポリシーを変更します。