チュートリアル: 機密データの自動分類とタグ付け

概要

機密データの識別子と追跡はシンプルで簡単です。Snowflakeは、機密データを識別する組み込みアルゴリズムを提供し、そのデータにシステムタグを自動的に付けて、データのタイプと機密性の追跡を支援します。

最小限の設定で、スキーマを構成し、Snowflakeが新規および変更データに対して自動的にこの分類プロセスを実行し、システムタグとともにユーザー定義のタグを適用することもできます。

このチュートリアルでは、以下のことを行います。

  • 機密データに適用されるユーザー定義タグなど、チュートリアルを完了するために必要なリソースをセットします。

  • 分類プロファイルを作成し、Snowflakeはスキーマに追加されたデータを自動的に分類します。

  • 分類プロファイルにタグマッピングを追加し、Snowflakeが機密データとして識別したデータにユーザー定義のタグが適用されるようにします。

  • 分類結果を表示します。

Tip

このチュートリアルでは紹介しませんが、分類をカスタマイズして、ユーザー定義の正規表現を使用して機密データを識別し、ユーザー定義のセマンティックカテゴリでそのデータにタグを付けることもできます。詳細については、 カスタム分類の実装 をご参照ください。

ガバナンス・データベースの設定

このチュートリアルでは、データをガバナンスするために必要なSnowflakeオブジェクト(ユーザー定義タグと分類プロファイル)を作成します。ベストプラクティスに基づき、これらのオブジェクトはガバナンス専用のデータベースに作成されます。

SQL ワークシート を開き、以下のステートメントを実行して、ガバナンスオブジェクト用のデータベースとスキーマを作成します。

USE ROLE ACCOUNTADMIN; CREATE DATABASE IF NOT EXISTS governance_db; CREATE SCHEMA IF NOT EXISTS governance_db.sch; 
Copy

注釈

簡単に行うため、 ACCOUNTADMIN システムロールを使用して、機密データ分類の構成に必要な権限をセットしないようにします。実際には、この強力なロールは使用せず、必要な権限を持つカスタムロールを作成してください。

データの設定

このチュートリアルのデータを設定する前に、テーブルに入力するウェアハウスを作成します。

CREATE WAREHOUSE IF NOT EXISTS tutorial_wh; 
Copy

テーブルを作成する

  1. 分類するテーブルを含むデータベースとスキーマを作成します。

    CREATE DATABASE IF NOT EXISTS data_db; CREATE SCHEMA IF NOT EXISTS data_db.sch; 
    Copy
  2. 機密データを格納するテーブル構造を作成します。

    CREATE TABLE data_db.sch.customers ( account_number NUMBER(38,0), first_name VARCHAR(16777216), last_name VARCHAR(16777216), email VARCHAR(16777216) ); 
    Copy

テーブルに値を挿入します。

作成したテーブルにデータを追加します。

USE WAREHOUSE tutorial_wh; INSERT INTO data_db.sch.customers (account_number, first_name, last_name, email) VALUES (1589420, 'john', 'doe', 'john.doe@example.com'), (2834123, 'jane', 'doe', 'jane.doe@example.com'), (4829381, 'jim', 'doe', 'jim.doe@example.com'), (9821802, 'susan', 'smith', 'susan.smith@example.com'), (8028387, 'bart', 'simpson', 'bart.barber@example.com'); 
Copy

分類プロファイルの作成

これで、機密データを保護するために分類が必要なデータがテーブルいっぱいになりました。データがスキーマに追加されると、Snowflakeが自動的にデータを分類するようにするため、分類プロファイルを作成する必要があります。

分類プロファイルは、スキーマ内のデータが分類される頻度や、分類プロセス中の処理を制御します。すべての分類プロファイルは、 CLASSIFICATION_PROFILE クラスのインスタンスです。

スキーマの分類プロファイルを作成するには、以下を実行します。

CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE governance_db.sch.my_classification_profile( { 'minimum_object_age_for_classification_days': 0, 'maximum_classification_validity_days': 30, 'auto_tag': true }); 
Copy

この分類プロファイルがスキーマにセットされると、以下のことが起こります。

  • 分類は1日以内に始まります ('minimum_object_age_for_classification_days': 0)。

  • 最初の分類後、Snowflakeは30日ごとにテーブルの再分類が必要かどうかを再チェックします ('maximum_classification_validity_days': 30)。

  • 機密データ ('auto_tag': true) を含むと識別された列には、自動的に分類タグがセットされます。

分類プロファイルにタグマッピングを追加

分類プロファイルで 'auto_tag': true をセットしているため、Snowflake はデータを機密情報として分類すると、自動的に システム分類タグ を適用します。SEMANTIC_CATEGORY タグは、データのタイプを分類します。例えば、データを名前または住所として識別します。PRIVACY_CATEGORY タグはデータの機密性を分類し、例えばデータを識別子または準識別子として識別します。

さらに一歩進んで、データの分類方法に基づいてユーザー定義のタグを自動的に適用したいとします。このチュートリアルでは、その方法をご紹介します!

機密データに適用するカスタムタグを作成するには、以下のステートメントを実行します。

CREATE TAG governance_db.sch.tutorial_pii; 
Copy

