メインコンテンツまでスキップ

ABACポリシーの作成と管理

このページでは、 Unity CatalogでABACを作成、編集、表示、削除する方法について説明します。 ポリシーの概念の概要については、 「ABAC の中心的な概念」を参照してください。

要件

すべてのポリシー操作(作成、編集、削除、表示、説明)には、セキュリティ保護可能なオブジェクトまたはオブジェクトの所有権に対するMANAGE必要です。ポリシーを作成するには、以下のものも必要です。

  • Databricks Runtime 16.4 以降、またはサーバレス コンピュート。 「コンピュート要件」を参照してください。
  • フィルタリングまたはマスキングのロジックには、Unity Catalog でEXECUTEが設定されているユーザー定義関数 (UDF)、またはポリシー作成時にインラインで定義する SQL 関数を使用します。
  • 対象オブジェクトに適用される管理タグ。See 管理タグ.

ポリシーを作成する

カタログエクスプローラーUI、 CREATE POLICY SQLステートメント、またはDatabricks REST APIs 、SDK、 Terraformを使用して、 を作成できます。

ポリシーを作成するには、ポリシーが添付されているセキュリティ保護可能なオブジェクト(カタログ、スキーマ、またはテーブル)に対してMANAGE権限を持っているか、セキュリティ保護可能なオブジェクトを所有している必要があり、フィルタリングまたはマスキングのロジックを実装する UDF に対してEXECUTE権限を持っている必要があります。

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。

  2. ポリシーのスコープを決定するオブジェクト (カタログ、スキーマ、テーブルなど) を選択します。

  3. [ ポリシー ] タブをクリックします。

  4. [新しいポリシー ] をクリックします。

  5. ポリシー識別 セクションを記入してください。以下の表は、各項目をまとめたものです。

フィールド

説明

名前

ポリシーの名前。 同一のセキュリティ保護対象オブジェクトに定義されているすべてのポリシーの中で、一意である必要があります。

hide_eu_customers, mask_ssn

説明

任意。ポリシーの説明。監査ログに表示され、管理者がポリシーの意図を理解するのに役立ちます。

Restrict EU customer rows from US analysts, Mask SSN for all account users

  1. 「原則と範囲」の セクションを完成させてください。以下の表は、各項目をまとめたものです。

フィールド

説明

適用対象...

ユーザー、グループ、またはサービスプリンシパルはポリシーの対象となります。 これらのプリンシパルがスコープ内のテーブルを照会する場合、行フィルタまたは列マスクが適用されます。アカウント内のすべてのプリンシパルにポリシーを適用するには、 All account usersを選択します。

us_analysts, All account users

以下を除きます

校長はポリシーから免除されます。 免除対象のプリンシパルは、フィルタリングやマスキングの対象とならず、完全な未修正データを見ることができます。

admins, compliance_team

スコープ

ポリシーが適用される、セキュリティ保護可能なオブジェクト。このポリシーは、選択された範囲内のすべてのテーブルに対して評価を行います。カタログ、スキーマ、またはテーブルを選択してください。Databricksは、適用可能な最高レベルでポリシーを適用することを推奨します。

カタログprodを選択し、次にスキーマcustomersを選択します。

テーブルの条件

ポリシーが適用される範囲内のテーブルを決定します。 条件なし :ポリシーをスコープ内のすべてのテーブルに適用します。 これらのタグのいずれかに一致するテーブル : タグ キーまたはタグ キーと値のペアの指定されたリストにポリシーを適用します。 これらのいずれかに該当するテーブルは、ポリシーに合致する。 カスタム式に一致するテーブル : has_taghas_tag_valueを使用してブール式を作成し、より複雑な一致ロジックのためにANDOR 、およびNOTと組み合わせることができます。 式がTRUEと評価され、ポリシーに一致するテーブルにポリシーを適用します。対象となるテーブルが条件に一致しない場合、そのテーブルにはポリシーは適用されません。

これらのタグのいずれかに一致するテーブル を選択し、値highを持つタグ キーsensitivityを選択して、ポリシーを機密テーブルのみに制限します。

「プリンシパルとスコープ」セクションの ABAC ポリシー設定の例。 7. ポリシータイプ については、適用するアクセス制御の種類を選択してください。

オプション

説明

使用する場合

行フィルター

行フィルタポリシーを作成します。UDF各行を評価し、ブール値を返します。 UDFがFALSEを返す行は、クエリ結果から除外されます。

アクセス権限は各行の値によって決まります。例えば、地理的地域を含む列の値でフィルタリングする場合などです。

列マスク

列マスクポリシーを作成します。UDFは列の値を入力として受け取り、元の値またはマスクされた値を返します。戻り値の型はターゲットカラムのデータ型にキャスト可能である必要があります。

社会保障番号、電話番号、メールアドレスなどの機密性の高いフィールドは伏せ字にする必要がありますが、同時に、本人がテーブルを照会できるようにする必要があります。

  1. 次のいくつかのセクションは、選択した ポリシー タイプ によって異なります。 選択した項目に一致するセクションを展開してください。

行フィルター

行フィルター機能の セクションで、行フィルター機能の指定方法を選択します。

  • 既存のものを選択 : Unity Catalogに既に定義されているUDFを選択します。 UDF各行を評価し、ブール値を返します。 関数がFALSEを返す行は、クエリ結果から除外されます。UDFにはEXECUTEが必要です。
  • 作成 :行フィルタロジックとして使用するSQL関数を定義します。

行フィルタ機能セクションにおける、ABAC行フィルタポリシー設定の例。

