外部トークン化について¶
このトピックでは、外部トークン化機能の概要について説明します。
重要
外部トークン化には、Snowflake Standard Edition に含まれている 外部関数 が必要です。また、トークン化プロバイダー(つまり、Protegrity)で外部関数を使用できます。
ただし、トークン化プロバイダーをSnowflake 外部トークン化 に 統合することを選択した場合は、 Enterprise Edition またはそれ以上にアップグレードする必要があります。
アップグレードについては、 Snowflakeサポート にお問い合わせください。
外部トークン化とは¶
外部トークン化により、アカウントはデータをSnowflakeにロードする前にトークン化し、クエリ実行時にデータをトークン解除できます。トークン化とは、機密データを解読不能なトークンに置き換えて機密データを削除するプロセスです。外部トークン化は、 外部関数 でマスキングポリシーを利用します。
Snowflakeでは、マスキングポリシーはスキーマレベルのオブジェクトです。つまり、マスキングポリシーを列に適用する前に、Snowflakeにデータベースとスキーマが存在している必要があります。現在、Snowflakeは、テーブルとビューでの動的データマスキングの使用をサポートしています。
クエリの実行時に、マスキングポリシーは、列が表示されるすべての場所で列に適用されます。マスキングポリシーの条件、 SQL 実行コンテキスト、およびロール階層に応じて、Snowflakeクエリオペレーターは、プレーンテキスト値、部分的にマスクされた値、または完全にマスクされた値を表示する場合があります。
クエリ実行時の動作、ポリシーの作成、テーブルとビューでの使用、マスキングポリシーを使用した管理アプローチなど、マスキングポリシーの仕組みの詳細については、 列レベルのセキュリティについて をご参照ください。
SQL 実行コンテキストとロール階層の影響の詳細については、 高度な列レベルのセキュリティトピック をご参照ください。
Snowflakeにロードする前にデータをトークン化することで、機密データが不必要に公開されることがなくなります。外部関数でマスキングポリシーを使用すると、クエリの実行時に適切な対象者だけがトークン化されていないデータを表示できるようになります。
現在、Snowflakeは、Protegrityを使用して、組織内のすべてのデータストア(テーブル、データベース、データウェアハウスなど)の機密データのトークン化を管理することをサポートしています。Snowflakeがマスキングポリシーで外部関数を呼び出すと、 REST API 呼び出しが Protegrity Data Security Gateway (DSG)に対して行われます。
外部関数はSnowflakeでは実行されないため、ご使用の環境でAmazon API Gatewayを有効にし、Snowflakeとそのデータをトークン化するサーバーの間に REST API 統合を作成する必要があります。クエリの実行時に、外部関数を使用したマスキングポリシーが適用される1つ以上の列をクエリが呼び出す場合、Protegrityは列データをトークン化解除してSnowflakeに送り返します。マスキングポリシーにより、指定されたロールのメンバーであるユーザーのみが非トークン化データを表示できるようになります。
外部トークン化の利点¶
以下は、外部トークン化の主な利点のいくつかをまとめたものです。
- トークン化されたデータのプリロード
トークン化プロバイダーを使用して、トークン化されたデータがSnowflakeにプリロードされます。したがって、テーブルまたはビューの列にマスキングポリシーを適用しなくても、実際のデータ値は表示されません。これにより、組織内で最も機密性の高いデータに対するデータセキュリティが強化されます。
- 使いやすさ
ポリシーを1回記述して、データベースやスキーマ全体の数千の列に適用することができます。
- データ管理と SoD
セキュリティまたはプライバシー担当者は、オブジェクト所有者ではなく、保護する列を決定します。マスキングポリシーは管理が容易であり、集中管理モデルと分散管理モデルをサポートします。
- データの認証とガバナンス
ロールまたはカスタム資格によるコンテキストデータアクセス。
セキュリティまたはプライバシー担当者が実装するデータガバナンスをサポートし、 ACCOUNTADMIN または SECURITYADMIN のロールを持つ権限ユーザーがデータを不必要に表示することを禁止できます。
- 変更管理
何千もの列にマスキングポリシーを再適用する必要なく、マスキングポリシーの内容を簡単に変更できます。
動的データマスキングと外部トークン化の利点の比較については、 列レベルのセキュリティの利点 をご参照ください。
外部トークン化の制限¶
制限の概要については、 列レベルのセキュリティ制限 をご参照ください。
外部トークン化の考慮事項¶
追加の外部トークン化の考慮事項については、 列レベルのセキュリティの考慮事項 をご参照ください。
外部トークン化の権限と依存関係¶
次のテーブルは、外部トークン化マスキングポリシーに関連する権限をまとめたものです。
権限 |
使用法 |
---|---|
APPLY |
マスキングポリシーのポリシー設定/設定解除操作の適用を有効にします。 |
OWNERSHIP |
マスキングポリシーの完全な制御を許可するマスキングポリシーの所有権を譲渡します。マスキングポリシーのほとんどのプロパティを変更するために必要です。 |
注釈
マスキングポリシー上で動作するには、親データベースとスキーマでの USAGE 権限も必要です。
外部トークン化マスキングポリシーには API 統合に依存する外部関数が必要であるため、次のテーブルに、Snowflakeオブジェクトに対するカスタムロール(例: MASKING_ADMIN)が持つ必要のある権限をまとめます。これらの権限はカスタムロールのみに適用され、マスキングポリシーで列をクエリするユーザーのロールには必要ないことに注意してください。
カスタムロール |
権限 |
オブジェクト |
---|---|---|
外部トークン化ポリシーの所有者 |
USAGE |
外部関数 |
外部関数の所有者(つまり、外部関数に対する OWNERSHIP 権限を持つロール) |
USAGE |
外部関数によって参照されるすべての API 統合オブジェクト。 |
外部トークン化 DDL¶
Snowflakeは、外部トークン化ポリシーを管理するための以下のコマンドセットを提供します。
外部トークン化の監査¶
Snowflakeは、マスキングポリシーに固有の2つのAccount Usageビューを提供します。
MASKING_POLICIES は、Snowflakeアカウント内にあるすべてのマスキングポリシーのリストを提供します。
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列に添付できません。 |
マスキングポリシーをテーブル列に適用するには、マテリアライズドビューをドロップします。 |
マスキングポリシー本体にユーザー定義関数(UDF)を使用してマスキングポリシーを作成できない。 |
SQLアクセス制御エラー: 関数「<udf名>」を操作するには権限が不十分です |
マスキングポリシーを作成するロールに、UDFに対するUSAGE権限があることを確認します。 |
次のトピック: