共用方式為


將預設工作區存取權改為消費者存取

這很重要

這項功能目前處於 公開預覽版

本頁說明工作區管理員如何透過群組複製,將新使用者的預設工作區存取權改為消費者存取權。 此功能幫助您大規模精簡消費者入職流程,同時維持需要編輯權限的使用者適當的存取層級。

概觀

預設情況下,每個新增到工作區的使用者都會成為系統 users 群組的成員。 此群組通常擁有工作區存取權或 Databricks SQL 存取權限,後者是使用者建立與修改工作空間物件的作者權限。

為了提供使用者僅有檢視的消費者體驗,該 users 群組必須只有消費者權限。 權限是具有累加性的,因此只有當消費者存取是唯一指派給使用者的權限時,才會提供簡化的僅供查看體驗。 群組複製讓你能在不干擾需要作者權限的現有使用者的情況下進行這項變更。 它會為現有使用者建立一個新群組,並更新新使用者的預設 users 群組。

欲了解更多關於消費者存取及其功能的資訊,請參閱 「什麼是消費者存取?」。 欲了解更多關於權利的資訊,請參閱 「管理權利」。

何時使用此功能

在下列情況下使用這項功能:

  • 你希望新工作區使用者預設只能使用消費者存取權限。
  • 你需要將需要創作權限(Workspace 或 Databricks SQL 存取)的使用者與僅使用檢視的使用者分開。
  • 你想要在大規模上簡化消費者入職流程。

群體複製的運作原理

系統 users 群組由 Azure Databricks 自動管理,包含所有工作空間使用者。 這個群組無法刪除。 欲了解更多系統群組資訊,請參閱 群組來源

當你複製這個 users 群組時:

  1. 新群組會建立,並享有users群組目前相同的權限。
  2. 所有現有工作區使用者都會自動移至複製群組,確保他們保留目前的存取權限。
  3. users 群組已更新為僅包含消費者權限。
  4. 未來加入工作區的使用者會自動成為群組成員 users ,並僅獲得消費者權限。

users 群組包含巢狀且巢狀過深的群組(即其他群組的成員群組)時,您可以選擇如何處理它們:

  • 直接新增所有群組成員(推薦):將巢狀群組的所有成員直接加入複製群組。 這簡化了團體結構。
  • 排除:完全跳過巢狀群組。 排除巢狀群組的成員不會被加入克隆群組。

需求

要更改預設工作區存取權,您必須是工作區管理員。

透過使用者介面更改預設工作區存取權限

要將預設工作區存取權限改為消費者存取:

  1. 身為工作區管理員,登入 Azure Databricks 工作區。

  2. 按下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]

  3. 按一下 進階 標籤。

  4. 存取控制中,在 「將預設工作區存取權變更為消費者存取」旁邊,點選 「開啟」。

  5. 在對話框中輸入複製群組的名稱。 此群組將包含所有需要保留現有權利的現有使用者。

    將預設存取權限改為消費者存取權限。

  6. 建立並複製群組

    系統會建立新的群組並開始複製過程。 複製過程中不要關閉模態。

  7. 如果 users 群組包含巢狀且巢狀過深的群組,系統會提示你處理這些群組。

    • 選擇 「直接新增所有群組成員(推薦) 」以使群組扁平化,方法是將巢狀群組的所有成員直接加入複製群組。
    • 選擇 「排除此群組 」以跳過此巢狀群組。
    • 可選擇 「將此決策套用於所有超出巢狀深度限制的未來群組 ,以使用此選項來處理所有未來巢狀群組。
  8. 最後一 步:移動作者權限並更改預設存取權,點擊 完成

    系統會更新該 users 群組,使其僅擁有消費者權限,並將原始權限分配給複製的群組。

  9. 查看摘要並點選 完成

    將預設存取權限改為消費者存取權限。

驗證變更

完成流程後,請確認變更是否正確套用:

  1. 身為工作區管理員,登入 Azure Databricks 工作區。
  2. 按兩下頂端列中的使用者名稱,然後選取 [ 設定]。
  3. 點擊 身分識別和存取 標籤。
  4. 在 [群組] 旁邊,按一下 [管理]
  5. 請核實以下事項:
    • 複製的群組存在,且用戶數量與原始 users 群組相同。
    • users該團體目前只擁有消費者權益。

考量與最佳實務

更改預設工作區存取權時請考慮以下事項:

  • 對新使用者的影響:更改預設存取權限後,所有新增到工作區的使用者只會獲得消費者權限。 他們可以檢視並互動與他們共享的儀表板、Genie 空間和 Databricks 應用程式,但無法建立新的工作區物件。 他們的預設 Databricks 登陸頁面是 Databricks One 頁面。 欲了解更多資訊,請參閱 「什麼是消費者存取?」「什麼是 Databricks One?」。

  • 授予作者權限:當你需要賦予新使用者更高權限時,必須手動將他們加入複製群組,或個別指派額外的權限。 關於管理群組成員資格的說明,請參見 「管理群組」。

  • 還原變更:若需要還原此設定,請將工作區存取權及 Databricks SQL 存取權限交還給群組 users 。 新用戶則預設會獲得這些權限。 你可以保留或刪除複製群組,視是否仍需它來組織使用者而定。

  • 與身份提供者協調:如果您使用 SCIM 配置或自動身份管理來同步使用者與群組,請將此變更與您的身份管理流程協調。 請參閱 使用 SCIM 從 Microsoft Entra ID 同步使用者和群組

使用 SDK 自動化群組複製

若要跨多個工作空間進行大規模作業或自動化,你可以使用 Databricks SDK for Python 來自動化群組複製流程。 當你需要在多個工作空間套用相同設定,或將群組複製整合進基礎設施即程式碼工作流程時,此方法非常有用。

以下 Python 腳本自動化複製群組 users 並指派適當的權限。 它會使用適用於 Python 的 Databricks SDK,而且需要具有帳戶和工作區系統管理員許可權的服務主體,並使用 OAuth 進行驗證。 請參閱 使用 OAuth 授權使用者存取 Azure Databricks

先決條件

  • 具有系統管理員許可權的服務主體
  • 環境變數集:
    • DATABRICKS_ACCOUNT_ID (來自帳戶主控台 URL 的 UUID)
    • DATABRICKS_WORKSPACE_ID (工作區 URL 的數值識別碼)
    • DATABRICKS_CLIENT_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 群組的存取權限授予消費者,以便新使用者能自動獲得該存取權。

備註

根據組織的政策和命名慣例調整群組名稱和權限。 在廣泛套用變更之前,請務必先測試非生產環境中的變更。

下一步是什麼

更改預設工作區存取權限後,你可能想: