Ange behörigheter för resurser i Databricks-tillgångspaket
Den här artikeln beskriver hur du anger behörigheter för Azure Databricks-jobb, Delta Live Tables-pipelines och MLOps Stacks i Databricks Asset Bundles. Se Vad är Databricks-tillgångspaket?.
I Azure Databricks-paketkonfigurationsfiler kan du definiera behörigheter som ska tillämpas på alla resurser som definierats i paketet, eller så kan du definiera en eller flera behörigheter som ska tillämpas på specifika resurser.
Kommentar
Behörigheter får inte överlappa varandra. Med andra ord kan behörigheter för en användare, grupp eller tjänstens huvudnamn inte definieras i både mappningen på den översta nivån permissions
och i mappningen resources
.
Definiera behörigheter som ska tillämpas på alla resurser
Du kan definiera behörigheter som ska tillämpas på alla experiment, jobb, modeller och pipelines som definieras i resources
med hjälp av mappningen på den översta nivån permissions
. Se behörigheter.
Databricks rekommenderar den här metoden för att hantera resursbehörigheter för Databricks-tillgångspaket.
Definiera behörigheter för en specifik resurs
Du kan använda mappningen permissions
i ett experiment, ett jobb, en modell eller en pipelinedefinition i resources
för att definiera en eller flera behörigheter för den resursen.
Varje behörighet i mappningen permissions
måste innehålla följande två mappningar:
- Antingen
user_name
,group_name
ellerservice_principal_name
, med namnet på användaren, gruppen eller tjänstens huvudnamn. -
level
, med namnet på behörighetsnivån. Tillåtna behörighetsnivåer för varje resurs är följande:- Experiment:
CAN_EDIT
,CAN_MANAGE
ochCAN_READ
. - Jobb:
CAN_MANAGE
,CAN_MANAGE_RUN
,CAN_VIEW
ochIS_OWNER
. - Modeller:
CAN_EDIT
,CAN_MANAGE
,CAN_MANAGE_STAGING_VERSIONS
,CAN_MANAGE_PRODUCTION_VERSIONS
ochCAN_READ
. - Pipelines:
CAN_MANAGE
,CAN_RUN
,CAN_VIEW
ochIS_OWNER
.
- Experiment:
Information om specifika behörighetsnivåer finns i:
- Experiment: ACL:er för MLflow-experiment
- Jobb: Jobb-ACL:er
- Modeller: ACL:er för MLflow-modell
- Pipelines: ACL:er för Delta Live Tables-pipelines
Kommentar
Tillåtna behörighetsnivåer för resurser kan inte nödvändigtvis tillämpas på resurser med hjälp av mappningen på den översta nivån permissions
. Giltiga behörighetsnivåer för mappningen finns i permissions
behörigheter.
Följande syntax visar hur du deklarerar flera behörigheter för varje resurstyp, antingen i mappningen på den översta nivån resources
eller i en resources
mappning inom ett mål (ellipser anger utelämnat innehåll, för korthet):
# ...
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>
# ...
# ...
Alla behörigheter som deklareras för en resurs i toppnivåmappningen resources
kombineras med alla behörigheter som deklareras för samma resources
mappning i ett enskilt mål. Med tanke på följande resources
mappning för samma resurs på både den översta nivån och i ett mål (ellipser anger utelämnat innehåll, för korthet):
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
# ...
När du kör databricks bundle validate
för det här exemplet är den resulterande grafen följande (ellipser indikerar utelämnat innehåll, för korthet):
{
"...": "...",
"resources": {
"jobs": {
"my-job": {
"permissions": [
{
"level": "CAN_VIEW",
"user_name": "someone@example.com"
},
{
"level": "CAN_RUN",
"user_name": "someone@example.com"
}
],
"...": "..."
}
}
}
}