適用対象:
Databricks SQL
Databricks Runtime 16.4以降
Unity Catalogのみ
セキュリティ保護可能なリソースに名前付きポリシーを作成します。 ポリシーは行フィルター、カラムマスク、 またはABAC GRANT ポリシーのいずれかです。 行フィルターやカラムマスクはカタログ、スキーマ、テーブルに適用され、Databricks Runtime 16.4以降で利用可能です。 ABACの GRANT ポリシーはカタログやスキーマに適用され、対象となるセキュアラブルに動的に権限を付与します。 ポリシー名のスコープは、ポリシーが定義されているセキュリティ保護可能なリソースに設定されます。
このステートメントを実行するには、ターゲットのセキュリティ保護可能なリソースに対する MANAGE 特権を持っているか、その所有者である必要があります。
SQLでABAC GRANT ポリシーを作成、変更、または削除するにはDatabricks Runtime 18 LTS以上が必要です。 SQLウェアハウスでは、サポートはウェアハウスのリリースチャネルに依存します。 コンピューティング 要件を参照してください。
Note
Databricks Runtime 18 は、Databricks Runtime 18.0、18.1、および 18.2 より新しいです。 以前に後の番号付きバージョンとして出荷されていた機能は、代わりに Databricks Runtime 18 の日付の更新プログラムとして出荷されるようになりました。 詳細については、「 統合リリース ノートについて」を参照してください。
構文
CREATE [ OR REPLACE ] POLICY policy_name
ON { CATALOG catalog_name | SCHEMA schema_name | TABLE table_name }
[ COMMENT description ]
{ row_filter_body | column_mask_body | grant_policy_body }
row_filter_body
ROW FILTER function_name
TO principal [, ...]
[ EXCEPT principal [, ...] ]
FOR TABLES
[ WHEN condition ]
[ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
[ USING COLUMNS ( function_arg [, ...] ) ]
column_mask_body
COLUMN MASK function_name
TO principal [, ...]
[ EXCEPT principal [, ...] ]
FOR TABLES
[ WHEN condition ]
[ MATCH COLUMNS condition [ [ AS ] alias ] [, ...] ]
ON COLUMN alias
[ USING COLUMNS ( function_arg [, ...] ) ]
grant_policy_body
TO principal [, ...]
[ EXCEPT principal [, ...] ]
GRANT privilege [, ...]
FOR grant_target_type
[ WHEN condition ]
行フィルターおよびカラムマスクポリシーは、カタログ、スキーマ、またはテーブル上で定義できます。 GRANT ポリシーはカタログまたはスキーマ上で定義できます。
パラメーター
-
ポリシーの名前。 名前のスコープは、ポリシーが定義されているセキュリティ保護可能なセキュリティ保護可能なリソースです。 同じ名前のポリシーが既に存在し、
OR REPLACEが指定されていない場合、Azure Databricks によって POLICY_ALREADY_EXISTSが発生します。 -
ポリシーが定義されているカタログの名前。 セキュリティ保護可能な種類がポリシーでサポートされていない場合、Azure Databricks によって POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTEDが発生します。
-
ポリシーが定義されているスキーマの名前。
-
ポリシーが定義されているテーブルの名前。
説明
ポリシーの省略可能な文字列コメント。
-
行フィルターまたは列マスクに使用される UDF の名前。
privilege
grant_policy_bodyでは、契約に合致する各担保資産に対して特権を付与します。 有効な特権はgrant_target_typeに依存します。 「サポートされたセキュアブルの種類と権限」を参照してください。grant_target_type
grant_policy_bodyでは、付与された特権が適用される保障対象の種類が重要です。 複数形を使いましょう:MODELS、MODEL SERVICES、MODEL PROVIDER SERVICES、MCP SERVICES、またはAGENT SERVICES。MODEL_SERVICESのような下線付き形式も受け入れられます。 単数形は受け入れられません。principal
ユーザー、グループ、またはサービス プリンシパル名。
TO後に複数のプリンシパルを一覧表示できます。EXCEPTの後に一覧表示されるプリンシパルは、ポリシーから除外されます。-
WHENは、セキュアラブルのタグ、クエリユーザーのアイデンティティ属性、またはリクエストの文脈に基づいてポリシーが適用されるかどうかを決定するブール式です。MATCH COLUMNSタグに基づいて列をマッチングするブール式(例:has_tag('pii'))です。条件は制御面で評価されます。 以下の関数が条件でサポートされます:
-
タグ機能 (
has_tag()およびhas_tag_value()):WHENとMATCH COLUMNSの両方でサポートされています。WHENで使用される場合、テーブルに直接設定されたタグや親カタログやスキーマから継承されたタグをチェックします。MATCH COLUMNSで使用する場合は、列のみに直接設定されているタグをチェックします。 以前の camelCase フォーム (hasTag、hasTagValue) は、下位互換性のために引き続き機能します。 -
アイデンティティ属性関数 (
has_identity_attribute_value()およびhas_identity_attribute_tag_match()):カラムマスクポリシーのWHEN節でサポートされており、クエリを実行するユーザーの アイデンティティ属性 を評価します。GRANTやDENY政策、MATCH COLUMNSでも支持されていません。 クエリ ユーザーの属性に基づくカラムのマスクをご参照ください。 -
コンテキスト属性関数 (
has_context_attribute()およびhas_context_attribute_value()):行フィルターおよびカラムマスクポリシーのWHEN節でサポートされており、呼び出しアプリケーションなどのリクエストのコンテキストを評価します。MATCH COLUMNSではサポートされていません。 「 ユーザーを代表して行動する外部エージェントのアクセス制限」を参照してください。
条件が無効な場合、Azure Databricks によって UC_INVALID_POLICY_CONDITIONが発生します。
-
タグ機能 (
alias
MATCH COLUMNSでは、一致する列の省略可能な識別子。 エイリアスは、USING COLUMNS(行フィルター) またはON COLUMNおよびUSING COLUMNS(列マスク) で参照できます。function_arg
USING COLUMNSでは、各引数は定数式またはMATCH COLUMNSのエイリアスです。 引数は、ポリシー関数に順番に渡されます。 オプションがポリシーの種類と一致しない場合、Azure Databricks によって UC_POLICY_TYPE_OPTIONS_MISMATCHが発生します。
例示
次の例では、列マスク ポリシーを作成します。
> CREATE FUNCTION ssn_to_last_nr (ssn STRING, nr INT) RETURNS STRING
RETURN right(ssn, nr);
> CREATE POLICY ssn_mask
ON CATALOG employees
COLUMN MASK ssn_to_last_nr
TO 'All Users' EXCEPT 'HR admins'
FOR TABLES
MATCH COLUMNS has_tag('ssn') AS ssn
ON COLUMN ssn
USING COLUMNS (4);
次の例では、行フィルター ポリシーを作成します。
> CREATE FUNCTION non_eu_region (geo_region STRING) RETURNS BOOLEAN
RETURN geo_region <> 'eu';
> CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Hide European customers from sensitive tables'
ROW FILTER non_eu_region
TO analysts
FOR TABLES
WHEN has_tag_value('sensitivity', 'high')
MATCH COLUMNS has_tag('geo_region') AS region
USING COLUMNS (region);
以下の例は、Anthropic作成されたすべてのモデルサービスに対してEXECUTEを与えるABACGRANTポリシーを作成します。
> CREATE POLICY grant_anthropic_model_services
ON SCHEMA system.ai
COMMENT 'Grant EXECUTE on Anthropic model services'
TO data_scientists
EXCEPT contractors
GRANT EXECUTE FOR MODEL SERVICES
WHEN has_tag_value('ai.model_creator', 'anthropic');