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