外部トークン化について

このトピックでは、外部トークン化機能の概要について説明します。

重要

External tokenization requires 外部関数, which are included in the Snowflake Standard Edition, and you can use external functions with a tokenization provider.

ただし、トークン化プロバイダーをSnowflake 外部トークン化 統合することを選択した場合は、 Enterprise Edition またはそれ以上にアップグレードする必要があります。

アップグレードについては、 Snowflakeサポート にお問い合わせください。

外部トークン化とは

外部トークン化により、アカウントはデータをSnowflakeにロードする前にトークン化し、クエリ実行時にデータをトークン解除できます。トークン化とは、機密データを解読不能なトークンに置き換えて機密データを削除するプロセスです。外部トークン化は、 外部関数 でマスキングポリシーを利用します。

Snowflakeでは、マスキングポリシーはスキーマレベルのオブジェクトです。つまり、マスキングポリシーを列に適用する前に、Snowflakeにデータベースとスキーマが存在している必要があります。現在、Snowflakeは、テーブルとビューでの動的データマスキングの使用をサポートしています。

クエリの実行時に、マスキングポリシーは、列が表示されるすべての場所で列に適用されます。マスキングポリシーの条件、 SQL 実行コンテキスト、およびロール階層に応じて、Snowflakeクエリオペレーターは、プレーンテキスト値、部分的にマスクされた値、または完全にマスクされた値を表示する場合があります。

クエリ実行時の動作、ポリシーの作成、テーブルとビューでの使用、マスキングポリシーを使用した管理アプローチなど、マスキングポリシーの仕組みの詳細については、 列レベルのセキュリティについて をご参照ください。

SQL 実行コンテキストとロール階層の影響の詳細については、 高度な列レベルのセキュリティトピック をご参照ください。

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 は、マスキングポリシーが設定されているすべてのオブジェクトのリストを提供します。

Information Schemaテーブル関数 POLICY_REFERENCES は、次のいずれかに使用できます。

  • 列でマスキングポリシーが設定されているすべてのオブジェクト(つまり、テーブル、ビュー)のリストを返します。

  • 指定されたオブジェクト名とオブジェクト型を持つポリシー関連付けのリストを返します。

Snowflakeは、ユーザーが実行した元のクエリを 履歴ページ (ウェブインターフェイス内)に記録します。クエリは SQL Text 列にあります。

特定のクエリで使用されたマスキングポリシー名は、 クエリプロファイル にあります。

現在、クエリ履歴はAccount Usage QUERY_HISTORY ビューのみに固有です。このビューの Query Text 列には、 SQL ステートメントのテキストが含まれています。マスキングポリシー名は、 QUERY_HISTORY ビューに含まれていません。

外部トークン化のトラブルシューティング

エラーメッセージを使用して、マスキングポリシーの問題のトラブルシューティングに役立てることができます。

エラーメッセージ

次のテーブルは、マスキングポリシーの使用中にSnowflakeが返す可能性があるエラーメッセージを示しています。

動作

エラーメッセージ

トラブルシューティングアクション

Snowflake機能にマスキングポリシーを適用できない。

サポート対象外機能 CREATE ON MASKING POLICY COLUMN

現在、マスキングポリシーはこの機能には適用されません。

アクティブなロールが、マスキングポリシーを作成または置き換えることができない。

SQLアクセス制御エラー: アカウント <アカウント名> を操作するには権限が不十分です

grant create masking policy on account to role <role_name>; を使用して指定のロールにCREATE MASKING POLICY権限を付与します。 . show grants to role <role_name> を使用して、ロールに権限が付与されていることを確認し、CREATE OR REPLACE マスキングステートメントを再試行します。

特定のロールが、マスキングポリシーをテーブルに添付できない。

SQLコンパイルエラー: データベース <データベース名> が存在しないか、権限がありません。

grant apply masking policy on account to role <role_name>; を使用して、ロールにAPPLY MASKING POLICY権限を付与します

テーブルのマスキングポリシーを所有していない特定のロールが、使用できるテーブルにマスキングポリシーを適用しようとする。

SQLコンパイルエラー: マスキングポリシー <ポリシー名> が存在しないか、権限がありません。

grant apply on masking policy <policy_name> to role <role_name>; を使用して、特定のロールのマスキングポリシーの使用を許可します

drop masking policy <policy_name>; を使用して、ポリシーのドロップまたは削除ができない

SQLコンパイルエラー: ポリシー <ポリシー名> は1つ以上のエンティティに関連付けられているため、ドロップまたは置き換えができません。

ALTER TABLE ... MODIFY COLUMNまたはALTER VIEW ... MODIFY COLUMNステートメントを使用して、最初にポリシーをUNSETし、次にDROPステートメントを再試行します。

ドロップされたテーブルを復元すると、マスキングポリシーエラーが発生する。

SQL実行エラー: 列 <列名> は、存在しないマスキングポリシーにすでに添付されています。ポリシー管理者に連絡してください。

ALTER テーブル/ビュー MODIFY COLUMN ステートメントで、現在添付されているマスキングポリシーの設定を解除し、CREATE OR REPLACE ステートメントでマスキングポリシーを列に再適用します。

マスキングポリシーを特定の列に適用することはできないが、別の列には適用できる。

指定された列は、既に別のマスキングポリシーに添付されています。列は、複数のマスキングポリシーに添付できません。新しいマスキングポリシーを添付するために、現在の関連付けを削除してください。

列に適用するマスキングポリシーを決定し、更新し、再試行します。

ALTER ステートメントを使用したポリシーの更新が失敗する。

SQLコンパイルエラー: マスキングポリシー <ポリシー名> が存在しないか、権限がありません。

show masking policies; を実行して、ALTER コマンドのポリシー名が既存のポリシーと一致することを確認します

クローンされたテーブルを所有するロールが、マスキングポリシーの設定を解除できない。

SQLアクセス制御エラー: ALTER TABLE UNSET MASKING POLICY「<ポリシー名>」を操作するには権限が不十分です

grant apply on masking policy <policy_name> to role <role_name>; . を使用して、クローンされたテーブルを所有するロールにAPPLY権限を付与します。 show grants to role <role_name>; を使用して、クローンされたテーブルを所有するロールが権限を付与されていることを確認し、ALTERステートメントを再試行します。

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権限があることを確認します。

次のトピック: