外部トークン化の使用

このトピックでは、Snowflakeで外部トークン化を構成して使用する方法について説明します。

Snowflakeは、 AWS とAzureでの外部トークン化をサポートしています。

重要

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サポート にお問い合わせください。

External Tokenization on AWS

Snowflake supports two partner integrations to use External Tokenization on AWS:

Protegrity

To configure and use External Tokenization with Protegrity, register for the Protegrity + Snowflake Trial Experience. After registration, follow all instructions on the Protegrity website.

Baffle

To configure and use External Tokenization with Baffle, complete the steps in the Baffle documentation.

Azureでの外部トークン化

Snowflake supports External Tokenization on Azure using a partner integration with Baffle or a custom integration.

Baffle

To use the Baffle integration, follow the instructions in the Baffle guide.

Custom integration

Use the representative procedure listed below to configure a custom External Tokenization integration on Azure.

ステップ1: Azureで外部関数を作成する

外部関数では、Azure環境がSnowflakeと通信するように構成されている必要があります。

これらの ステップ を使用して、Azure環境とSnowflake外部関数を構成します。

注釈

トークン化プロバイダーのドキュメントを参照して、特に API Managementサービスの構成中に、追加の必要なステップが完了していることを確認してください。

ステップ2: カスタムロールにマスキングポリシー権限を付与する

セキュリティ担当者またはプライバシー担当者 は、マスキングポリシー管理者(つまり、カスタムロール: MASKING_ADMIN)として機能し、マスキングポリシーを定義、管理、および列に適用する権限を持っている必要があります。

Snowflakeは、列レベルのセキュリティマスキングポリシーのセキュリティ担当者またはプライバシー担当者に付与する次の権限を提供します。

権限

説明

CREATE MASKING POLICY

このスキーマレベルの権限は、誰がマスキングポリシーを作成できるかを制御します。

APPLY MASKING POLICY

このアカウントレベルの権限は、列にマスキングポリシーを設定/設定解除でき、デフォルトで ACCOUNTADMIN ロールを付与されているは誰かを制御します。 . この権限では、マスキングポリシーの列への適用を許可するのみで、 アクセス制御権限 により説明されている追加のテーブル権限は提供 されません

APPLY ON MASKING POLICY

オプション。ポリシー所有者はこのポリシーレベルの権限を使用して、列における特定のマスキングポリシーの設定/設定解除操作をオブジェクト所有者に分散させることができます(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)。 . Snowflakeは、オブジェクト所有者がデータスチュワードとも見なされる 任意のアクセス制御 をサポートしています。 . ポリシー管理者が保護された列のデータスチュワードとしてオブジェクト所有者を信頼している場合、ポリシー管理者はこの権限を使用して、ポリシーの適用設定/設定解除操作を分散できます。

次の例では、 MASKING_ADMIN ロールを作成し、そのロールにマスキングポリシー権限を付与します。

-- create a masking policy administrator custom role

CREATE ROLE masking_admin;

-- grant privileges to masking_admin role.

GRANT CREATE MASKING POLICY on SCHEMA <schema_name> to ROLE masking_admin;

GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;

-- allow table_owner role to set or unset the ssn_mask masking policy (optional)

GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;

条件:

  • スキーマ名

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

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

ステップ3: 外部トークン化のマスキングポリシーを作成する

この代表的な例では、 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;

ちなみに

既存のマスキングポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE MASKING POLICY コマンドを実行します。

ステップ4: テーブルまたはビュー列にマスキングポリシーを適用する

次のステートメントを実行して、テーブル列またはビュー列にポリシーを適用します。

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

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

Google Cloud Platformでの外部トークン化

Snowflake supports External Tokenization on Google Cloud Platform (GCP) using custom integrations.

The following is a representative procedure to configure and use External Tokenization on GCP.

ステップ1: GCP で外部関数を作成する

外部関数では、 GCP 環境がSnowflakeと通信するように構成されている必要があります。

これらの ステップ を使用して、 GCP 環境とSnowflake外部関数を構成します。

注釈

トークン化プロバイダーのドキュメントを参照して、特に API Gatewayサービスの構成中に、追加の必要な手順が完了していることを確認してください。

ステップ2: カスタムロールにマスキングポリシー権限を付与する

セキュリティ担当者またはプライバシー担当者 は、マスキングポリシー管理者(つまり、カスタムロール: MASKING_ADMIN)として機能し、マスキングポリシーを定義、管理、および列に適用する権限を持っている必要があります。

Snowflakeは、列レベルのセキュリティマスキングポリシーのセキュリティ担当者またはプライバシー担当者に付与する次の権限を提供します。

権限

説明

CREATE MASKING POLICY

このスキーマレベルの権限は、誰がマスキングポリシーを作成できるかを制御します。

APPLY MASKING POLICY

このアカウントレベルの権限は、列にマスキングポリシーを設定/設定解除でき、デフォルトで ACCOUNTADMIN ロールを付与されているは誰かを制御します。 . この権限では、マスキングポリシーの列への適用を許可するのみで、 アクセス制御権限 により説明されている追加のテーブル権限は提供 されません

APPLY ON MASKING POLICY

オプション。ポリシー所有者はこのポリシーレベルの権限を使用して、列における特定のマスキングポリシーの設定/設定解除操作をオブジェクト所有者に分散させることができます(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)。 . Snowflakeは、オブジェクト所有者がデータスチュワードとも見なされる 任意のアクセス制御 をサポートしています。 . ポリシー管理者が保護された列のデータスチュワードとしてオブジェクト所有者を信頼している場合、ポリシー管理者はこの権限を使用して、ポリシーの適用設定/設定解除操作を分散できます。

次の例では、 MASKING_ADMIN ロールを作成し、そのロールにマスキングポリシー権限を付与します。

-- create a masking policy administrator custom role

CREATE ROLE masking_admin;

-- grant privileges to masking_admin role.

GRANT CREATE MASKING POLICY on SCHEMA <schema_name> to ROLE masking_admin;

GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;

-- allow table_owner role to set or unset the ssn_mask masking policy (optional)

GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;

条件:

  • スキーマ名

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

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

ステップ3: 外部トークン化のマスキングポリシーを作成する

この代表的な例では、 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;

ちなみに

既存のマスキングポリシーを更新するために、ポリシーの現在の定義を確認する必要がある場合は、 GET_DDL 関数を呼び出すか、 DESCRIBE MASKING POLICY コマンドを実行します。

ステップ4: テーブルまたはビュー列にマスキングポリシーを適用する

次のステートメントを実行して、テーブル列またはビュー列にポリシーを適用します。

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

ステップ5: 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で外部トークン化のマスキングポリシーを持つ列を常に確認してください。根本的な原因を特定するには、以下をご参照ください。

次のトピック: