外部トークン化の使用

このトピックでは、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;
Copy

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;
Copy

table_owner ロールに ssn_mask マスキングポリシーの設定または設定解除を許可します(オプション):

GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
Copy

条件:

  • db_name.schema_name

    権限を付与するスキーマの識別子を指定します。

詳細については、次をご参照ください。

ステップ3: ユーザーにカスタムロールを付与する

セキュリティまたはプライバシー担当者として機能するユーザーに MASKING_ADMIN カスタムロールを付与します。

use role useradmin;
grant role masking_admin to user jsmith;
Copy

ステップ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;
Copy

ちなみに

既存のマスキングポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 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;
Copy

ステップ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
Copy

外部トークン化のベストプラクティス

  • システムの同期。AWS では、組織のIDプロバイダー(IdP)のユーザーとロールをSnowflakeおよびProtegrityと同期すると便利です。ユーザーとロールが同期されていない場合は、外部関数、 API 統合、マスキングポリシー、トークン化ポリシーに関する予期しない動作、エラーメッセージ、複雑なトラブルシューティングが発生する可能性があります。オプションの1つは、 SCIM を使用して、ユーザーとロールを IdP およびSnowflakeと同期させることです。

  • エラーの根本的な原因。外部トークン化には複数のシステム(例: IdP、Snowflake、Protegrity、 AWS、Azure、 GCP)を調整する必要があるため、権限、現在の制限、外部関数、 API 統合、マスキングポリシー、およびSnowflakeで外部トークン化のマスキングポリシーを持つ列を常に確認してください。根本的な原因を特定するには、以下をご参照ください。

次のトピック: