外部トークン化の使用¶
このトピックでは、Snowflakeでパートナーの統合を使用して外部トークン化を使用する方法と、カスタムの外部トークン化統合を作成する方法についての手順を提供します。
Snowflakeは、 AWS、Microsoft Azure、およびGoogle Cloud Platformでの外部トークン化をサポートしています。
外部トークン化マスキングポリシーは、タグベースの外部トークン化を提供するために、タグに割り当てることができます。タグにマスキングポリシーを割り当てるための詳細については、 タグベースのマスキングポリシー をご参照ください。
重要
外部トークン化には、Snowflake Standard Edition に含まれている 外部関数の記述 が必要です。また、トークン化プロバイダーで外部関数を使用できます。
ただし、トークン化プロバイダーをSnowflake外部トークン化に 統合 することを選択した場合は、 Enterprise Edition またはそれ以上にアップグレードする必要があります。
アップグレードについては、 Snowflakeサポート にお問い合わせください。
外部トークン化パートナーの統合¶
次のパートナーは、Snowflakeでの外部トークン化を促進します。これらのパートナー統合を使用するには、パートナーのドキュメントにある手順に従うか、パートナーに連絡して構成プロセスを開始します。
カスタム外部トークン化の統合を作成する¶
外部トークン化のカスタム統合を作成するには、次のステップを完了します。
ステップ1: 外部関数を作成する¶
Snowflakeで外部関数を作成し、外部関数と通信できるようにクラウドプロバイダー環境を構成します。詳細については、以下をご参照ください。
ステップ2: カスタムロールにマスキングポリシー権限を付与する¶
セキュリティ担当者またはプライバシー担当者 は、マスキングポリシー管理者(つまり、カスタムロール: MASKING_ADMIN
)として機能し、マスキングポリシーを定義、管理、および列に適用する権限を持っている必要があります。
Snowflakeは、列レベルのセキュリティマスキングポリシーのセキュリティ担当者またはプライバシー担当者に付与する次の権限を提供します。
権限 |
説明 |
---|---|
CREATE MASKING POLICY |
このスキーマレベルの権限は、誰がマスキングポリシーを作成できるかを制御します。 |
APPLY MASKING POLICY |
このアカウントレベルの権限は、列にマスキングポリシーを設定/設定解除でき、デフォルトで ACCOUNTADMIN ロールを付与されているは誰かを制御します。 . この権限では、マスキングポリシーの列への適用を許可するのみで、 アクセス制御権限 により説明されている追加のテーブル権限は提供 されません。 |
APPLY ON MASKING POLICY |
オプション。ポリシー所有者はこのポリシーレベルの権限を使用して、列における特定のマスキングポリシーの設定/設定解除操作をオブジェクト所有者に分散させることができます(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)。 . Snowflakeは、オブジェクト所有者がデータスチュワードとも見なされる 任意のアクセス制御 をサポートしています。 . ポリシー管理者が保護された列のデータスチュワードとしてオブジェクト所有者を信頼している場合、ポリシー管理者はこの権限を使用して、ポリシーの適用設定/設定解除操作を分散できます。 |
次の例では、 MASKING_ADMIN
ロールを作成し、そのロールにマスキングポリシー権限を付与します。
マスキングポリシー管理者のカスタムロールを作成します。
use role useradmin; CREATE ROLE masking_admin;
masking_admin
ロールに権限を付与します。
use role securityadmin; GRANT CREATE MASKING POLICY on SCHEMA <db_name.schema_name> to ROLE masking_admin; GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;
table_owner
ロールに ssn_mask
マスキングポリシーの設定または設定解除を許可します(オプション):
GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
条件:
db_name.schema_name
権限を付与するスキーマの識別子を指定します。
詳細については、次をご参照ください。
ステップ3: ユーザーにカスタムロールを付与する¶
セキュリティまたはプライバシー担当者として機能するユーザーに MASKING_ADMIN
カスタムロールを付与します。
use role useradmin;
grant role masking_admin to user jsmith;
ステップ4: マスキングポリシーを作成する¶
この代表的な例では、 ANALYST
カスタムロールを持つユーザーに、非トークン化されたメールの値が表示されます。 ANALYST
のカスタムロールがないユーザーには、トークン化された値が表示されます。
メールの値を非トークン化する外部関数は de_email()
です。
-- create masking policy
create or replace masking policy email_de_token as (val string) returns string ->
case
when current_role() in ('ANALYST') then de_email(val)
else val
end;
Tip
既存のマスキングポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE MASKING POLICY コマンドを実行します。
ステップ5: テーブルまたはビュー列にマスキングポリシーを適用する¶
これらの例では、テーブルの作成時にテーブル列に対して、またビューの作成時にビュー列に対してマスキングポリシーが適用されないことを前提としています。オプションで、 CREATE TABLE ステートメントを使用してテーブルを作成するとき、または CREATE VIEW ステートメントを使用してビュー列を作成するときに、テーブル列にマスキングポリシーを適用できます。
次のステートメントを実行して、テーブル列またはビュー列にポリシーを適用します。
-- apply masking policy to a table column
alter table if exists user_info modify column email set masking policy email_de_token;
-- apply the masking policy to a view column
alter view user_info_v modify column email set masking policy email_de_token;
ステップ6: Snowflakeでデータをクエリする¶
Snowflakeで、2つの異なるクエリを実行します。1つは ANALYST
カスタムロールを持つクエリ、もう1つは異なるロールを持つクエリで、 ANALYST
カスタムロールのないユーザーにトークン化した値が表示されることを確認します。
-- using the ANALYST custom role
use role ANALYST;
select email from user_info; -- should see plain text value
-- using the PUBLIC system role
use role public;
select email from user_info; -- should see tokenized value
外部トークン化のベストプラクティス¶
システムの同期。AWS では、組織のIDプロバイダー(IdP)のユーザーとロールをSnowflakeおよびProtegrityと同期すると便利です。ユーザーとロールが同期されていない場合は、外部関数、 API 統合、マスキングポリシー、トークン化ポリシーに関する予期しない動作、エラーメッセージ、複雑なトラブルシューティングが発生する可能性があります。オプションの1つは、 SCIM を使用して、ユーザーとロールを IdP およびSnowflakeと同期させることです。
エラーの根本的な原因。外部トークン化には複数のシステム(例: IdP、Snowflake、Protegrity、 AWS、Azure、 GCP)を調整する必要があるため、権限、現在の制限、外部関数、 API 統合、マスキングポリシー、およびSnowflakeで外部トークン化のマスキングポリシーを持つ列を常に確認してください。根本的な原因を特定するには、以下をご参照ください。
次のトピック: