動作変更の管理¶
このドキュメントでは、特定の動作変更バンドルが、アカウントで有効になっているかどうかを確認する方法と、それを有効または無効にする方法について説明します。
このトピックの内容:
概要¶
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 | +-------------------------------------------------+
アカウントでの行動変更バンドルの有効化¶
アカウントで特定の動作の変更を有効にするには、 SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE 関数を使用して、変更を含む bundle_name
を指定します。
SELECT SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02'); +-------------------------------------------------+ | SYSTEM$ENABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02') | |-------------------------------------------------| | ENABLED | +-------------------------------------------------+
アカウントでの行動変更バンドルの無効化¶
アカウントの特定の動作変更を無効にするには、 SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE 関数を使用して、変更を含む bundle_name
を指定します。
SELECT SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02'); +-------------------------------------------------+ | SYSTEM$DISABLE_BEHAVIOR_CHANGE_BUNDLE('2021_02')| |-------------------------------------------------| | DISABLED | +-------------------------------------------------+
マスキングポリシーの戻り値更新の軽減¶
このセクションでは、 NULL の戻り値と、マスキングポリシー条件内の長さ、精度、およびスケールに対する戻り値の更新(まとめて「戻り値の更新」)と、これらの戻り値の更新による影響を軽減するために BCR_2022_07_DDM_ROLLOUT という名前の仮ビュー(SNOWFLAKE.BCR_ROLLOUT スキーマ内)を使用する方法について説明します。
2022_08
動作変更バンドルの テスト期間 中、次に該当するとSnowflakeはクエリに失敗します。
動作変更バンドルが 有効、 かつ
次の場合にマスキングポリシーを使用して列をクエリしたとき。
マスキングポリシー条件が、 NOT NULL の列フィールドに対して NULL を返す。
たとえば、マスキングポリシーは、列のデータ型が INTEGER であるため、整数である必要があるフィールドに対して NULL を返します。
マスキングポリシーの条件が、マスキングポリシーに割り当てられている列の長さ、スケール、または精度よりも 大きい 長さ、スケール、または精度を持つ値を返す。例:
ポリシーを作成する:
create masking policy mp as (s string) returns string -> 'abcdef';
ポリシーを割り当てる:
create table t(col1 string(2)); alter table t modify column col1 set masking policy mp;
列をクエリする(失敗):
select * from t;
この変更の影響を判断し、マスキングポリシー条件を更新してデータを保護するための十分な時間を提供するために、Snowflakeは共有 SNOWFLAKE データベース内に特別なスキーマとビューを提供して、テーブル列、マスキングポリシー、および考えられる理由をマッピングします。マスキングポリシーで保護された列に対するクエリは失敗します。
2023_01
動作変更バンドル(つまり、 2022_08
動作変更バンドルの オプトアウト期間)の公開時に、戻り値の更新がデフォルトで有効になることに注意してください。オプトアウト期間中は、 動作変更バンドルを無効にする オプションを使用して、戻り値の更新の影響をさらに遅らせることができます。
BCR_2022_07_DDM_ROLLOUT ビューは仮のものです。Snowflakeは、 2023_02
動作変更バンドルの公開時に、戻り値の更新が 一般的に有効化される と、ビューを削除します。この時点で、ビューをクエリして、影響を受ける列とポリシーを特定したり、戻り値の更新による列クエリやマスキングポリシーの割り当て操作の失敗を防いだりすることはできなくなります。
動作変更プロセスの詳細については、 動作変更ポリシー をご参照ください。
マスキングポリシーおよび列の関連付けの識別¶
ビューをクエリして、今後の戻り値の変更を軽減するには、次を実行します。
SNOWFLAKE.BCR_ROLLOUT.BCR_2022_07_DDM_ROLLOUT
ビューをクエリします。例:use role accountadmin; select * from snowflake.bcr_rollout.bcr_2022_07_ddm_rollout;
BCR_2022_07_DDM_ROLLOUT ビュー参照 セクションの REASON 列を評価して、マスキングポリシーの条件に対してどのような更新が必要かを判断します。
マスキングポリシーの条件を ALTER MASKING POLICY ステートメントで更新して、列データが保護されたままになり、ポリシーの割り当て操作または保護された列のクエリが失敗しないようにします。
マスキングポリシーが割り当てられているテーブル列をクエリして、新しいポリシー条件をテストします。
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 値を返すか、マスキングポリシーの条件にサブクエリが含まれています。 |
戻り値が列の長さ、精度、またはスケール以下になるようにポリシーを変更します。 |