다음을 통해 공유


Databricks 자산 번들의 리소스에 대한 권한 설정

이 문서에서는 Databricks 자산 번들에서 Azure Databricks 작업, 델타 라이브 테이블 파이프라인 및 MLOps 스택에 대한 권한을 설정하는 방법을 설명합니다. Databricks 자산 번들이란?을 참조하세요.

Azure Databricks 번들 구성 파일에서 번들에 정의된 모든 리소스에 적용할 권한을 정의하거나 특정 리소스에 적용할 사용 권한을 하나 이상 정의할 수 있습니다.

참고 항목

사용 권한은 겹칠 수 없습니다. 즉, 사용자, 그룹 또는 서비스 주체에 대한 사용 권한은 최상위 permissions 매핑과 매핑 내에서 resources 정의할 수 없습니다.

모든 리소스에 적용할 권한 정의

최상위 permissions 매핑을 사용하여 정의된 모든 실험, 작업, 모델 및 파이프라인에 resources 적용할 권한을 정의할 수 있습니다. 사용 권한을 참조 하세요.

Databricks는 Databricks 자산 번들 리소스 권한을 관리하기 위해 이 방법을 권장합니다.

특정 리소스에 대한 권한 정의

실험, 작업, 모델 또는 파이프라인 정의에서 매핑을 사용하여 permissions 해당 리소스에 resources 대한 하나 이상의 권한을 정의할 수 있습니다.

매핑의 각 권한에는 permissions 다음 두 매핑이 포함되어야 합니다.

  • user_name사용자, group_name그룹 또는 service_principal_name서비스 주체의 이름을 각각 사용하거나,
  • level사용 권한 수준의 이름을 가진 입니다. 각 리소스에 대해 허용되는 권한 수준은 다음과 같습니다.
    • 실험: CAN_EDITCAN_MANAGE CAN_READ.
    • 작업: CAN_MANAGE, CAN_MANAGE_RUN, CAN_VIEWIS_OWNER.
    • 모델: CAN_EDIT, CAN_MANAGE, CAN_MANAGE_STAGING_VERSIONSCAN_MANAGE_PRODUCTION_VERSIONSCAN_READ.
    • 파이프라인: CAN_MANAGE, CAN_RUN, CAN_VIEWIS_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"
          }
        ],
        "...": "..."
      }
    }
  }
}