[関数入力] セクションで、各関数の値を指定します。 各入力は、タグで一致する列、カスタム式で一致する列、または定数値のいずれかです。

機能入力セクションにおけるABAC設定例。

列マスク

「列条件」 セクションで、マスクする列を識別する方法を選択します。

  • これらのタグのいずれかに一致する列 : タグ キーのリストまたはタグ キーと値のペアを指定します。 これらのいずれかを含む列は、ポリシーによってマスクされます。
  • カスタム式に一致する列 : has_taghas_tag_valueを使用してブール式を作成し、より複雑な一致ロジックのためにANDOR 、およびNOTと組み合わせます。 式がTRUEと評価される列はマスクされます。

列条件セクションにおけるABAC列マスクポリシー設定の例。

次に、一致する列に適用する マスキング機能 を選択します。

  • 既存のものを選択 : Unity Catalogに既に定義されているUDFを選択します。 UDFは、元の値またはマスクされた値を返します。戻り値の型は、ターゲットカラムのデータ型にキャスト可能である必要があります。 UDFにはEXECUTE指定する必要があります。
  • 作成 :列マスキングロジックとして使用するSQL関数を定義します。

マスキング機能セクションにおける、ABAC列マスクポリシー設定の例。

[関数入力] セクションで、各追加関数の値を指定します。 各入力は、タグで一致する列、カスタム式で一致する列、または定数値のいずれかです。

この例では、定数値4を使用して社会保障番号の最後の4文字を表示します。

関数入力セクションにおけるABAC列マスクポリシー設定の例。

  1. ポリシーの作成 」をクリックします。

ポリシーを編集する

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。
  2. ポリシーが適用されるオブジェクトを選択してください。
  3. [ ポリシー ] タブをクリックします。
  4. 編集したいポリシーを選択してください。
  5. 変更したい項目を更新してください。説明、プリンシパル、ポリシータイプ、条件、および機能入力マッピングを変更できます。ポリシー名およびポリシーが適用される保護対象オブジェクトは編集できません。フィールドの説明については、 「ポリシーの作成」を参照してください。
  6. [ ポリシーの更新 ] をクリックします。

ポリシーを削除する

  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。
  2. ポリシーが適用されるオブジェクトを選択してください。
  3. [ ポリシー ] タブをクリックします。
  4. ポリシーを選択します。
  5. [ ポリシーの削除 ] をクリックします。

ポリシーを表示

SHOW POLICIESを使用して、セキュリティ保護可能なオブジェクトに定義されているポリシーを一覧表示します。SHOW EFFECTIVE POLICIES使用すると、テーブルに影響を与えるカタログレベルのポリシーなど、親スコープのポリシーも含めることができます。

SQL
SHOW [EFFECTIVE] POLICIES ON { CATALOG | SCHEMA | TABLE } securable_name

結果には、ポリシー名、ポリシーの種類、および各ポリシーが定義されているカタログ、スキーマ、またはテーブルが含まれます。

テーブルに適用されるポリシーを表示するのに、親カタログやスキーマに対する権限は必要ありません。これにより、テーブル管理者は、兄弟テーブルのポリシーへの読み取りアクセス権を持たなくても、適用されるルールを確認できます。

例:

SQL
SHOW EFFECTIVE POLICIES ON SCHEMA prod.customers;

ポリシー名

ポリシータイプ

カタログ

スキーマ

Comment

hide_eu_customers

行フィルター

製品

顧客

マスク_ssn

列マスク

製品

顧客

ポリシーを説明する

特定のポリシーの詳細を表示するには、 DESCRIBE POLICYを使用してください。対象のセキュリティ保護可能なオブジェクトまたはオブジェクトの所有権に対してMANAGEが必要です。

SQL
{ DESC | DESCRIBE } POLICY policy_name ON { CATALOG | SCHEMA | TABLE } securable_name

結果には、ポリシーのプロパティがキーと値のペアとして表示されます。これには、名前、保護可能なオブジェクトの種類、保護可能なオブジェクトの名前、プリンシパル、条件、関数名、タイムスタンプなどが含まれます。

例:

SQL
DESCRIBE POLICY hide_eu_customers ON SCHEMA prod.customers;

情報名

info_value

名前

hide_eu_customers

セキュリティ保護可能なタイプ

スキーマ

セキュア可能な

製品の顧客

プリンシパルへ

米国のアナリスト

セキュリティ保護可能なタイプの場合

テーブル

列を一致させる

has_tag('geo_region') AS region

ポリシーの種類

行フィルター

関数名

prod.顧客.non_eu_region

列の使用

リージョン

監査ログ

Databricks 、管理タグと ABAC ポリシーの操作を監査ログ システム テーブルに記録します。 以下にクエリの例を示します。詳細については、 「監査ログ」を参照してください。

SQL
-- All tag assignment and deletion events from the audit log
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.workspace_id,
request_params.metastore_id,
request_params.tag_assignment,
response.status_code,
source_ip_address
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN (
'createEntityTagAssignment',
'deleteEntityTagAssignment'
)
ORDER BY event_time DESC;

-- All ABAC policy CRUD operations
SELECT
event_time,
action_name,
user_identity.email AS actor,
request_params.name AS policy_name,
request_params.on_securable_type,
request_params.on_securable_fullname,
request_params.policy_info,
response.status_code
FROM system.access.audit
WHERE service_name = 'unityCatalog'
AND action_name IN ('createPolicy', 'deletePolicy', 'getPolicy', 'listPolicies')
ORDER BY event_time DESC;

詳細情報