Dela via


Ange behörigheter för resurser i Databricks-tillgångspaket

I den här artikeln beskrivs hur du anger behörigheter för Azure Databricks-jobb, Delta Live Tables-pipelines och MLOps Stacks i Databricks Asset Bundles. Se Vad är Databricks-tillgångspaket?.

I Azure Databricks-paketkonfigurationsfiler kan du definiera behörigheter som ska tillämpas på alla resurser som definierats i paketet, eller så kan du definiera en eller flera behörigheter som ska tillämpas på specifika resurser.

Kommentar

Behörigheter får inte överlappa varandra. Med andra ord kan behörigheter för en användare, grupp eller tjänstens huvudnamn inte definieras i både mappningen på den översta nivån permissions och i mappningen resources .

Definiera behörigheter som ska tillämpas på alla resurser

Du kan definiera behörigheter som ska tillämpas på alla experiment, jobb, modeller och pipelines som definieras i resources med hjälp av mappningen på den översta nivån permissions . Se behörigheter.

Definiera behörigheter för en specifik resurs

Du kan använda matrisen permissions i ett experiment, ett jobb, en modell eller en pipelinedefinition i resources för att definiera en eller flera behörigheter för den resursen.

Varje behörighet i matrisen permissions måste innehålla följande två mappningar:

  • Antingen user_name, group_nameeller service_principal_name, med namnet på användaren, gruppen eller tjänstens huvudnamn.
  • level, med namnet på behörighetsnivån. Tillåtna behörighetsnivåer för varje resurs är följande:
    • Experiment: CAN_EDIT, CAN_MANAGE och CAN_READ.
    • Jobb: CAN_MANAGE, CAN_MANAGE_RUN, CAN_VIEWoch IS_OWNER.
    • Modeller: CAN_EDIT, CAN_MANAGE, CAN_MANAGE_STAGING_VERSIONS, CAN_MANAGE_PRODUCTION_VERSIONSoch CAN_READ.
    • Pipelines: CAN_MANAGE, CAN_RUN, CAN_VIEWoch IS_OWNER.

Information om specifika behörighetsnivåer finns i:

Följande syntax visar hur du deklarerar flera behörigheter för varje resurstyp, antingen i mappningen på den översta nivån resources eller i en resources mappning inom ett mål (ellipser anger utelämnat innehåll, för korthet):

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

Alla behörigheter som deklareras för en resurs i toppnivåmappningen resources kombineras med alla behörigheter som deklareras för samma resources mappning i ett enskilt mål. Med tanke på följande resources mappning för samma resurs på både den översta nivån och i ett mål (ellipser anger utelämnat innehåll, för korthet):

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

När du kör databricks bundle validate för det här exemplet är den resulterande grafen följande (ellipser indikerar utelämnat innehåll, för korthet):

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