在 Databricks Asset Bundles 中設定資源的權限
本文說明如何在 Databricks 資產套件組合中設定 Azure Databricks 作業、DLT 管線和 MLOps Stack 的許可權。 請參閱什麼是 Databricks Asset Bundles?。
在 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
- 作業: 作業存取控制列表
- 模型: MLflow 模型 ACL
- 管線:DLT 管線 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"
}
],
"...": "..."
}
}
}
}