外部トークン化について

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

外部トークン化マスキングポリシーは、タグベースの外部トークン化を提供するために、タグに割り当てることができます。タグにマスキングポリシーを割り当てるための詳細については、 タグベースのマスキングポリシー をご参照ください。

重要

外部トークン化には、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機能にマスキングポリシーを適用できない。

サポート対象外機能 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権限があることを確認します。

次のトピック: