ポリシーを作成する

適用対象:はい 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 ポリシーはカタログまたはスキーマ上で定義できます。

パラメーター

  • policy_name

    ポリシーの名前。 名前のスコープは、ポリシーが定義されているセキュリティ保護可能なセキュリティ保護可能なリソースです。 同じ名前のポリシーが既に存在し、 OR REPLACE が指定されていない場合、Azure Databricks によって POLICY_ALREADY_EXISTSが発生します。

  • catalog_name

    ポリシーが定義されているカタログの名前。 セキュリティ保護可能な種類がポリシーでサポートされていない場合、Azure Databricks によって POLICY_ON_SECURABLE_TYPE_NOT_SUPPORTEDが発生します。

  • schema_name

    ポリシーが定義されているスキーマの名前。

  • table_name

    ポリシーが定義されているテーブルの名前。

  • 説明

    ポリシーの省略可能な文字列コメント。

  • function_name

    行フィルターまたは列マスクに使用される UDF の名前。

  • privilege

    grant_policy_bodyでは、契約に合致する各担保資産に対して特権を付与します。 有効な特権は grant_target_typeに依存します。 「サポートされたセキュアブルの種類と権限」を参照してください。

  • grant_target_type

    grant_policy_bodyでは、付与された特権が適用される保障対象の種類が重要です。 複数形を使いましょう: MODELSMODEL SERVICESMODEL PROVIDER SERVICESMCP SERVICES、または AGENT SERVICESMODEL_SERVICESのような下線付き形式も受け入れられます。 単数形は受け入れられません。

  • principal

    ユーザー、グループ、またはサービス プリンシパル名。 TO後に複数のプリンシパルを一覧表示できます。 EXCEPTの後に一覧表示されるプリンシパルは、ポリシーから除外されます。

  • 条件

    WHEN は、セキュアラブルのタグ、クエリユーザーのアイデンティティ属性、またはリクエストの文脈に基づいてポリシーが適用されるかどうかを決定するブール式です。

    MATCH COLUMNS タグに基づいて列をマッチングするブール式(例: has_tag('pii'))です。

    条件は制御面で評価されます。 以下の関数が条件でサポートされます:

    • タグ機能 (has_tag() および has_tag_value()): WHENMATCH COLUMNSの両方でサポートされています。 WHENで使用される場合、テーブルに直接設定されたタグや親カタログやスキーマから継承されたタグをチェックします。 MATCH COLUMNSで使用する場合は、列のみに直接設定されているタグをチェックします。 以前の camelCase フォーム (hasTaghasTagValue) は、下位互換性のために引き続き機能します。
    • アイデンティティ属性関数 (has_identity_attribute_value() および has_identity_attribute_tag_match()):カラムマスクポリシーの WHEN 節でサポートされており、クエリを実行するユーザーの アイデンティティ属性 を評価します。 GRANTDENY政策、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');