Mengatur izin untuk sumber daya dalam Bundel Otomatisasi Deklaratif

Artikel ini menjelaskan cara mengatur izin untuk sumber daya di Bundel Otomatisasi Deklaratif. Untuk informasi tentang sumber daya yang didukung dalam bundel, lihat Sumber Daya Bundel Otomasi Deklaratif.

Dalam file konfigurasi Azure Databricks bundle, Anda dapat menentukan izin di tingkat atas untuk diterapkan ke semua sumber daya yang ditentukan dalam bundel, atau Anda dapat menentukan izin untuk diterapkan ke sumber daya tertentu.

Catatan

Izin tidak dapat tumpang tindih. Dengan kata lain, izin untuk pengguna, grup, atau perwakilan layanan tidak dapat ditentukan baik dalam pemetaan tingkat atas permissions maupun dalam pemetaan resources.

Tentukan izin untuk diterapkan ke semua sumber daya

Anda dapat menentukan izin untuk diterapkan ke semua sumber daya yang didukung yang ditentukan dalam resources dengan menggunakan pemetaan permissions tingkat atas. Databricks merekomendasikan pendekatan ini untuk mengelola izin sumber daya Bundel Otomatisasi Deklaratif.

Izin menentukan tingkat izin yang diizinkan untuk user_name, , group_nameatau service_principal_name. Tingkat izin tingkat atas yang diizinkan adalah CAN_VIEW, , CAN_MANAGEdan CAN_RUN. Untuk informasi selengkapnya tentang pemetaan tingkat permissions atas, lihat izin.

Contoh berikut menetapkan izin tingkat atas untuk dev target. Pengguna someone@example.com akan memiliki CAN_RUN izin pada my-job:

bundle:
  name: my-bundle

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

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

Menentukan izin untuk sumber daya tertentu

Anda dapat menggunakan permissions pemetaan di dasbor, eksperimen, tugas, model, atau definisi alur di resources untuk mendefinisikan satu atau beberapa izin untuk sumber daya tersebut.

Setiap izin dalam permissions pemetaan harus menyertakan yang berikut ini:

  • Baik user_name, group_name, atau service_principal_name, diatur ke nama pengguna, grup, atau perwakilan layanan, masing-masing.
  • level, atur ke nama tingkat izin. Tingkat izin yang diizinkan untuk setiap sumber daya adalah sebagai berikut:
    • Pemberitahuan: CAN_EDIT, CAN_MANAGE, CAN_READ, CAN_RUN
    • Aplikasi: CAN_MANAGE, CAN_USE
    • Kluster: CAN_ATTACH_TO, CAN_MANAGE, CAN_RESTART
    • Dashboard: CAN_EDIT, CAN_MANAGE, CAN_RUN, CAN_READ*
    • Instans database: CAN_MANAGE, CAN_USE, CAN_CREATE
    • Eksperimen: CAN_EDIT, CAN_MANAGE, CAN_READ, CAN_RUN
    • Pekerjaan: CAN_MANAGE, CAN_MANAGE_RUN, CAN_VIEW, IS_OWNER
    • Model: CAN_EDIT, CAN_MANAGE, CAN_MANAGE_STAGING_VERSIONS, CAN_MANAGE_PRODUCTION_VERSIONS, CAN_READ
    • Pipeline: CAN_MANAGE, CAN_RUN, CAN_VIEW, IS_OWNER
    • Lingkup rahasia: READ, WRITE, MANAGE
    • Gudang SQL: CAN_MANAGE, CAN_USE, CAN_VIEW, CAN_MONITOR, IS_OWNER

* UI ruang kerja mengacu pada akses tampilan saja sebagai CAN VIEW, sementara API Hak akses menggunakan DAPAT MEMBACA untuk mewakili tingkat akses yang sama.

Penting

Tingkat izin yang diizinkan untuk sumber daya tidak selalu dapat diterapkan ke sumber daya menggunakan pemetaan tingkat permissions atas. Untuk tingkat izin valid pada pemetaan tingkat tertinggi permissions, lihat izin.

Sintaks berikut menunjukkan cara mendeklarasikan hak akses untuk tipe sumber daya (dalam contoh ini, alur kerja) dalam pemetaan level resources tertinggi dan dalam pemetaan resources di dalam target.

# ...
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>
          # ...
    # ...

Setiap izin yang dideklarasikan untuk sumber daya dalam pemetaan resources tingkat atas dikombinasikan dengan izin mana pun yang dideklarasikan untuk pemetaan resources yang sama dalam target individual. Misalnya, dengan adanya pemetaan resources berikut untuk sumber daya yang sama pada tingkat atas maupun di dalam target.

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
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut:

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

Urutan tingkat prioritas izin

Jika Anda telah mendefinisikan permissions di beberapa tempat dalam konfigurasi bundel Anda, maka izin yang diberikan kepada sumber daya, direktori ruang kerja, dan file yang ditentukan dalam bundel diatur dalam urutan berikut:

  1. Izin yang ditentukan untuk sumber daya dalam penyebaran target
  2. Izin yang ditentukan untuk penerapan target
  3. Izin yang ditentukan untuk sumber daya dalam bundel
  4. Izin yang ditentukan dalam izin tingkat atas bundel

Misalnya, dalam konfigurasi berikut, grup test-group akan memiliki CAN_MANAGE izin untuk pekerjaan di dev target, tetapi CAN_MANAGE_RUN izin untuk pekerjaan di prod target:

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:
          # ...