다음을 통해 공유


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

이 문서에서는 Databricks 자산 번들에서 Lakeflow 작업, Lakeflow 선언적 파이프라인 및 MLOps 스택에 대한 권한을 설정하는 방법을 설명합니다. Databricks 자산 번들이란 무엇인가요?에 대해 알아보려면 다음 문서를 참조하세요.

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

참고

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

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

최상위 resources 매핑을 사용하여 정의된 모든 실험, 작업, 모델 및 파이프라인에 permissions 적용할 권한을 정의할 수 있습니다. 허용되는 최상위 권한 수준은 CAN_VIEW, CAN_MANAGECAN_RUN입니다.

최상위 permissions 매핑에 대한 자세한 내용은 권한을 참조하세요.

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

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

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

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

  • user_name는 사용자, group_name는 그룹, service_principal_name는 서비스 주체의 이름을 의미합니다.
  • level은 권한 수준의 이름을 나타냅니다. 각 리소스에 대해 허용되는 권한 수준은 다음과 같습니다.
    • 실험: CAN_EDIT, CAN_MANAGECAN_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_MANAGE_RUN
          # ...

이 예제에 대해 databricks bundle validate 실행하면 결과 그래프는 다음과 같습니다.

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

사용 권한 우선 순위

번들 구성의 여러 위치에서 정의한 permissions 경우 번들에 지정된 리소스, 작업 영역 디렉터리 및 파일에 부여된 사용 권한은 다음과 같은 순서로 수행됩니다.

  1. 대상 배포의 리소스에 대해 정의된 권한
  2. 대상 배포에 대해 정의된 권한
  3. 번들의 리소스에 대해 정의된 권한
  4. 번들의 최상위 권한에 정의된 권한

예를 들어, 다음 구성에서 그룹 test-groupdev 대상의 작업에 대해 CAN_MANAGE 권한을 가지지만, prod 대상에서는 작업에 대해 CAN_MANAGE_RUN 권한을 가집니다.

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