在 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_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
- 管線: Delta Live Tables 管線 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"
}
],
"...": "..."
}
}
}
}