Sdílet prostřednictvím


Nastavení oprávnění pro prostředky v balíčcích prostředků Databricks

Tento článek popisuje, jak nastavit oprávnění pro úlohy Azure Databricks, kanály Delta Live Tables a zásobníky MLOps v sadách prostředků Databricks. Podívejte se, co jsou sady prostředků Databricks?

V konfiguračních souborech sady Azure Databricks můžete definovat oprávnění, která se mají použít pro všechny prostředky definované v sadě, nebo můžete definovat jedno nebo více oprávnění, která se mají použít pro konkrétní prostředky.

Poznámka:

Oprávnění se nesmí překrývat. Jinými slovy, oprávnění pro uživatele, skupinu nebo instanční objekt nelze definovat v mapování nejvyšší úrovně permissions i v rámci resources mapování.

Definování oprávnění, která se mají použít pro všechny prostředky

Můžete definovat oprávnění, která se mají použít pro všechny experimenty, úlohy, modely a kanály definované pomocí resources mapování nejvyšší úrovně permissions . Zobrazit oprávnění

Databricks doporučuje tento přístup ke správě oprávnění prostředků Sady prostředků Databricks.

Definování oprávnění pro konkrétní prostředek

Mapování můžete použít permissions v definici resources experimentu, úlohy, modelu nebo kanálu k definování jednoho nebo více oprávnění pro daný prostředek.

Každé oprávnění v permissions mapování musí obsahovat následující dvě mapování:

  • Buď user_name, group_namenebo service_principal_name, s názvem uživatele, skupiny nebo instančního objektu, v uvedeném pořadí.
  • levels názvem úrovně oprávnění. Povolené úrovně oprávnění pro každý prostředek jsou následující:
    • Experimenty: CAN_EDITCAN_MANAGE a CAN_READ.
    • Pracovní místa: CAN_MANAGE, CAN_MANAGE_RUN, CAN_VIEWa IS_OWNER.
    • Modely: CAN_EDIT, , CAN_MANAGE_STAGING_VERSIONSCAN_MANAGE, CAN_MANAGE_PRODUCTION_VERSIONSa CAN_READ.
    • Kanály: CAN_MANAGE, CAN_RUN, CAN_VIEWa IS_OWNER.

Informace o konkrétních úrovních oprávnění najdete tady:

Poznámka:

Povolené úrovně oprávnění pro prostředky nelze nutně použít u prostředků pomocí mapování nejvyšší úrovně permissions . Platné úrovně oprávnění pro permissions mapování najdete v tématu Oprávnění.

Následující syntaxe ukazuje, jak deklarovat více oprávnění pro každý typ prostředku, a to buď v mapování nejvyšší úrovně resources , nebo resources mapování v rámci cíle (tři tečky označují vynechaný obsah pro stručnost):

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

Všechna oprávnění deklarovaná pro prostředek v mapování nejvyšší úrovně resources se zkombinují se všemi oprávněními, která jsou deklarována pro stejné resources mapování v jednotlivých cílech. Například při následujícím resources mapování pro stejný prostředek na nejvyšší úrovni i v cíli (tři tečky označují vynechaný obsah pro stručnost):

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

Při spuštění databricks bundle validate v tomto příkladu je výsledný graf následující (tři tečky označují vynechaný obsah pro stručnost):

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