Поделиться через


Настройка разрешений для ресурсов в пакетах ресурсов 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_EDITCAN_MANAGE и CAN_READ.
    • Задания: CAN_MANAGE, CAN_MANAGE_RUN, CAN_VIEWи IS_OWNER.
    • Модели: CAN_EDIT, , CAN_MANAGE_STAGING_VERSIONSCAN_MANAGE, CAN_MANAGE_PRODUCTION_VERSIONSи CAN_READ.
    • Конвейеры: CAN_MANAGE, , CAN_VIEWCAN_RUNи IS_OWNER.

Дополнительные сведения о конкретных уровнях разрешений см. в следующем разделе:

Примечание.

Допустимые уровни разрешений для ресурсов не обязательно применяются к ресурсам с помощью сопоставления верхнего уровня 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"
          }
        ],
        "...": "..."
      }
    }
  }
}