分類の紹介

このトピックでは、分類のしくみに関する情報を提供します。

カスタム分類子の使用方法については、 カスタムデータ分類 をご参照ください。

このトピックの内容:

概要

分類は、個人データのフィールドとメタデータを分析して、Snowflakeで定義されたシステムタグを列に関連付ける多段階プロセスです。データエンジニアは、 SQL と Snowsight を使用してこのデータを追跡できます。データエンジニアは、テーブル内の列を分類して、一意の識別子(パスポートまたは銀行口座のデータ)、準識別子(個人が居住している都市)、機密値(個人の給与)など、追跡または保護が必要な特定の種類のデータが列に含まれているかどうかを判断できます。

システムタグを使用してデータを追跡し、マスキングまたは行アクセスポリシーを使用してデータを保護することで、データエンジニアはデータに関連付けられたガバナンス体制を改善できます。分類とデータ保護のステップの全体的な結果として、データプライバシー規制の遵守が促進されます。

単一のテーブルまたはスキーマ内のテーブルを分類できます。Snowflakeは、列を分類してタグ付けできるように、定義済みの システムタグ を提供します。または、カスタム分類子を使用して、データに関する知識に基づいて独自のセマンティックカテゴリを定義できます。採用するガバナンス体制に応じて、Snowflakeシステムタグとカスタム分類子を使用するアプローチを選択することもできます。

分類は、データのプライバシーとデータガバナンスの管理者に次の利点を提供します。

データアクセス:

列データを分類した結果は、IDおよびアクセス管理の管理者に、Snowflakeの ロール階層 を評価および維持して、Snowflakeのロールが機密データまたは PII データへの適切なアクセス権を確保するように通知できます。

データ共有:

分類プロセスは、 PII データのストレージの場所を特定して確認するのに役立ちます。その後、データ共有プロバイダーは分類結果を使用して、データを共有するかどうか、またデータ共有コンシューマーが PII データを利用できるようにする方法を決定できます。

ポリシーの適用:

ベーステーブル内の列を参照してビューまたはマテリアライズドビューを作成するなど、 PII データを含む列を使用すると、マスキングポリシーまたは行アクセスポリシーのいずれかを使用してデータを保護するための最適なアプローチを決定するのに役立ちます。

システムタグおよびカテゴリ

システムタグは、Snowflakeが共有 SNOWFLAKE データベース で作成、維持、および利用できるようにするタグです。2つの分類システムタグがあり、どちらも SNOWFLAKE.CORE スキーマに存在します。

  • SNOWFLAKE.CORE.SEMANTIC_CATEGORY

  • SNOWFLAKE.CORE.PRIVACY_CATEGORY

データエンジニアは、個人データまたは機密データを含む列にこれらのタグを割り当てます。

文字列値:

Snowflakeは、列でのシステムタグの割り当てをキーと値のペアとして保存します。値は文字列です。Snowflakeはこれらの各システムタグを維持するため、Snowflakeは各分類システムタグに許可される文字列値を定義します。

タグ名 SEMANTIC_CATEGORY および PRIVACY_CATEGORY は、列サンプリングプロセス中にSnowflakeが列データに割り当てる、分類カテゴリに対応します(つまり、タグ名とカテゴリ名は同じ単語を使用します)。

セマンティックカテゴリ:

セマンティックカテゴリは、個人の属性を識別します。

分類がサポートする個人属性の非網羅的なリストには、名前、年齢、性別が含まれます。これら3つの属性は、 SEMANTIC_CATEGORY タグを列に割り当てるときに使用可能な文字列値です。

分類により、オーストラリア、カナダ、英国など、さまざまな国から情報を検出することができます。たとえば、テーブルの列に電話番号の情報が含まれている場合、分析プロセスでは、それぞれの国の異なる電話番号の値を区別することができます。サポートされる国際化の値の包括的なリストについては、 システムタグおよびカテゴリ (このトピック内)をご参照ください。

プライバシーカテゴリ:

分析により、列データがセマンティックカテゴリに対応すると判断された場合、Snowflakeはさらに列をプライバシーカテゴリに分類します。プライバシーカテゴリには、識別子、準識別子、機密の3つの値があります。これら3つの値は、 PRIVACY_CATEGORY 分類システムタグを列に割り当てるときに指定できる文字列値です。

  • 識別子: これらの属性は、個人を一意に識別します。属性の例には、名前、社会保障番号、電話番号などがあります。

    識別子属性は 直接識別子 と同義です。

  • 準識別子: これらの属性は、2つ以上の属性が組み合わされた場合に、個人を一意に識別することができます。属性の例には、年齢と性別が含まれます。

    準識別子は 間接識別子 と同義です。

  • 機密: これらの属性は、個人を識別するのに十分とは見なされませんが、個人がプライバシー上の理由で開示を望まない情報です。

    現在、Snowflakeが機密と評価する唯一の属性は給与です。

  • 非機密: これらの属性には個人情報や機密情報は含まれません。

