属性ベースのアクセス制御 (ABAC) ポリシーの作成と管理
ベータ版
この機能は ベータ版です。
このページでは、Unity Catalog で行フィルターと列マスク ポリシーを構成する方法について説明します。属性ベースのアクセス制御 (ABAC) とポリシーの詳細については、「属性ベースのアクセス制御 (ABAC)Unity Catalog」を参照してください。オブジェクトにタグを適用するには、「 タグ ポリシー 」と「 Unity Catalog のセキュリティ保護可能なオブジェクトにタグを適用する」を参照してください。
ABACを有効にする
ABAC ベータ版は、ワークスペース レベルで有効になります。Databricks は、共有カタログにアクセスする各ワークスペースでも ABAC が有効になっていない限り、共有カタログへの読み取り操作に ABAC を適用できません。
ABAC ポリシーを作成および管理するには、ABAC ポリシーとタグ ポリシーの両方のベータ版を有効にする必要があります。
ABAC ベータ版を有効にするには、次の手順を実行します。
- ワークスペース管理者として、Databricks ワークスペースの上部バーでユーザー名をクリックします。
- メニューから「 プレビュー 」を選択します。
- 「属性ベースのアクセス制御 」トグルを 「オン」 に設定します。
タグポリシーのベータ版を有効にするには、「 タグポリシーの有効化」を参照してください。
オブジェクトに対するポリシーの作成
必要な権限: オブジェクトまたはオブジェクトの所有者に対する MANAGE
。
- Catalog Explorer
- SQL
-
Databricks ワークスペースで、
カタログ をクリックします。
-
ポリシーのスコープを決定するオブジェクト (カタログ、スキーマ、テーブルなど) を選択します。
-
[ ポリシー ] タブをクリックします。
-
[新しいポリシー ] をクリックします。
-
[全般] に、ポリシーの名前と説明を入力します。
-
プリンシパル では:
- [ 適用先] で、ポリシーが管理するプリンシパルを検索して選択します。
- [除外] で、ポリシーから除外するプリンシパルを検索して選択します。たとえば、ポリシーが適用されるグループに属するユーザーを除外できます。
-
「タイプとターゲット 」で、次の操作を行います。
- [ポリシーの種類 ] で、[ 行フィルター ] または [列マスク ] を選択します。
- [ポリシー ターゲット ] で、ポリシーの範囲を選択します。これは、カタログ全体やスキーマなどの広範なスコープにすることも、その中の特定のテーブルや列などのより狭いスコープにすることもできます。
- [テーブル レベルの条件 ] で、このポリシーを適用するテーブルに一致する条件を指定します。たとえば、
hasTag("tag")
やhasTagValue("tag", "value")
などです。
-
[関数] で、このポリシーで使用する関数を選択し、必要なパラメーターを入力します。
-
「 ポリシーの作成 」をクリックします。
ポリシーを作成するための一般的な構文を次に示します。
CREATE POLICY <policy_name>
ON <securable_type> <securable_name>
COMMENT '<policy_description>'
-- One of the following:
ROW FILTER <udf_name>
| COLUMN MASK <udf_name> ON COLUMN <target_column>
TO <principal_name>[, <principal_name>, ...]
[EXCEPT <principal_name>[, <principal_name>, ...]]
FOR TABLES
[WHEN has_tag('<key>') OR has_tag_value('<key>', '<value>')]
MATCH COLUMNS has_tag('<key>') OR has_tag_value('<key>', '<value>') AS <alias>
USING COLUMNS <alias>[, <alias>, ...];
この例では、米国を拠点とするアナリストによるクエリからヨーロッパの顧客の行を除外する行フィルタポリシーを定義しています。
CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Hide rows with European customers from sensitive tables'
ROW FILTER non_eu_region
TO us_analysts
FOR TABLES
MATCH COLUMNS
hasTag('geo_region') AS region
USING COLUMNS (region);
この例では、米国のアナリストから社会保障番号を非表示にする列マスク ポリシーを定義します ( admins
グループ内のアナリストを除く)。
CREATE POLICY mask_SSN
ON SCHEMA prod.customers
COMMENT 'Mask social security numbers'
COLUMN MASK mask_SSN
TO us_analysts
EXCEPT admins
FOR TABLES
MATCH COLUMNS
hasTagValue('pii', 'ssn') AS ssn
ON COLUMN ssn;
タグ データはグローバルにレプリケートできます。リソースのセキュリティを損なう可能性のあるタグ名や値は使用しないでください。たとえば、個人情報や機密情報を含むタグ名は使用しないでください。
ポリシーの編集
必要な権限: オブジェクトまたはオブジェクトの所有者に対する MANAGE
。
- Catalog Explorer
- SQL
- Databricks ワークスペースで、
カタログ をクリックします。
- ポリシーのスコープを決定するオブジェクト (カタログ、スキーマ、テーブルなど) を選択します。
- [ ポリシー ] タブをクリックします。
- ポリシーを選択し、編集します。
- [ ポリシーの更新 ] をクリックします。
REPLACE POLICY <policy_name>
ON <securable_type> <securable_name>
COMMENT '<policy_description>'
-- One of the following:
ROW FILTER <udf_name>
| COLUMN MASK <udf_name> ON COLUMN <target_column>
TO <principal_name>[, <principal_name>, ...]
[EXCEPT <principal_name>[, <principal_name>, ...]]
FOR TABLES
[WHEN has_tag('<key>') OR has_tag_value('<key>', '<value>')]
MATCH COLUMNS has_tag('<key>') OR has_tag_value('<key>', '<value>') AS <alias>
USING COLUMNS <alias>[, <alias>, ...];
ポリシーを削除する
必要な権限: オブジェクトまたはオブジェクトの所有者に対する MANAGE
。
- Catalog Explorer
- SQL
- Databricks ワークスペースで、
カタログ をクリックします。
- ポリシーのスコープを決定するオブジェクト (カタログ、スキーマ、テーブルなど) を選択します。
- [ ポリシー ] タブをクリックします。
- ポリシーを選択します。
- [ ポリシーの削除 ] をクリックします。
DROP POLICY <policy_name> ON <securable_type> <securable_name>