Настройка разрешений для ресурсов в пакетах ресурсов Databricks
В этой статье описывается, как задать разрешения для заданий Azure Databricks, конвейеров Delta Live Tables и MLOps Stacks в пакетах ресурсов Databricks. См. раздел "Что такое пакеты ресурсов Databricks?".
В файлах конфигурации пакета Azure Databricks можно определить разрешения для применения ко всем ресурсам, определенным в пакете, или определить одно или несколько разрешений для применения к определенным ресурсам.
Примечание.
Разрешения не могут перекрываться. Другими словами, разрешения для пользователя, группы или субъекта-службы нельзя определить как в сопоставлении верхнего уровня permissions
, так и в сопоставлении resources
.
Определение разрешений для применения ко всем ресурсам
Вы можете определить разрешения для применения ко всем экспериментам, заданиям, моделям и конвейерам, определенным в resources
сопоставлении верхнего уровня permissions
. Просмотр разрешений.
Databricks рекомендует этот подход для управления разрешениями ресурсов databricks Asset Bundles.
Определение разрешений для определенного ресурса
Сопоставление можно использовать 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_STAGING_VERSIONS
CAN_MANAGE
,CAN_MANAGE_PRODUCTION_VERSIONS
иCAN_READ
. - Конвейеры:
CAN_MANAGE
, ,CAN_VIEW
CAN_RUN
иIS_OWNER
.
- Эксперименты:
Дополнительные сведения о конкретных уровнях разрешений см. в следующем разделе:
- Эксперименты: списки ACL эксперимента MLflow
- Задания: списки управления доступом заданий
- Модели: списки ACL модели MLflow
- Конвейеры: списки управления доступом к конвейеру разностных динамических таблиц
Примечание.
Допустимые уровни разрешений для ресурсов не обязательно применяются к ресурсам с помощью сопоставления верхнего уровня 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"
}
],
"...": "..."
}
}
}
}