次に、Snowflakeが列に名前が含まれていることを識別したときに、このユーザー定義タグが適用されるように分類プロファイルを変更します。分類プロファイルにタグマッピングを追加すると、ユーザー定義のタグをいつ、どのように適用するかを構成できます。

タグ・マップを分類プロファイルに追加するには、 classification_profile_name!SET_TAG_MAP メソッドを実行します。

CALL governance_db.sch.my_classification_profile!SET_TAG_MAP( {'column_tag_map':[ { 'tag_name':'governance_db.sch.tutorial_pii', 'tag_value':'sensitive_name', 'semantic_categories':['NAME'] }]}); 
Copy

自動分類でシステム定義の意味カテゴリが NAME、ユーザー定義のタグ tutorial_pii が列にセットされます。分類プロファイルに基づき、ユーザー定義 tutorial_pii タグの値は sensitive_name にセットされます。

注釈

分類プロファイルを作成する際に、タグマッピングを定義することもできます。

スキーマへの分類プロファイルのセット

分類プロファイルの構成ができたので、スキーマにセットする準備ができました。これにより、自動分類プロセスが開始されます。

ALTER SCHEMA data_db.sch SET CLASSIFICATION_PROFILE = 'governance_db.sch.my_classification_profile'; 
Copy

あとはSnowflakeがやってくれます!Snowflakeは既存のデータの分類を開始し、新しいデータがスキーマに追加されると分類を継続します。

分類結果を表示

チュートリアルのこの部分を完了する前に、Snowflakeが分類プロセスを完了するまで1時間待つ必要があります。

1時間後、以下のステートメントを実行し、分類結果を取得します。

CALL SYSTEM$GET_CLASSIFICATION_RESULT('data_db.sch.customers'); 
Copy

その結果、次のことがわかりました。

  • ACCOUNT_NUMBER 列は機密扱いではないため、分類タグは割り当てられていません。

  • EMAIL 列は、 EMAIL のセマンティックカテゴリと IDENTIFIER のプライバシーカテゴリでフラグされます。

  • 分類プロファイルのタグマッピングに基づいて、 governance_db.sch.tutorial_pii ユーザー定義タグは、 NAME のセマンティックカテゴリを持つ列に割り当てられました(出力のハイライト行を参照)。

 {  "classification_profile_config": {  "classification_profile_name": "GOVERNANCE_DB.SCH.MY_CLASSIFICATION_PROFILE"  },  "classification_result": {  "ACCOUNT_NUMBER": {  "alternates": []  },  "EMAIL": {  "alternates": [],  "recommendation": {  "confidence": "HIGH",  "coverage": 1,  "details": [],  "privacy_category": "IDENTIFIER",  "semantic_category": "EMAIL",  "tags": [  {  "tag_applied": true,  "tag_name": "snowflake.core.semantic_category",  "tag_value": "EMAIL"  },  {  "tag_applied": true,  "tag_name": "snowflake.core.privacy_category",  "tag_value": "IDENTIFIER"  }  ]  },  "valid_value_ratio": 1  },  "FIRST_NAME": {  "alternates": [],  "recommendation": {  "confidence": "HIGH",  "coverage": 1,  "details": [],  "privacy_category": "IDENTIFIER",  "semantic_category": "NAME",  "tags": [  {  "tag_applied": true,  "tag_name": "snowflake.core.semantic_category",  "tag_value": "NAME"  },  {  "tag_applied": true,  "tag_name": "snowflake.core.privacy_category",  "tag_value": "IDENTIFIER"  },  {  "tag_applied": true,  "tag_name": "governance_db.sch.tutorial_pii",  "tag_value": "sensitive_name"  }  ]  },  "valid_value_ratio": 1  },  "LAST_NAME": {  "alternates": [],  "recommendation": {  "confidence": "HIGH",  "coverage": 1,  "details": [],  "privacy_category": "IDENTIFIER",  "semantic_category": "NAME",  "tags": [  {  "tag_applied": true,  "tag_name": "snowflake.core.semantic_category",  "tag_value": "NAME"  },  {  "tag_applied": true,  "tag_name": "snowflake.core.privacy_category",  "tag_value": "IDENTIFIER"  },  {  "tag_applied": true,  "tag_name": "governance_db.sch.tutorial_pii",  "tag_value": "sensitive_name"  }  ]  },  "valid_value_ratio": 1  }  } } 

クリーンアップ、まとめ、追加リソース

おめでとうございます。これでこのチュートリアルは終了です。

まとめると、以下のことを学びました。

  • 分類プロファイルを作成して、自動分類の実装方法を制御します。

  • 分類プロファイルにタグマッピングを追加し、機密データを含む列にユーザー定義のタグが自動的にセットされるようにします。

  • 自動分類を開始するために、スキーマに分類プロファイルをセットします。

  • 自動分類の結果を表示します。

チュートリアルのオブジェクトをドロップする

チュートリアルを繰り返す予定がある場合は、作成したオブジェクトを保持することができます。

そうでない場合は、以下のようにチュートリアルのオブジェクトをドロップします。

DROP TAG governance_db.sch.tutorial_pii; DROP DATABASE governance_db; DROP DATABASE data_db; DROP WAREHOUSE tutorial_wh; 
Copy

次の内容

関連コストやカスタム分類の実装など、機密データの自動分類の実装に関する詳細については、 機密データを自動的に分類 を参照してください。