カスタム分類子の使用によるカスタムセマンティックカテゴリの実装¶
CUSTOM_CLASSIFIER :doc:` クラス </sql-reference-classes>` により、データエンジニアはデータに関する独自の知識に基づいて機密データ分類機能を拡張することができます。機密データを :doc:`カスタムセマンティックカテゴリ </user-guide/classify-custom>`に分類するには、スキーマ内に CUSTOM_CLASSIFIER クラスのインスタンスを作成し、インスタンスメソッドを呼び出して、インスタンスに関連する正規表現を追加します。
CUSTOM_CLASSIFIER インスタンスを使用してカスタムセマンティックカテゴリを作成するエンドツーエンドの例については、 例 をご参照ください。
コマンドとメソッド¶
以下のメソッドと SQL コマンドがサポートされています。
アクセス制御¶
これらのセクションでは、インスタンスを使用するために必要なさまざまなオブジェクトのロールと付与をまとめています。
ロール¶
カスタム分類で以下のロールを使用できます。
SNOWFLAKE.CLASSIFICATION_ADMIN: カスタム分類子インスタンスの作成を可能にするデータベースロール。
custom_classifier!PRIVACY_USER: インスタンス上で以下のメソッドを呼び出すことができる インスタンスロール:ADD_REGEX
LIST
DELETE_CATEGORY
インスタンでOWNERSHIP権限を持つアカウントロールは、これらのコマンドを実行できます。
DROP CUSTOM_CLASSIFIER
SHOW CUSTOM_CLASSIFIER
付与¶
インスタンスを作成して管理するには、 CREATE SNOWFLAKE 、 DATA_PRIVACY 、 CUSTOM_CLASSIFIER 権限 をロールに付与するか、 PRIVACY_USER インスタンスロールをロールに付与するかを選択します。
インスタンスロールをアカウントロールとデータベースロールに付与して、他のユーザーがカスタム分類子インスタンスを操作できるようにすることができます。
条件:
nameカスタム分類子インスタンスの名前を指定します。
role_nameアカウントロールの名前を指定します。
database_role_nameデータベースロールの名前を指定します。
インスタンスのメソッドを呼び出すには、ウェアハウスを使わなければなりません。
カスタムロール my_classification_role に、必要なインスタンスロールと、 CUSTOM_CLASSIFIER クラスのインスタンスを作成して使用する権限を付与するには、以下のステートメントを実行します:
特定のインスタンスを使用できるようにする data_analyst など、特定のロールを有効にしたい場合は、次のようにします:
例¶
カスタム分類子を使用してデータを分類するための、高レベルのアプローチは次のとおりです。
分類するテーブルを特定します。
SQL を使用して次を実行します。
カスタム分類子インスタンスを作成します。
カスタムセマンティックカテゴリと正規表現をインスタンスに追加します。
テーブルを分類します。
テーブルを分類するカスタム分類子を作成するには、次の手順を実行します。
テーブル
data.tables.patient_diagnosisの列の1つに、 ICD-10コード のような診断コードが含まれているとします。このテーブルには、医療施設で治療を受けた患者の氏名、固有の健康保険識別子、生年月日など、患者を識別するための列も含まれる場合があります。データ所有者はテーブルを分類して列が正しくタグ付けされていることを確認することで、テーブルをモニターできます。
この例では、データ所有者のロールにはすでに次の権限が付与されています。
分類するテーブルに対する OWNERSHIP。
テーブルを含むスキーマに対する OWNERSHIP。
スキーマとテーブルを含むデータベースに対する USAGE。
データ所有者ロールに SNOWFLAKE.CLASSIFICATION_ADMIN データベースロールを付与することで、データ所有者がテーブルを分類できるようにします。
データ所有者として、カスタム分類子インスタンスを保存するスキーマを作成します。
CREATE CUSTOM_CLASSIFIER コマンドを使用して、
data.classifiersスキーマにカスタム分類子インスタンスを作成します。オプションで、 検索パス を以下のように更新することができます:
クラスの新しいインスタンスを作成するときに、クラスの完全修飾名を指定する必要がないように、
SNOWFLAKE.DATA_PRIVACYを追加します。インスタンス上でメソッドを呼び出すときや、インスタンスでコマンドを使用するときに、インスタンスの完全修飾名を指定する必要がないように、
DATA.CLASSIFIERSを追加します。
SHOW CUSTOM_CLASSIFIER コマンドを使用して、作成した各インスタンスを一覧表示します。例:
戻り値:
インスタンスの custom_classifier !ADD_REGEX メソッドを呼び出して、列の ICD-10コードを識別するためのシステムタグと正規表現を指定します。この例の正規表現は、すべての可能な ICD-10コードに一致します。列名に一致する正規表現、
ICD.*、コメントはオプションです。戻り値:
Tip
カスタム分類子インスタンスに正規表現を追加する前に、正規表現をテストします。例:
このクエリでは、正規表現に一致する有効な値のみが返されます。クエリは
xyzなどの無効な値を返しません。詳細については、 文字列関数(正規表現) をご参照ください。
インスタンスの custom_classifier !LIST メソッドを呼び出して、インスタンスに追加した正規表現を検証します。
戻り値:
カテゴリを削除するには、インスタンスの custom_classifier !DELETE_CATEGORY メソッドを呼び出します。
テーブルを分類するために SYSTEM$CLASSIFY_SCHEMA ストアドプロシージャを呼び出します。
インスタンスが不要になった場合は、 DROP CUSTOM_CLASSIFIER コマンドを使用してカスタム分類子インスタンスをシステムから削除します。
カスタム分類子の監査¶
以下のクエリを使用して、カスタム分類子インスタンスの作成、インスタンスへの正規表現の追加、およびインスタンスの削除を監査できます。
カスタム分類子インスタンスの作成を監査するには、以下のクエリを使用します:
特定のインスタンスへの正規表現の追加を監査するには、次のクエリを使用し、
DB.SCH.MY_INSTANCEを監査したいインスタンス名に置き換えます:カスタム分類子インスタンスの削除を監査するには、以下のクエリを使用します: