Compartir a través de

为 Databricks 资产捆绑包中的资源设置权限

本文介绍如何在 Databricks 资产捆绑包中设置资源的权限。 有关捆绑包中支持的资源的信息,请参阅 Databricks 资产捆绑包资源

在 Azure Databricks 捆绑配置文件中,可以在顶层定义权限以应用于捆绑包中定义的所有资源,也可以定义应用于特定资源的权限。

注意

权限不能重叠。 换句话说,不能在顶级 permissions 映射和 resources 映射中定义用户、组或服务主体的权限。

定义应用于所有资源的权限

可以定义权限,以应用于使用顶级resources映射定义permissions的所有受支持的资源。 Databricks 建议使用此方法以管理 Databricks 资产捆绑资源权限。

权限定义允许的权限 user_name级别, group_nameservice_principal_name。 允许的顶级权限级别是 CAN_VIEWCAN_MANAGECAN_RUN。 有关顶级 permissions 映射的详细信息,请参阅 权限

以下示例设置目标的 dev 顶级权限。 用户 someone@example.com 将拥有 CAN_RUN 以下 my-job权限:

bundle:
  name: my-bundle

resources:
  jobs:
    my-job:
      # ...

targets:
  dev:
    # ...
    permissions:
      - user_name: someone@example.com
        level: CAN_RUN

定义特定资源的权限

可以使用 permissions 仪表板、试验、作业、模型或管道定义中的 resources 映射来定义该资源的一个或多个权限。

映射中的每个 permissions 权限都必须包括以下内容:

  • user_name group_name service_principal_name或分别设置为用户、组或服务主体的名称。
  • level,设置为权限级别的名称。 每个资源允许的权限级别如下:
    • 仪表板CAN_EDITCAN_MANAGECAN_VIEWCAN_READ
    • 试验CAN_EDITCAN_MANAGECAN_READ
    • 作业CAN_MANAGECAN_MANAGE_RUNCAN_VIEWIS_OWNER
    • 模型CAN_EDIT、、CAN_MANAGECAN_MANAGE_STAGING_VERSIONSCAN_MANAGE_PRODUCTION_VERSIONSCAN_READ
    • 管道CAN_MANAGECAN_RUNCAN_VIEWIS_OWNER

重要

资源允许的权限级别不一定应用于使用顶级 permissions 映射的资源。 有关顶级 permissions 映射的有效权限级别,请参阅 权限

以下语法演示如何在顶级 resources 映射和目标中的映射中 resources 声明资源类型(在此示例中为管道)的权限:

# ...
resources:
  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:
      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:
        - group_name: test-group
          level: CAN_VIEW
      # ...

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

为此示例运行 databricks bundle validate 时,生成的图形如下所示:

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

权限优先顺序

如果您在捆绑配置中的多个位置定义了 permissions,则授予捆绑包中指定的资源、工作区目录和文件的权限将按以下顺序排列:

  1. 为目标部署中的资源定义的权限

  2. 为目标部署定义的权限

  3. 捆绑包中为资源定义的权限

  4. 捆绑包顶级权限中定义的权限

例如,在以下配置中,组 test-group 将在 CAN_MANAGE 目标中具有作业的 dev 权限,但在 CAN_MANAGE_RUN 目标中具有作业的 prod 权限:

bundle:
  name: my-bundle

permissions:
  - group_name: test-group
    level: CAN_VIEW

resources:
  jobs:
    my-job:
      # ...
      permissions:
        - group_name: test-group
          level: CAN_MANAGE_RUN
      # ...

targets:
  dev:
    # ...
    resources:
      jobs:
        my-job:
          # ...
          permissions:
            - group_name: test-group
              level: CAN_MANAGE
          # ...
  prod:
    # ...
    resources:
      jobs:
        my-job:
          # ...