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


Настройка разрешений для ресурсов в пакетах активов Databricks

В этой статье описывается, как задать разрешения для ресурсов в пакетах ресурсов Databricks. Сведения о ресурсах, поддерживаемых в пакетах, см. в статье Databricks Asset Bundles.

В файлах конфигурации пакета Azure Databricks можно определить разрешения на верхнем уровне для применения ко всем ресурсам, определенным в пакете, или определить разрешения для применения к определенным ресурсам.

Примечание.

Разрешения не могут перекрываться. Другими словами, разрешения для пользователя, группы или субъекта-службы нельзя определить как в сопоставлении верхнего уровня permissions , так и в сопоставлении resources .

Определение разрешений для применения ко всем ресурсам

Вы можете определить разрешения для применения ко всем поддерживаемым ресурсам, определенным в resources сопоставлении верхнего уровня permissions . Databricks рекомендует этот подход для управления разрешениями ресурсов databricks Asset Bundles.

Разрешения определяют допустимый уровень разрешений для user_nameилиgroup_nameservice_principal_name. Допустимые уровни разрешений верхнего уровня: CAN_VIEWи CAN_MANAGECAN_RUN. Дополнительные сведения о permissions верхнего уровня см. в разделе "Разрешения".

В следующем примере задаются разрешения верхнего уровня для целевого dev объекта. У пользователя someone@example.com будут CAN_RUN разрешения на my-job:

bundle:
  name: my-bundle

resources:
  jobs:
    my-job:
      # ...

targets:
  dev:
    # ...
    permissions:
      - user_name: someone@example.com
        level: CAN_RUN

Определение разрешений для определенного ресурса

Сопоставление можно использовать permissions на панели мониторинга, эксперименте, задании, модели или определении конвейера для resources определения одного или нескольких разрешений для этого ресурса.

Каждое разрешение в сопоставлении permissions должно содержать следующее:

Это важно

Допустимые уровни разрешений для ресурсов не всегда могут быть применены к ресурсам через топ-уровневое отображение permissions. Допустимые уровни разрешений для сопоставления верхнего уровня permissions см. в разделе "Разрешения".

В следующем синтаксисе показано, как объявить разрешения для типа ресурса (в этом примере конвейеры) в сопоставлении верхнего уровня resources и в resources сопоставлении в целевом объекте:

# ...
resources:
  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:
      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:
        - group_name: test-group
          level: CAN_VIEW
      # ...

targets:
  dev:
    # ...
    resources:
      jobs:
        my-job:
          # ...
          permissions:
            - user_name: someone@example.com
              level: CAN_MANAGE_RUN
          # ...

При запуске databricks bundle validate для этого примера результирующий граф выглядит следующим образом:

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "permissions": [
          {
            "level": "CAN_VIEW",
            "group_name": "test-group"
          },
          {
            "level": "CAN_MANAGE_RUN",
            "user_name": "someone@example.com"
          }
        ],
        "...": "..."
      }
    }
  }
}

Порядок приоритета разрешений

Если вы permissions определили в нескольких местах в конфигурации пакета, разрешения, предоставленные ресурсам, каталогам рабочей области и файлам, указанным в пакете, приведены в следующем порядке:

  1. Разрешения, определенные для ресурса в целевом развертывании
  2. Разрешения, определенные для целевого развертывания
  3. Разрешения, определенные для ресурса в пакете
  4. Разрешения, определенные в разрешениях верхнего уровня пакета

Например, в следующей конфигурации группа test-group будет иметь CAN_MANAGE разрешения для задания в dev целевой системе, но CAN_MANAGE_RUN разрешения для задания в prod целевой системе.

bundle:
  name: my-bundle

permissions:
  - group_name: test-group
    level: CAN_VIEW

resources:
  jobs:
    my-job:
      # ...
      permissions:
        - group_name: test-group
          level: CAN_MANAGE_RUN
      # ...

targets:
  dev:
    # ...
    resources:
      jobs:
        my-job:
          # ...
          permissions:
            - group_name: test-group
              level: CAN_MANAGE
          # ...
  prod:
    # ...
    resources:
      jobs:
        my-job:
          # ...