次のテーブルは、各分類カテゴリとシステムタグの関係、および各分類システムタグの文字列値をまとめたものです。Snowflakeは、特定の国に関連する国際的な SEMANTIC_CATEGORY タグ値をサポートしています。国名コードは、 ISO-3166-1 alpha-2 規格に基づいています。 EMAIL および GENDER などの他のセマンティックカテゴリには国コードはありません。国際情報を追跡するために、データエンジニアは、システムタグを列に設定するときに、 SEMANTIC_CATEGORY タグ値列の値を使用します。

PRIVACY_CATEGORY 値

SEMANTIC_CATEGORY 値

サポートされている国

IDENTIFIER

  • BANK_ACCOUNT

  • DRIVERS_LICENSE

  • MEDICARE_NUMBER

  • NATIONAL_IDENTIFIER

  • ORGANIZATION_IDENTIFIER

  • PASSPORT

  • PHONE_NUMBER

  • STREET_ADDRESS

  • TAX_IDENTIFIER

  • EMAIL

  • IBAN

  • IMEI

  • IP_ADDRESS

  • NAME

  • PAYMENT_CARD

  • URL

  • VIN

  • CA, NZ, US

  • AU, CA, US

  • AU, NZ

  • CA, GB, SG, US

  • AU, SG

  • AU, CA, NZ, SG, US

  • AU, CA, GB, US

  • CA, US

  • AU, NZ

QUASI_IDENTIFIER

  • ADMINISTRATIVE_AREA_1

  • ADMINISTRATIVE_AREA_2

  • CITY

  • POSTAL_CODE

  • AGE

  • COUNTRY

  • DATE_OF_BIRTH

  • ETHNICITY

  • GENDER

  • LAT_LONG

  • LATITUDE

  • LONGITUDE

  • MARITAL_STATUS

  • OCCUPATION

  • YEAR_OF_BIRTH

  • CA, NZ, US

  • US

  • CA, NZ, US

  • AU, CA, CH, NZ, GB, US

SENSITIVE

  • SALARY

注釈

3つのプライバシーカテゴリすべてからの複数のセマンティックタグ文字列値は、「機密性の高い個人データ」、「データの特別なカテゴリ」、または法規制に基づく同様の用語と見なされ、追加の保護または制御が必要になる場合があります。

現在、分類では、列データに機密性と識別性の両方のタグが付けられていません。つまり、特定の列にシステムタグを設定する場合は、 SEMANTIC_CATEGORY または PRIVACY_CATEGORY タグのいずれかを選択する必要があります。

サポートされているオブジェクトとデータ型

Snowflakeは、外部テーブル、マテリアライズドビュー、セキュアビューなど、すべての型のテーブルとビューに保存されているデータの分類をサポートしています。

サポートされているすべての データ型 のテーブルとビューの列を分類できます。ただし、次のデータ型は 除きます

  • GEOGRAPHY

  • BINARY

  • VARIANT

    列のデータ型を NUMBER または STRING データ型に キャスト できる場合は、列を VARIANT データ型で分類できることに注意してください。列に JSON、 XML、またはその他の半構造化データが含まれている場合、Snowflakeは列を分類しません。

テーブルにサポートされているデータ型ではない列が含まれている場合、または列にすべての NULL 値が含まれている場合、分類プロセスは列を無視し、出力に含めません。

重要

データが NULL 以外の値を持つ NULL 値を表す場合は、分類結果の精度に影響を与える可能性があります。

コンピューティングコスト

分類プロセスには、分類が実行されるときに使用および実行されている、 仮想ウェアハウス によって提供されるコンピューティングリソースが必要です。

テーブル/ビュー内のデータを分類するために必要な時間(したがって、ウェアハウスによって消費されるクレジットの数)は、分類されるデータの量の関数です。

特に、テーブルまたはビューに分類をサポートする列が多数ある場合は、処理時間に影響を与える可能性があります。ただし、原則として、処理速度はウェアハウスのサイズに比例します。言い換えると、ウェアハウスのサイズが大きくなるごとに(XSからS)、通常、処理時間が半分に短縮されます。

次の一般的なガイドラインに従って、 ウェアハウスのサイズ を選択します。

  • 処理時間の考慮なし: XSウェアハウス。

  • テーブル内の列が最大100列: Sウェアハウス。

  • テーブル内の列が101列から300列: Mウェアハウス。

  • テーブル内の列が301列以上: Lウェアハウス。

詳細については、 ウェアハウスに関する考慮事項 をご参照ください。

推奨事項

