为 Databricks 资产捆绑包中的资源设置权限
本文介绍如何为 Databricks 资产捆绑包中的 Azure Databricks 作业、Delta Live Tables 管道和 MLOps 堆栈设置权限。 请参阅什么是 Databricks 资产捆绑包?。
在 Azure Databricks 捆绑配置文件中,可以定义应用于捆绑包中定义的所有资源的权限,也可以定义一个或多个应用于特定资源的权限。
注意
权限不能重叠。 换句话说,不能在顶级 permissions
映射和 resources
映射中定义用户、组或服务主体的权限。
定义应用于所有资源的权限
可以定义权限以应用于使用顶级 permissions
映射在 resources
中定义的所有试验、作业、模型和管道。 请参阅权限。
Databricks 建议使用此方法来管理 Databricks 资产捆绑资源权限。
定义特定资源的权限
可以在 resources
中的试验、作业、模型或管道定义中使用 permissions
映射来为该资源定义一个或多个权限。
permissions
数组中的每个权限必须包含以下两个映射:
user_name
、group_name
或service_principal_name
,它们分别包含用户、组或服务主体的名称。level
,包含权限级别的名称。 每个资源允许的权限级别如下:- 试验:
CAN_EDIT
、CAN_MANAGE
和CAN_READ
。 - 作业:
CAN_MANAGE
、CAN_MANAGE_RUN
、CAN_VIEW
、IS_OWNER
。 - 模型:
CAN_EDIT
、CAN_MANAGE
、CAN_MANAGE_STAGING_VERSIONS
、CAN_MANAGE_PRODUCTION_VERSIONS
和CAN_READ
。 - 管道:
CAN_MANAGE
、CAN_RUN
、CAN_VIEW
和IS_OWNER
。
- 试验:
有关特定权限级别的信息,请参阅:
- 试验:MLFlow 试验 ACL
- 作业:作业 ACL
- 模型:MLFlow 模型 ACL
- 管道: 增量实时表管道 ACL
注意
资源允许的权限级别不一定应用于使用顶级 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"
}
],
"...": "..."
}
}
}
}