外部トークン化の使用

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

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

重要

外部トークン化には、Snowflake Standard Edition に含まれている 外部関数 が必要です。また、トークン化プロバイダー(つまり、Protegrity)で外部関数を使用できます。

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

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

AWS での外部トークン化の使用

AWS で、SnowflakeおよびProtegrityの外部トークン化を構成して使用するには、 Protegrity + Snowflake Trial Experience に登録します。

登録後、Protegrityウェブサイトのすべての指示に従って、外部トークン化を構成して使用します。

Azureでの外部トークン化

以下は、Azureで外部トークン化を構成して使用するための代表的な手順です。

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

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

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

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

use role ANALYST;
select email from user_info; -- should see plain text value

-- using the PUBLIC role

use role public;
select email from user_info; -- should see tokenized value

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

次のトピック: