다음을 통해 공유


작업 영역 그룹을 새 계정 그룹에 복제

이 페이지에서는 Azure Databricks 작업 영역에서 소비자 액세스 사용자에게 권한을 부여하려는 작업 영역 관리자를 위한 지침을 제공합니다. 여기에는 Python용 Databricks SDK를 사용하여 그룹을 관리하는 데 도움이 되는 Python 스크립트가 포함되어 있습니다.

배경

작업 영역은 일반적으로 작업 영역의 모든 사용자에게 프로비저닝 시 자동으로 작업 영역 액세스Databricks SQL 자격이 할당되도록 구성됩니다. 자격은 가산적이므로 소비자 액세스 가 유일한 권한인 경우에만 간소화된 작업 영역이 표시됩니다. 그룹에 소비자 액세스보다 더 큰 권한을 가진 권한이 부여된 경우 해당 그룹의 사용자 중 누구도 소비자 환경만 수신하지 않습니다.

이 페이지에서는 작업 usersDatabricks SQL 액세스 권한을 유지하는 새 그룹에 기존 시스템 그룹을 복제하는 워크플로를 제공합니다. 그런 다음, 새로 프로비전된 사용자에게 기본적으로 users 권한만 할당되도록 그룹을 다시 구성하는 방법을 설명합니다. 이 설정을 사용하면 작업 영역에 추가될 때 더 높은 수준의 액세스 권한이 필요한 사용자를 새 그룹에 추가해야 합니다.

소비자 액세스 권한 부여

그룹을 사용하여 users 모든 작업 영역의 사용자에게 제작 권한을 부여한 경우 다음 단계를 사용하여 일부 사용자에게 소비자 액세스 권한만 부여할 수 있습니다.

  1. 작업 영역의 users 시스템 그룹을 복제합니다.

    • 작업 영역 users 그룹의 모든 현재 멤버를 포함하는 새 계정 그룹을 만듭니다.
    • 작업 영역 액세스 또는 Databricks SQL 액세스 와 같은 더 높은 권한의 권한을 기본 users 그룹 대신 이 새 그룹에 할당합니다.
  2. 그룹에서 더 높은 권한 권한 제거: 이렇게 하면 그룹 자격users에 의해 자동으로 업그레이드되지 않고도 새 사용자를 소비자로 추가할 수 있습니다.

  3. 새 사용자를 소비자로 추가: 소비자 액세스 환경만 있어야 하는 사용자를 작업 영역에 추가합니다.

Python용 Databricks SDK를 사용하여 자격 관리 자동화

다음 Python 스크립트는 그룹을 복제하고 users 적절한 자격을 할당하는 프로세스를 자동화합니다. Python용 Databricks SDK를 사용하며, OAuth를 사용하여 인증된 계정과 작업 영역 모두에 대한 관리자 권한이 있는 서비스 주체가 필요합니다. OAuth를 사용하여 Azure Databricks에 대한 사용자 액세스 권한 부여를 참조하세요.

사전 요구 사항:

  • 관리자 권한이 있는 서비스 주체
  • 환경 변수 집합:
    • DATABRICKS_ACCOUNT_ID (계정 콘솔 URL의 UUID)
    • DATABRICKS_WORKSPACE_ID (작업 영역 URL의 숫자 ID)
    • DATABRICKS_CLIENT_ID (서비스 주체 클라이언트 ID)
    • DATABRICKS_CLIENT_SECRET (서비스 주체 클라이언트 암호)

예제 스크립트


import os
import databricks.sdk as dbx
from databricks.sdk.service import iam

# Set the Databricks account host URL for your account's cloud
DATABRICKS_HOST = "https://accounts.azuredatabricks.net
"

Fetch credentials from environment variables
DATABRICKS_ACCOUNT_ID = os.getenv("DATABRICKS_ACCOUNT_ID")
DATABRICKS_WORKSPACE_ID = os.getenv("DATABRICKS_WORKSPACE_ID")
DATABRICKS_CLIENT_ID = os.getenv("DATABRICKS_CLIENT_ID")
DATABRICKS_CLIENT_SECRET = os.getenv("DATABRICKS_CLIENT_SECRET")

# Initialize Databricks account client
account_client = dbx.AccountClient(
host=DATABRICKS_HOST,
account_id=DATABRICKS_ACCOUNT_ID,
client_id=DATABRICKS_CLIENT_ID,
client_secret=DATABRICKS_CLIENT_SECRET,
)

print(f"Authenticated to Databricks account {DATABRICKS_ACCOUNT_ID}")

# Get workspace and initialize workspace client
workspace = account_client.workspaces.get(workspace_id=DATABRICKS_WORKSPACE_ID)
workspace_name = workspace.workspace_name
workspace_client = account_client.get_workspace_client(workspace)

print(f"Authenticated to Databricks workspace {DATABRICKS_WORKSPACE_ID}, '{workspace_name}'")

def get_workspace_group(group_name):
group = list(workspace_client.groups.list(filter=f"displayName eq '{group_name}'"))
print(f"Found workspace group: {group.display_name}")
print(f"Workspace {group.display_name} has {len(group.members)} members")
return group

def clone_workspace_group_to_account(workspace_group_name, new_account_group_name):
workspace_group = get_workspace_group(workspace_group_name)
group = account_client.groups.create(
display_name=new_account_group_name, members=workspace_group.members
)
print(f"Created account group: {new_account_group_name}")
print(f"Cloned workspace group {workspace_group.display_name} to account group {group.display_name}")
print(f"Account {group.display_name} has {len(group.members)} members")
return group

def add_account_group_to_workspace(account_group, workspace):
permissions = account_client.workspace_assignment.update(
workspace_id=workspace.workspace_id,
principal_id=account_group.id,
permissions=[iam.WorkspacePermission.USER],
)
print(f"Added account group {account_group.display_name} to workspace {workspace.workspace_id}, {workspace.workspace_name}")
return permissions

# Clone workspace 'users' group to new account group '{workspace_name}-contributors'
account_group = clone_workspace_group_to_account(
"users", f"{workspace_name}-contributors"
)

# Add account group '{workspace_name}-contributors' to the workspace
permissions = add_account_group_to_workspace(account_group, workspace)

기존 그룹을 복제하고 권한을 다시 부여한 후에는 새 사용자가 작업 영역에 추가될 때 해당 액세스 권한이 자동으로 부여되도록 소비자 액세스 권한을 소비자 에 부여하거나 다른 그룹에 부여 users할 수 있습니다.

비고

조직의 정책 및 명명 규칙에 대한 그룹 이름 및 자격을 조정합니다. 광범위하게 적용하기 전에 항상 비프로덕션 환경에서 변경 내용을 테스트합니다.