分類機能を活用して PII データ追跡機能を最適化するには、次を実行します。

検証:

最初にAccount Usageビューをクエリします。

  • ACCESS_HISTORY: 最も頻繁にアクセスされるテーブルおよびビューオブジェクトを判定します。

  • OBJECT_DEPENDENCIES: 2つ以上のオブジェクト間のメタデータ参照を判定します。

クエリ結果を使用して、分類システムタグのスキーマレベルまたはデータベースレベルの割り当てに優先順位を付けます。

列名:

テーブルオブジェクトで適切な列名を使用し、テーブル作成者をトレーニングして、内部のテーブル作成ガイドラインに準拠させます。

データ型:

列には適切なデータ型を使用します。たとえば、 AGE 列には NUMBER データ型が必要です。

VARIANT:

列のデータ型が VARIANT の場合は、テーブルを分類する前に列に対して FLATTEN コマンドを使用します。

ウェアハウス:

データを分類するときは、適切なウェアハウスサイズを使用します。詳細については、 コンピューティングコスト (このトピック内)をご参照ください。

分類を管理する

権限参照

データ分類の権限モデルによって、データプライバシー管理者は、どのペルソナがテーブルを分類し、列にタグを付けることができるかを決定できます。たとえば、必要な権限をすべて1つのロールに持たせることも、データプライバシー管理者が職務の分離(SoD)要件を満たすために異なるロールに権限を委任することもできます。実行可能な付与の組み合わせの一例が、 データ分類を使用するデータの分類を始める セクションに示されています。

管理者には、関係するロールまたはペルソナを管理する方法に応じてさまざまなオプションがあります。これらのオプションにより、採用するガバナンス体制に柔軟性がもたらされます。例:

  • テーブルの所有者(テーブルの OWNERSHIP 権限を持つロール)は、テーブルを分類し、列にシステムタグを設定できます。

  • テーブルに対する SELECT 権限を持ち、アカウントに対する APPLY TAG 権限を持つカスタムロールは、テーブルを分類し、列にシステムタグを設定できます。

  • 列の分類とタグ付けに異なるロールまたはペルソナを関与させる場合は、テーブルに対する SELECT 権限を1つのロールに付与し、アカウントに対する APPLY TAG 権限を別のロールに付与します。

次の表は、テーブルを分類し、列にデータ分類システムタグを設定し、これらの両方のタスクを実行するためのさまざまな付与オプションをまとめたものです。

権限またはロール

テーブルの分類

列にシステムタグを設定する

テーブルまたはビューに対する SELECT。

テーブルに対する OWNERSHIP。

アカウントに対する APPLY TAG。

ACCOUNTADMIN ロール。

データベースまたはスキーマに対する OWNERSHIP。

重要

  • テーブルを分類するには、実行中のウェアハウスが必要です。テーブルを分類するために使用されるロールには、少なくともウェアハウスに対する USAGE 権限が必要です。

  • アカウントロールに SNOWFLAKE.GOVERNANCE_VIEWER データベースロールを付与すると、そのアカウントロールを持つユーザーが DATA_CLASSIFICATION_LATEST ビューにクエリを実行し、分類されたテーブルの最新の結果を参照できるようになります。

追跡システムタグ

Snowflakeは、分類システムタグの使用状況を追跡する組み込みのビューと関数を提供します。

  • アカウントでシステムタグを含む列を見つけるには、Account Usage TAG_REFERENCES ビューをクエリします。

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
        WHERE TAG_NAME = 'PRIVACY_CATEGORY'
        ORDER BY OBJECT_DATABASE, OBJECT_SCHEMA, OBJECT_NAME, COLUMN_NAME;
    
    Copy
  • 特定のデータベース内にあるテーブルまたはビューのシステムタグを持つ列を検索するには、 TAG_REFERENCES Information Schemaテーブル関数を呼び出します。

    SELECT * FROM
      TABLE(
        MY_DB.INFORMATION_SCHEMA.TAG_REFERENCES(
          'my_db.my_schema.hr_data.fname',
          'COLUMN'
        ));
    
    Copy
  • 特定のデータベース内にあるテーブルまたはビューのすべての列に設定されたすべてのタグを見つけるには、Information Schema TAG_REFERENCES_ALL_COLUMNS テーブル関数を呼び出します。

    SELECT * from
      TABLE(
        MY_DB.INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
          'my_db.my_schema.hr_data',
          'table'
        ));
    
    Copy
  • 列の特定のタグ値を見つけるには、 SYSTEM$GET_TAG システム関数を呼び出します。

    SELECT SYSTEM$GET_TAG(
      'SNOWFLAKE.CORE.PRIVACY_CATEGORY',
      'hr_data.fname',
      'COLUMN'
      );
    
    Copy