Important
この機能は パブリック プレビュー段階です。
このページでは、グループの複製を使用して、ワークスペース管理者が新しいユーザーの既定のワークスペース アクセスをコンシューマー アクセスに変更する方法について説明します。 この機能は、作成特権が必要なユーザーに適切なアクセス レベルを維持しながら、大規模なコンシューマー オンボーディングを合理化するのに役立ちます。
概要
既定では、ワークスペースに追加されたすべてのユーザーは、システム users グループのメンバーになります。 このグループには通常、ワークスペース アクセス権または Databricks SQL アクセス権があります。これは、ユーザーがワークスペース オブジェクトを作成および変更できる権利を作成するものです。
表示専用コンシューマー エクスペリエンスをユーザーに提供するには、 users グループにコンシューマーの権利のみが必要です。 エンタイトルメントは追加的であるため、コンシューマー アクセスでは、ユーザーに割り当てられている唯一の権利である場合にのみ、簡略化されたビューのみのエクスペリエンスが提供されます。 グループの複製を使用すると、作成権限を必要とする既存のユーザーを中断することなく、この変更を行うことができます。 既存のユーザーの新しいグループが作成され、新しいユーザーの既定の users グループが更新されます。
コンシューマー アクセスとその機能の詳細については、「 コンシューマー アクセスとは」を参照してください。 エンタイトルメントの詳細については、「 エンタイトルメントの管理」を参照してください。
この機能を使用する場合
この機能は、次の場合に使用します。
- 新しいワークスペース ユーザーに対して既定のコンシューマー アクセスのみを設定する必要があります。
- 作成特権 (ワークスペースまたは Databricks SQL アクセス) が必要なユーザーをビュー専用コンシューマーから分離する必要があります。
- コンシューマーのオンボーディングを大規模に効率化したいと考えています。
グループの複製のしくみ
システム users グループは Azure Databricks によって自動的に管理され、すべてのワークスペース ユーザーが含まれます。 このグループは削除できません。 システム グループの詳細については、「 グループ ソース」を参照してください。
users グループを複製する場合:
-
usersグループが現在持っているのと同じ権利を持つ新しいグループが作成されます。 - 既存のすべてのワークスペース ユーザーは、複製されたグループに自動的に移動され、現在のアクセス レベルが保持されます。
-
usersグループは、コンシューマーエンタイトルメントのみを持つよう更新されます。 - ワークスペースに追加された今後のユーザーは、自動的に
usersグループのメンバーになり、コンシューマーの権利のみを受け取ります。
users グループに、他のグループに属する深すぎる入れ子のグループが含まれている場合、それらの処理方法を選ぶことができます。
- すべてのグループ メンバーを直接追加する (推奨):入れ子になったグループのすべてのメンバーを複製されたグループに直接追加します。 これにより、グループ構造が簡略化されます。
- 除外: 入れ子になったグループを完全にスキップします。 除外された入れ子になったグループのメンバーは、複製されたグループには追加されません。
Requirements
既定のワークスペース アクセスを変更するには、ワークスペース管理者である必要があります。
UI を使用して既定のワークスペース アクセスを変更する
既定のワークスペース アクセスをコンシューマー アクセスに変更するには:
ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] を選択します。
[詳細設定] タブをクリックします。
[ アクセス制御] の [ 既定のワークスペース アクセスをコンシューマー アクセスに変更する] の横にある [ 開く] をクリックします。
ダイアログで、複製されたグループの名前を入力します。 このグループには、現在の権利を保持する必要がある既存のすべてのユーザーが含まれます。
[ グループの作成と複製] をクリックします。
新しいグループが作成され、複製プロセスが開始されます。 複製中はモーダルを閉じないでください。
usersグループに入れ子になったグループが過度にネストされている場合は、それらのグループを処理するよう求められます。- [ すべてのグループ メンバーを直接追加する (推奨)] を選択して、入れ子になったグループのすべてのメンバーを複製されたグループに直接追加して、グループをフラット化します。
- この入れ子になったグループをスキップするには、[ このグループを除外する] を選択します。
- 必要に応じて、[ 入れ子の深さの制限を超えるすべての今後のグループにこの決定を適用 する] を選択して、この操作中に今後入れ子になったグループすべてに選択を使用します。
最後の手順: オーサリング権限を移動し、既定のアクセス権を変更して、[完了] をクリックします。
システムは、
usersグループをコンシューマーエンタイトルメントのみを持つよう更新し、複製されたグループに元の権利を割り当てます。概要を確認し、[ 完了] をクリックします。
変更を確認する
プロセスが完了したら、変更が正しく適用されたことを確認します。
- ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
- 上部のバーでユーザー名をクリックし、[ 設定] を選択します。
- [ ID とアクセス ] タブをクリックします。
- [グループ] の横にある [管理] をクリックします。
- 次のことを確認します。
- 複製されたグループが存在し、元の
usersグループと同じ数のユーザーが存在します。 -
usersグループにコンシューマーの権利のみが付与されるようになりました。
- 複製されたグループが存在し、元の
考慮事項とベスト プラクティス
既定のワークスペース アクセスを変更するときは、次の点を考慮してください。
新しいユーザーへの影響: 既定のアクセス権を変更すると、ワークスペースに追加されたすべての新しいユーザーはコンシューマーの権利のみを受け取ります。 ダッシュボード、Genie スペース、および共有されている Databricks Apps を表示および操作できますが、新しいワークスペース オブジェクトを作成することはできません。 既定の Databricks ランディング ページは Databricks One ページです。 詳細については、「 コンシューマー アクセスとは」 と「 Databricks One とは」を参照してください。
オーサリング権限の付与: 新しいユーザーに高い特権を付与する必要がある場合は、複製されたグループに手動で追加するか、追加の権利を個別に割り当てる必要があります。 グループ メンバーシップの管理手順については、「グループの 管理」を参照してください。
変更を元に戻す: この構成を元に戻す必要がある場合は、ワークスペース アクセス権と Databricks SQL アクセス権を
usersグループに戻します。 その後、新しいユーザーは既定でこれらの権利を受け取ります。 複製されたグループは、ユーザーの整理に必要かどうかに応じて保持または削除できます。ID プロバイダーとの調整: SCIM プロビジョニングまたは自動 ID 管理を使用してユーザーとグループを同期する場合は、この変更を ID 管理プロセスと調整します。 SCIM を使用して Microsoft Entra ID からユーザーとグループを同期するを参照してください。
SDK を使用してグループの複製を自動化する
複数のワークスペース間で一括操作または自動化を行う場合は、Databricks SDK for Python を使用してグループの複製プロセスを自動化できます。 この方法は、複数のワークスペースに同じ構成を適用する必要がある場合や、グループの複製をコードとしてのインフラストラクチャ ワークフローに統合する必要がある場合に便利です。
次の Python スクリプトは、 users グループの複製を自動化し、適切な権利を割り当てます。 Databricks SDK for Python を使用し、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):
"""
Fetches the workspace group with the given name.
"""
group = list(workspace_client.groups.list(filter=f"displayName eq '{group_name}'"))[0]
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 グループへのアクセス権をコンシューマーに付与します。
注
組織のポリシーや名前付け規則に合わせて、グループ名や特権を修正します。 運用環境以外の環境で変更を広く適用する前に、常にテストしてください。
次の予定
既定のワークスペース アクセスを変更した後、次の作業が必要になる場合があります。
- グループ メンバーシップを管理し、新しいユーザーに作成権限を付与するには、複製されたグループに追加します。 「グループの管理」を参照してください。
- 個々のユーザーまたはグループの権利を確認して調整します。 「エンタイトルメントを管理する」をご覧ください。
- コンシューマー アクセス エクスペリエンスの詳細を確認します。 「 コンシューマー アクセスとは」 と 「Databricks One とは」を参照してください。
- コンシューマー ユーザーのデータ ガバナンス コントロールを構成します。 「行フィルターと列マスク」を参照してください。