ダイナミックデータマスキングについて¶
このトピックでは、ダイナミックデータマスキング機能の概要について説明します。
タグでマスキングポリシーを使用する方法の詳細については、 タグベースのマスキングポリシー をご参照ください。
ダイナミックデータマスキングとは¶
ダイナミックデータマスキングは、マスキングポリシーを使用してクエリ時にテーブルとビューの列のプレーンテキストデータを選択的にマスクする、列レベルのセキュリティ機能です。
Snowflakeでは、マスキングポリシーはスキーマレベルのオブジェクトです。つまり、マスキングポリシーを列に適用する前に、Snowflakeにデータベースとスキーマが存在している必要があります。現在、Snowflakeは、テーブルとビューでの動的データマスキングの使用をサポートしています。
クエリの実行時に、マスキングポリシーは、列が表示されるすべての場所で列に適用されます。マスキングポリシーの条件、 SQL 実行コンテキスト、およびロール階層に応じて、Snowflakeクエリオペレーターは、プレーンテキスト値、部分的にマスクされた値、または完全にマスクされた値を表示する場合があります。
クエリ実行時の動作、ポリシーの作成、テーブルとビューでの使用、マスキングポリシーを使用した管理アプローチなど、マスキングポリシーの仕組みの詳細については、 列レベルのセキュリティについて をご参照ください。
SQL 実行コンテキストとロール階層の影響の詳細については、 高度な列レベルセキュリティのトピック をご参照ください。
ダイナミックデータマスキングの利点¶
以下は、ダイナミックデータマスキングの主な利点のいくつかをまとめたものです。
- 使いやすさ:
ポリシーを1回記述して、データベースやスキーマ全体の数千の列に適用することができます。
- データ管理と SoD:
セキュリティまたはプライバシー担当者は、オブジェクト所有者ではなく、保護する列を決定します。マスキングポリシーは管理が容易であり、集中管理モデルと分散管理モデルをサポートします。
- データの認証とガバナンス:
ロールまたはカスタム資格によるコンテキストデータアクセス。
セキュリティまたはプライバシー担当者が実装するデータガバナンスをサポートし、 ACCOUNTADMIN または SECURITYADMIN のロールを持つ権限ユーザーがデータを不必要に表示することを禁止できます。
- データ共有:
共有する前にデータを簡単にマスクします。
- 変更管理:
何千もの列にマスキングポリシーを再適用する必要なく、マスキングポリシーの内容を簡単に変更できます。
動的データマスキングと外部トークン化の利点の比較については、 列レベルのセキュリティの利点 をご参照ください。
ダイナミックデータマスキングの制限¶
制限の概要については、 列レベルのセキュリティ制限 をご参照ください。
ダイナミックデータマスキングの考慮事項¶
追加のダイナミックデータマスキングに関する考慮事項については、 列レベルのセキュリティに関する考慮事項 をご参照ください。
ダイナミックデータマスキングの権限¶
次のテーブルは、ダイナミックデータマスキングに関連する権限をまとめたものです。
権限 |
使用法 |
---|---|
CREATE |
スキーマで、新しいマスキングポリシーを作成できるようにします。 |
APPLY |
列の マスキングポリシー に対する設定解除および設定の操作を実行できるようにします。 APPLY MASKING POLICY グローバル権限(つまり、 ACCOUNT の APPLY MASKING POLICY)を付与すると、テーブルとビューで DESCRIBE 操作を実行できることに注意してください。 構文例については、 マスキングポリシー権限 をご参照ください。 |
OWNERSHIP |
マスキングポリシーに対する包括的な制御を付与します。マスキングポリシーのほとんどのプロパティを変更するために必要です。特定のオブジェクトに対して一度にこの権限を保持できるのは、1つのロールのみです。 |
注釈
マスキングポリシー上で動作するには、親データベースおよび親スキーマでの USAGE 権限も必要です。
ダイナミックデータマスキングDDL¶
Snowflakeは、ダイナミックデータマスキングポリシーを管理するための以下のコマンドセットを提供します。
ダイナミックデータマスキングの監査¶
Snowflakeは、マスキングポリシーに関する情報を取得するために、2つのAccount Usageビューを提供します。
MASKING POLICIES ビューは、Snowflakeアカウント内にあるすべてのマスキングポリシーのリストを提供します。
POLICY_REFERENCES ビューは、マスキングポリシーが設定されているすべてのオブジェクトのリストを提供します。
Information Schemaテーブル関数 POLICY_REFERENCES は、次のいずれかに使用できます。
列でマスキングポリシーが設定されているすべてのオブジェクト(つまり、テーブル、ビュー)のリストを返します。
指定されたオブジェクト名とオブジェクト型を持つポリシー関連付けのリストを返します。
Snowflakeは、ユーザーが実行した元のクエリを 履歴ページ (ウェブインターフェイス内)に記録します。クエリは SQL Text 列にあります。
特定のクエリで使用されたマスキングポリシー名は、 クエリプロファイル にあります。
現在、クエリ履歴はAccount Usage QUERY_HISTORY ビューのみに固有です。このビューの Query Text 列には、 SQL ステートメントのテキストが含まれています。マスキングポリシー名は、 QUERY_HISTORY ビューに含まれていません。
ダイナミックデータマスキングのトラブルシューティング¶
エラーメッセージを使用して、マスキングポリシーの問題のトラブルシューティングに役立てることができます。
エラーメッセージ¶
次のテーブルは、マスキングポリシーの使用中にSnowflakeが返す可能性があるエラーメッセージを示しています。
動作 |
エラーメッセージ |
トラブルシューティングアクション |
---|---|---|
Snowflake機能にマスキングポリシーを適用できない。 |
サポート対象外機能 |
現在、マスキングポリシーはこの機能には適用されません。 |
アクティブなロールが、マスキングポリシーを作成または置き換えることができない。 |
SQLアクセス制御エラー: アカウント <アカウント名> を操作するには権限が不十分です |
|
特定のロールが、マスキングポリシーをテーブルに添付できない。 |
SQLコンパイルエラー: データベース <データベース名> が存在しないか、権限がありません。 |
|
テーブルのマスキングポリシーを所有していない特定のロールが、使用できるテーブルにマスキングポリシーを適用しようとする。 |
SQLコンパイルエラー: マスキングポリシー <ポリシー名> が存在しないか、権限がありません。 |
|
|
SQL コンパイルエラー: ポリシー <ポリシー名> は1つ以上のエンティティに関連付けられているため、ドロップまたは置き換えができません。 |
ALTER TABLE ... MODIFY COLUMN または ALTER VIEW ... MODIFY COLUMN ステートメントを使用して、最初にポリシーを UNSET し、次に DROP ステートメントを再試行します。 |
ドロップされたテーブルを復元すると、マスキングポリシーエラーが発生する。 |
SQL実行エラー: 列 <列名> は、存在しないマスキングポリシーにすでに添付されています。ポリシー管理者に連絡してください。 |
ALTER テーブル/ビュー MODIFY COLUMN ステートメントで、現在添付されているマスキングポリシーの設定を解除し、 CREATE OR REPLACE ステートメントでマスキングポリシーを列に再適用します。 |
マスキングポリシーを特定の列に適用することはできないが、別の列には適用できる。 |
指定された列は、既に別のマスキングポリシーに添付されています。列は、複数のマスキングポリシーに添付できません。新しいマスキングポリシーを添付するために、現在の関連付けを削除してください。 |
列に適用するマスキングポリシーを決定し、更新し、再試行します。 |
ALTER ステートメントを使用したポリシーの更新が失敗する。 |
SQLコンパイルエラー: マスキングポリシー <ポリシー名> が存在しないか、権限がありません。 |
|
クローンされたテーブルを所有するロールが、マスキングポリシーの設定を解除できない。 |
SQLアクセス制御エラー: ALTER TABLE UNSET MASKING POLICY「<ポリシー名>」を操作するには権限が不十分です |
|
IF EXISTS を使用してポリシーを更新すると、正常な結果が返されるが、ポリシーが更新されない。 |
エラーメッセージは返されません。Snowflakeは正常に実行されたステートメントを返します。 |
IF EXISTS を ALTER ステートメントから削除して、再試行してください。 |
マスキングポリシーを作成するか、または CASE と置き換えているとき、データ型が一致しない(例:(VAL 文字列) -> が数値を返す)。 |
SQLコンパイルエラー: マスキングポリシー関数の引数と戻り値の型が一致しません。 |
CREATE OR REPLACEステートメントまたはALTER MASKING POLICYステートメントでCASEを使用してデータ型を一致させ、マスキングポリシーを更新します。 |
仮想列にマスキングポリシーを適用する。 |
SQLコンパイルエラー: マスキングポリシーをVIRTUAL_COLUMN列に添付できません。 |
ソーステーブルの列にマスキングポリシーを適用します。 |
マテリアライズドビューにマスキングポリシーを適用する。 |
SQLコンパイルエラー: <数字> 行のポジション <数字> で構文エラー、予期しない「変更」があります。 . SQLコンパイルエラー: エラー行 <数字> のポジション <数字> に無効な識別子「<文字>」があります。 . SQL実行エラー: テーブルに1つ以上のマテリアライズドビューがあります。mvsの数=<数>、テーブル名=<テーブル名>。 |
ソーステーブルの列にマスキングポリシーを適用します。詳細については、 制限事項 をご参照ください。 |
マテリアライズドビューの作成に使用されるテーブル列にマスキングポリシーを適用する。 |
SQL コンパイルエラー: マスキングポリシーは MATERIALIZED_VIEW 列に添付できません。 |
マスキングポリシーをテーブル列に適用するには、マテリアライズドビューをドロップします。 |
マテリアライズドビューの作成中にマスクされた列を含める。 |
サポート対象外機能「CREATE ON MASKING POLICY COLUMN」。 |
マスクされた列を含めずにマテリアライズドビューを作成してから、 または ベーステーブルかビューにマスキングポリシーを設定せずに、マテリアライズドビューを作成してから、マテリアライズドビューの列にマスキングポリシーを適用します。 |
マスキングポリシー本体にユーザー定義関数(UDF)を使用してマスキングポリシーを作成できない。 |
SQLアクセス制御エラー: 関数「<udf名>」を操作するには権限が不十分です |
マスキングポリシーを作成するロールに、UDFに対するUSAGE権限があることを確認します。 |
次のトピック: