メインコンテンツまでスキップ

デフォルトのワークスペース アクセスをコンシューマー アクセスに変更する

備考

プレビュー

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

このページでは、ワークスペース管理者がグループの複製を使用して、新しいユーザーのデフォルトのワークスペース アクセスをコンシューマー アクセスに変更する方法について説明します。この機能により、作成権限を必要とするユーザーに対して適切なアクセス レベルを維持しながら、大規模なコンシューマーのオンボーディングを効率化できます。

概要

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

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

コンシューマー アクセスとその機能の詳細については、 「コンシューマー アクセスとは何ですか?」を参照してください。 権限の詳細については、 「権限の管理」を参照してください。

この機能を使用する場合

この機能は次のような場合に使用します。

  • 新しいワークスペース ユーザーにデフォルトでコンシューマー アクセスのみを許可するようにします。
  • 作成権限 (ワークスペースまたは Databricks SQL アクセス) が必要なユーザーと、表示専用のコンシューマーを分離する必要があります。
  • コンシューマーのオンボーディングを大規模に効率化したいと考えています。

グループクローンの仕組み

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

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

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

usersグループにネストが深すぎるグループ(他のグループのメンバーであるグループ)が含まれている場合、それらの処理方法を選択できます。

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

要件

デフォルトのワークスペース アクセスを変更するには、ワークスペース管理者である必要があります。

UI を使用してデフォルトのワークスペース アクセスを変更する

デフォルトのワークスペース アクセスをコンシューマー アクセスに変更するには:

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

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

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

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

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

    デフォルトのアクセスをコンシューマー アクセスに変更します。

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

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

  7. usersグループにネストが深すぎるグループが含まれている場合は、それらを処理するように求められます。

    • ネストされたグループのすべてのメンバーを複製されたグループに直接追加してグループをフラット化するには、 [すべてのグループ メンバーを直接追加する (推奨)] を選択します。
    • このネストされたグループをスキップするには、 「このグループを除外」 を選択します。
    • オプションで、 「ネストの深さの制限を超える将来のすべてのグループにこの決定を適用する」 を選択して、この操作中に将来のすべてのネストされたグループに選択内容を適用します。
  8. 最終ステップ: 作成権限を移動し、デフォルトのアクセスを変更する で[完了] をクリックします。

    システムは、 usersグループを更新してコンシューマー権限のみを持たせ、元の権限を複製されたグループに割り当てます。

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

    デフォルトのアクセスをコンシューマー アクセスに変更します。

変更を確認する

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

  1. ワークスペース管理者として、Databricksワークスペースにログインします。
  2. 上部のバーにあるユーザー名をクリックし、 「設定」 を選択します。
  3. [ IDとアクセス ] タブをクリックします。
  4. [グループ] の横にある [管理] をクリックします。
  5. 次の点を確認してください。
    • 複製されたグループが存在し、元のusersグループと同じ数のユーザーがいます。
    • 現在、 usersグループには Consumer 権限のみがあります。

考慮事項とベストプラクティス

デフォルトのワークスペース アクセスを変更するときは、次の点を考慮してください。

  • 新規ユーザーへの影響 : デフォルトのアクセスを変更すると、ワークスペースに追加されたすべての新規ユーザーにはコンシューマー権限のみが付与されます。ユーザーは、共有されているダッシュボード、 Genieスペース、 Databricks Appsを表示および操作できますが、新しいワークスペース オブジェクトを作成することはできません。 彼らのデフォルトDatabricksランディングページはDatabricks Oneページです。 詳細については、 「コンシューマー アクセスとは何ですか?」Databricks One とは何ですか?参照してください。

  • 作成権限の付与 : 新しいユーザーに高い権限を付与する必要がある場合は、複製されたグループに手動で追加するか、追加の権限を個別に割り当てる必要があります。グループ メンバーシップの管理手順については、 「グループの管理」を参照してください。

  • 変更を元に戻す : この構成を元に戻す必要がある場合は、ワークスペース アクセスと Databricks SQL アクセス権限をusersグループに再度付与します。新規ユーザーにはデフォルトでこれらの権限が付与されます。ユーザーの整理にまだ必要かどうかに応じて、複製されたグループを保持するか削除することができます。

  • ID プロバイダーとの調整 : SCIM プロビジョニングまたは自動 ID 管理を使用してユーザーとグループを同期する場合は、この変更を ID 管理プロセスと調整します。SCIM を使用して ID プロバイダーからユーザーとグループを同期するを参照してください。

SDKを使用してグループのクローンを自動化する

複数のワークスペースにわたる一括操作または自動化の場合は、Databricks SDK for Python を使用してグループの複製プロセスを自動化できます。この方法は、複数のワークスペースに同じ構成を適用する必要がある場合、またはグループのクローン作成をInfrastructure-as-Codeワークフローに統合する必要がある場合に便利です。

次の Python スクリプトは、 usersグループの複製を自動化し、適切な権限を割り当てます。Databricks SDK for Pythonを使用し、 OAuthを使用して認証された、アカウントとワークスペースの両方の管理者権限を持つサービスプリンシパルが必要です。 「OAuth を使用して Databricks へのユーザー アクセスを承認する」を参照してください。

前提条件

  • 管理者権限を持つサービスプリンシパル
  • 以下の環境変数の設定:
    • DATABRICKS_ACCOUNT_ID (アカウント コンソール URL からの UUID)
    • DATABRICKS_WORKSPACE_ID (ワークスペース URL からの数値 ID)
    • DATABRICKS_CLIENT_ID (サービスプリンシパルクライアントID)
    • DATABRICKS_CLIENT_SECRET (サービスプリンシパルクライアントシークレット)

サンプルスクリプト

Python

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.cloud.databricks.com"

# 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グループへのアクセスを付与し、新しいユーザーにそのアクセスが自動的に付与されるようにします。

注記

組織のポリシーと命名規則に合わせてグループ名と権限を調整します。変更を広く適用する前に、必ず本番運用以外の環境で変更をテストしてください。

次は何?

デフォルトのワークスペース アクセスを変更した後、次の操作を実行できます。