共用方式為


在 Databricks Asset Bundles 中設定資源的權限

本文說明如何在 Databricks 資產組合設定 Azure Databricks 作業、Delta Live Tables 管線和 MLOps Stack 的許可權。 請參閱什麼是 Databricks Asset Bundles?

在 Azure Databricks 套件組合組態檔中,您可以定義許可權以套用至套件組合中定義的所有資源,也可以定義一或多個要套用至特定資源的許可權。

注意

許可權無法重疊。 換句話說,使用者、群組或服務主體的許可權不能在最上層 permissions 對應和對應中 resources 定義。

定義要套用至所有資源的許可權

您可以定義許可權,以套用至使用最上層permissions對應定義resources的所有實驗、作業、模型和管線。 請參閱 許可權

Databricks 建議使用此方法來管理 Databricks 資產套件組合資源許可權。

定義特定資源的許可權

您可以使用 permissions 中的實驗、作業、模型或管線定義 resources 中的對應來定義該資源的一或多個許可權。

對應中的每個 permissions 權限都必須包含下列兩個對應:

  • user_namegroup_name、 或 service_principal_name,分別具有使用者、群組或服務主體的名稱。
  • level,具有許可權等級的名稱。 每個資源允許的權限等級如下:
    • 實驗: CAN_EDITCAN_MANAGECAN_READ
    • 工作: CAN_MANAGECAN_MANAGE_RUNCAN_VIEW、 和 IS_OWNER
    • 模型: CAN_EDITCAN_MANAGECAN_MANAGE_STAGING_VERSIONSCAN_MANAGE_PRODUCTION_VERSIONS、 和 CAN_READ
    • 管線: CAN_MANAGECAN_RUNCAN_VIEWIS_OWNER

如需特定許可權等級的相關信息,請參閱:

注意

資源允許的許可權等級不一定使用最上層 permissions 對應套用至資源。 如需對應的有效許可權等級 permissions ,請參閱 許可權

下列語法示範如何在最上層 resources 對應或 resources 目標內的對應中宣告每個資源類型的多個許可權(省略號表示省略的內容,以求簡潔):

# ...
resources:
  experiments:
    <some-programmatic-identifier-for-this-experiment>:
      # ...
      permissions:
        - user_name: <user-name> # Or:
          group_name: <group-name> # Or:
          service_principal_name: <service-principal-name>
          level: <permission-level>
      # ...
  jobs:
    <some-programmatic-identifier-for-this-job>:
      # ...
      permissions:
        - user_name: <user-name> # Or:
          group_name: <group-name> # Or:
          service_principal_name: <service-principal-name>
          level: <permission-level>
      # ...
  models:
    <some-programmatic-identifier-for-this-model>:
      # ...
      permissions:
        - user_name: <user-name> # Or:
          group_name: <group-name> # Or:
          service_principal_name: <service-principal-name>
          level: <permission-level>
      # ...
  pipelines:
    <some-programmatic-identifier-for-this-pipeline>:
      # ...
      permissions:
        - user_name: <user-name> # Or:
          group_name: <group-name-1> # Or:
          service_principal_name: <service-principal-name>
          level: <permission-level>
      # ...

targets:
  <some-programmatic-identifier-for-this-target>:
    resources:
      experiments:
        <some-programmatic-identifier-for-this-experiment>:
          # ...
          permissions:
            - user_name: <user-name> # Or:
              group_name: <group-name> # Or:
              service_principal_name: <service-principal-name>
              level: <permission-level>
          # ...
      jobs:
        <some-programmatic-identifier-for-this-job>:
          # ...
          permissions:
            - user_name: <user-name> # Or:
              group_name: <group-name> # Or:
              service_principal_name: <service-principal-name>
              level: <permission-level>
          # ...
      models:
        <some-programmatic-identifier-for-this-model>:
          # ...
          permissions:
            - user_name: <user-name> # Or:
              group_name: <group-name> # Or:
              service_principal_name: <service-principal-name>
              level: <permission-level>
          # ...
      pipelines:
        <some-programmatic-identifier-for-this-pipeline>:
          # ...
          permissions:
            - user_name: <user-name> # Or:
              group_name: <group-name> # Or:
              service_principal_name: <service-principal-name>
              level: <permission-level>
          # ...
    # ...

在最上層 resources 對應中針對資源宣告的任何許可權,會結合針對個別目標中針對該相同 resources 對應宣告的任何許可權。 例如,假設在最上層和目標中的相同資源有下列 resources 對應(省略的省略內容,以求簡潔):

bundle:
  name: my-bundle

resources:
  jobs:
    my-job:
      # ...
      permissions:
        - user_name: someone@example.com
          level: CAN_VIEW
      # ...

targets:
  dev:
    # ...
    resources:
      jobs:
        my-job:
          # ...
          permissions:
            - user_name: someone@example.com
              level: CAN_RUN
          # ...

當您針對此範例執行 databricks bundle validate 時,產生的圖表如下所示(省略的省略內容,以求簡潔):

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "permissions": [
          {
            "level": "CAN_VIEW",
            "user_name": "someone@example.com"
          },
          {
            "level": "CAN_RUN",
            "user_name": "someone@example.com"
          }
        ],
        "...": "..."
      }
    }
  }
}