本文介绍如何在 Databricks 资产捆绑包中设置资源的权限。 有关捆绑包中支持的资源的信息,请参阅 Databricks 资产捆绑包资源。
在 Azure Databricks 捆绑配置文件中,可以在顶层定义权限以应用于捆绑包中定义的所有资源,也可以定义应用于特定资源的权限。
注意
权限不能重叠。 换句话说,不能在顶级 permissions 映射和 resources 映射中定义用户、组或服务主体的权限。
定义应用于所有资源的权限
可以定义权限,以应用于使用顶级resources映射定义permissions的所有受支持的资源。 Databricks 建议使用此方法以管理 Databricks 资产捆绑资源权限。
权限定义允许的权限 user_name级别, group_name或 service_principal_name。 允许的顶级权限级别是 CAN_VIEW、CAN_MANAGE 和 CAN_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_namegroup_nameservice_principal_name或分别设置为用户、组或服务主体的名称。
- 
              level,设置为权限级别的名称。 每个资源允许的权限级别如下:
重要
资源允许的权限级别不一定应用于使用顶级 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,则授予捆绑包中指定的资源、工作区目录和文件的权限将按以下顺序排列:
例如,在以下配置中,组 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:
          # ...