이 문서에서는 Databricks 자산 번들에서 Lakeflow 작업, Lakeflow 선언적 파이프라인 및 MLOps 스택에 대한 권한을 설정하는 방법을 설명합니다. Databricks 자산 번들이란 무엇인가요?에 대해 알아보려면 다음 문서를 참조하세요.
Azure Databricks 번들 구성 파일에서 번들에 정의된 모든 리소스에 적용할 권한을 정의하거나 특정 리소스에 적용할 사용 권한을 하나 이상 정의할 수 있습니다.
참고
사용 권한은 겹칠 수 없습니다. 즉, 사용자, 그룹 또는 서비스 주체에 대한 사용 권한은 최상위 permissions
매핑과 resources
매핑 내에서 모두 정의할 수 없습니다.
모든 리소스에 적용할 권한 정의
최상위 resources
매핑을 사용하여 정의된 모든 실험, 작업, 모델 및 파이프라인에 permissions
적용할 권한을 정의할 수 있습니다. 허용되는 최상위 권한 수준은 CAN_VIEW
, CAN_MANAGE
및 CAN_RUN
입니다.
최상위 permissions
매핑에 대한 자세한 내용은 권한을 참조하세요.
Databricks는 Databricks 자산 번들 리소스 권한을 관리하기 위해 이 방법을 권장합니다.
특정 리소스에 대한 권한 정의
실험, 작업, 모델 또는 파이프라인 정의에서 매핑을 사용하여 permissions
해당 리소스에 resources
대한 하나 이상의 권한을 정의할 수 있습니다.
permissions
매핑의 각 권한에는 다음 두 매핑이 포함되어야 합니다.
-
user_name
는 사용자,group_name
는 그룹,service_principal_name
는 서비스 주체의 이름을 의미합니다. -
level
은 권한 수준의 이름을 나타냅니다. 각 리소스에 대해 허용되는 권한 수준은 다음과 같습니다.- 실험:
CAN_EDIT
,CAN_MANAGE
및CAN_READ
. - 작업:
CAN_MANAGE
,CAN_MANAGE_RUN
,CAN_VIEW
및IS_OWNER
. - 모델:
CAN_EDIT
,CAN_MANAGE
,CAN_MANAGE_STAGING_VERSIONS
CAN_MANAGE_PRODUCTION_VERSIONS
및CAN_READ
. - 파이프라인:
CAN_MANAGE
,CAN_RUN
,CAN_VIEW
및IS_OWNER
.
- 실험:
특정 사용 권한 수준에 대한 자세한 내용은 다음을 참조하세요.
- 실험: MLflow 실험의 ACL
- 작업: 작업 ACL
- 모델: MLflow 모델 접근 제어 목록(ACL)
- 파이프라인: Lakeflow 선언적 파이프라인 액세스 제어 목록
참고
리소스에 대해 허용되는 사용 권한 수준은 최상위 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
경우 번들에 지정된 리소스, 작업 영역 디렉터리 및 파일에 부여된 사용 권한은 다음과 같은 순서로 수행됩니다.
예를 들어, 다음 구성에서 그룹 test-group
는 dev
대상의 작업에 대해 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:
# ...