次の方法で共有


既定のワークスペース アクセスをコンシューマー アクセスに変更する

Important

この機能は パブリック プレビュー段階です

このページでは、グループの複製を使用して、ワークスペース管理者が新しいユーザーの既定のワークスペース アクセスをコンシューマー アクセスに変更する方法について説明します。 この機能は、作成特権が必要なユーザーに適切なアクセス レベルを維持しながら、大規模なコンシューマー オンボーディングを合理化するのに役立ちます。

概要

既定では、ワークスペースに追加されたすべてのユーザーは、システム users グループのメンバーになります。 このグループには通常、ワークスペース アクセス権または Databricks SQL アクセス権があります。これは、ユーザーがワークスペース オブジェクトを作成および変更できる権利を作成するものです。

表示専用コンシューマー エクスペリエンスをユーザーに提供するには、 users グループにコンシューマーの権利のみが必要です。 エンタイトルメントは追加的であるため、コンシューマー アクセスでは、ユーザーに割り当てられている唯一の権利である場合にのみ、簡略化されたビューのみのエクスペリエンスが提供されます。 グループの複製を使用すると、作成権限を必要とする既存のユーザーを中断することなく、この変更を行うことができます。 既存のユーザーの新しいグループが作成され、新しいユーザーの既定の users グループが更新されます。

コンシューマー アクセスとその機能の詳細については、「 コンシューマー アクセスとは」を参照してください。 エンタイトルメントの詳細については、「 エンタイトルメントの管理」を参照してください。

この機能を使用する場合

この機能は、次の場合に使用します。

  • 新しいワークスペース ユーザーに対して既定のコンシューマー アクセスのみを設定する必要があります。
  • 作成特権 (ワークスペースまたは Databricks SQL アクセス) が必要なユーザーをビュー専用コンシューマーから分離する必要があります。
  • コンシューマーのオンボーディングを大規模に効率化したいと考えています。

グループの複製のしくみ

システム users グループは Azure Databricks によって自動的に管理され、すべてのワークスペース ユーザーが含まれます。 このグループは削除できません。 システム グループの詳細については、「 グループ ソース」を参照してください。

users グループを複製する場合:

  1. users グループが現在持っているのと同じ権利を持つ新しいグループが作成されます。
  2. 既存のすべてのワークスペース ユーザーは、複製されたグループに自動的に移動され、現在のアクセス レベルが保持されます。
  3. users グループは、コンシューマーエンタイトルメントのみを持つよう更新されます。
  4. ワークスペースに追加された今後のユーザーは、自動的に users グループのメンバーになり、コンシューマーの権利のみを受け取ります。

users グループに、他のグループに属する深すぎる入れ子のグループが含まれている場合、それらの処理方法を選ぶことができます。

  • すべてのグループ メンバーを直接追加する (推奨):入れ子になったグループのすべてのメンバーを複製されたグループに直接追加します。 これにより、グループ構造が簡略化されます。
  • 除外: 入れ子になったグループを完全にスキップします。 除外された入れ子になったグループのメンバーは、複製されたグループには追加されません。

Requirements

既定のワークスペース アクセスを変更するには、ワークスペース管理者である必要があります。

UI を使用して既定のワークスペース アクセスを変更する

既定のワークスペース アクセスをコンシューマー アクセスに変更するには:

  1. ワークスペース管理者として、Azure Databricks ワークスペースにログインします。

  2. Azure Databricks ワークスペースの上部バーでユーザー名をクリックし、[設定] を選択します。

  3. [詳細設定] タブをクリックします。

  4. [ アクセス制御] の [ 既定のワークスペース アクセスをコンシューマー アクセスに変更する] の横にある [ 開く] をクリックします。

  5. ダイアログで、複製されたグループの名前を入力します。 このグループには、現在の権利を保持する必要がある既存のすべてのユーザーが含まれます。

    既定のアクセスをコンシューマー アクセスに変更します。

  6. [ グループの作成と複製] をクリックします。

    新しいグループが作成され、複製プロセスが開始されます。 複製中はモーダルを閉じないでください。

  7. users グループに入れ子になったグループが過度にネストされている場合は、それらのグループを処理するよう求められます。

    • [ すべてのグループ メンバーを直接追加する (推奨)] を選択して、入れ子になったグループのすべてのメンバーを複製されたグループに直接追加して、グループをフラット化します。
    • この入れ子になったグループをスキップするには、[ このグループを除外する] を選択します。
    • 必要に応じて、[ 入れ子の深さの制限を超えるすべての今後のグループにこの決定を適用 する] を選択して、この操作中に今後入れ子になったグループすべてに選択を使用します。
  8. 最後の手順: オーサリング権限を移動し、既定のアクセス権を変更して、[完了] をクリックします。

    システムは、 users グループをコンシューマーエンタイトルメントのみを持つよう更新し、複製されたグループに元の権利を割り当てます。

  9. 概要を確認し、[ 完了] をクリックします。

    既定のアクセスをコンシューマー アクセスに変更します。

変更を確認する

プロセスが完了したら、変更が正しく適用されたことを確認します。

  1. ワークスペース管理者として、Azure Databricks ワークスペースにログインします。
  2. 上部のバーでユーザー名をクリックし、[ 設定] を選択します。
  3. [ ID とアクセス ] タブをクリックします。
  4. [グループ] の横にある [管理] をクリックします。
  5. 次のことを確認します。
    • 複製されたグループが存在し、元の 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 グループへのアクセス権をコンシューマーに付与します。

組織のポリシーや名前付け規則に合わせて、グループ名や特権を修正します。 運用環境以外の環境で変更を広く適用する前に、常にテストしてください。

次の予定

既定のワークスペース アクセスを変更した後、次の作業が必要になる場合があります。