共用方式為


教學:授權新使用者專案與資料庫存取權

這很重要

Lakebase 自動縮放在以下地區處於 Beta 階段:eastus2westeuropewestus

Lakebase 自動縮放是 Lakebase 的最新版本,具備自動縮放運算、縮放至零、分支及即時還原功能。 關於與 Lakebase Provisioned 的功能比較,請參見「選擇版本」。

學習如何設定新使用者,讓其存取你的 Lakebase 專案和資料庫。 本教學涵蓋專案層級權限(用於管理 Lakebase 資源)與資料庫層級權限(透過 Postgres 存取資料)。

關於這兩種許可系統

Lakebase Postgres 使用兩層權限:

  1. 專案權限(ACL):控制平台層級的動作,例如建立分支、管理運算及管理專案設定。 這些服務皆透過 Lakebase 應用程式管理。

  2. Postgres 角色權限:控制資料庫內部資料的存取權限。 這些指令由標準 Postgres GRANT 指令管理。

這些系統 沒有自動同步功能。 您可以依組織需求獨立或共同授權這些權限:

  • 同時將這兩個層級都授予需要平台存取與資料庫存取的使用者。
  • 只授予管理基礎設施但不需要查詢資料的使用者專案權限。
  • 只授權需要查詢資料但不需要管理 Lakebase 資源的使用者存取資料庫(他們可以透過像是連線細節這類工具 psql 來連接)。

這個教學示範如何設定兩層存取:

  • 授予專案權限,讓使用者能使用 Lakebase 平台資源(本教學使用 CAN MANAGE 來取得完整存取,你也可以授權 CAN USE 只存取並使用)
  • 建立一個帶有適當資料庫權限的 Postgres 角色,以便連接及查詢資料庫

預設權限

所有工作區使用者預設都會繼承 CAN CREATE 權限,允許檢視和建立專案。 若要授予專案資源與資料庫的額外存取權限,您必須明確指派 CAN USE 或 CAN MANAGE。

先決條件

  • 一個帶有資料庫的 Lakebase 專案
  • 工作區管理員或具有專案「可管理」權限的人員
  • 使用者在建立專案的同一工作區中的 Azure Databricks 身份(電子郵件地址)

情境:新增一位具備讀寫權限的資料分析師

讓我們來看看如何新增一位名為 Alex Lopez 的資料分析師,他需要:

  • 能夠建立和管理分支、計算資源與資料庫(可以管理)
  • 在你的 Postgres 資料庫中,對 public 架構的資料表進行讀寫存取權限。
  • 建立新資料表以進行分析的能力

步驟 1:授予專案權限

首先,授予使用者 CAN MANAGE 權限,讓他們能執行專案管理操作。

  1. 在 Lakebase 應用程式中導航到你的專案。
  2. 點選左側邊欄的 設定
  3. 捲動到 專案權限 區塊。
  4. 點擊 授權
  5. 搜尋並選擇使用者。
  6. 選擇 「可管理 權限」。
  7. 請按一下 授權

授予 CAN MANAGE 權限

CAN MANAGE 所允許的功能:

  • 建立與刪除分支
  • 管理運算並設定專案設定
  • 建立與管理資料庫與 Postgres 角色
  • 對專案運作的全面控制

備註

CAN MANAGE 提供對專案的完全控制權,包括許多其他行動。 CAN USE 允許在不需完整管理的情況下查看與使用資源(清單、檢視、取得連線 URI 及某些分支操作)。 有關所有權限等級及每個權限允許的特定動作的完整清單,請參閱 Lakebase 專案 ACL。

步驟 2:為使用者建立 Postgres 角色

現在建立一個 OAuth 角色,讓 Alex 能用他們的 Azure Databricks 身份和 OAuth 代幣進行認證。 作為專案擁有者,你擁有建立角色所需的權限。

  1. 打開 Lakebase SQL 編輯器並連接到你的專案。

  2. 建立 databricks_auth 擴充功能(如果還沒啟用):

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  3. 使用這個 databricks_create_role 函式為 Alex 建立 OAuth Postgres 角色:

    SELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
    

這會建立一個 OAuth 角色,使其:

  • 名稱與他們的 Azure Databricks 身份相同(alex.lopez@databricks.com
  • 可以使用 OAuth 代幣進行認證
  • 擁有登入權限
  • 目前還沒有資料庫權限(我們接下來會授予這些權限)

備註

關於OAuth職位:

  • OAuth 角色使用限時令牌進行驗證(1 小時後失效)
  • 使用者會從 Lakebase App 連線對話框獲得代幣
  • 最適合用於互動式會議和工作區整合的工作流程
  • 欲了解更多資訊,請參閱 關於認證

步驟 3:授予 Postgres 資料庫權限

現在給 Alex 他們需要的資料庫權限。 我們會給他們對 public 架構的讀寫權限。

-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

這些權限允許的事項:

  • CONNECT:連接資料庫
  • USAGE 在模式中:存取模式內的物件
  • CREATE 在資料結構中:創建新的資料表、檢視表、函式
  • SELECT, INSERT, UPDATE, DELETE 在資料表上:讀寫資料
  • 序列權限:使用自動遞增欄位

步驟四:測試連線

讓Alex確認他們能連線並存取資料庫。

使用 Lakebase SQL 編輯器:

  1. Alex 打開 Lakebase 應用程式,並導向你的專案。

  2. Alex 打開 Lakebase SQL 編輯器。

  3. 在 SQL 編輯器中,Alex 應該能執行以下查詢以驗證權限:

    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
    
    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;
    
    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
    
    -- Verify can create tables
    CREATE TABLE alex_analysis (
        id SERIAL PRIMARY KEY,
        notes TEXT,
        created_at TIMESTAMP DEFAULT NOW()
    );
    

或者,使用 psql:

Alex 也能從外部工具連線,例如 psql

  1. 從專案儀表板點選 「連結」。
  2. 選擇分支、運算和資料庫。
  3. 角色 下拉選單中選擇 alex.lopez@databricks.com
  4. 複製 psql 連線片段。
  5. 點擊 複製 OAuth 令牌 以取得認證令牌。
  6. 使用複製的 psql 指令連線,並在提示輸入密碼時輸入 OAuth 令牌。
  7. 執行與上述相同的驗證查詢。

替代方案:唯讀資料庫存取

對於只需查詢資料而不修改資料的使用者,請授予相同的專案權限,但使用更嚴格的資料庫權限:

專案權限

授予 CAN USE 用於僅可檢視與使用的專案存取(例如連線 URI、列表分支)。 授予 管理權限,允許進行資料庫、角色及其他專案操作的創建。

資料庫權限

-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

此項授權:

  • 讀取權限所有資料表
  • 查看資料庫結構
  • 無法修改資料(無 INSERT, UPDATE, DELETE)
  • 無法建立資料表或其他物件

與團體及服務負責人合作

你可以依照相同的流程授權 Azure Databricks 群組和服務主體的存取權。 透過 Lakebase 應用程式介面授予專案權限,使用 databricks_create_role(),建立 OAuth 角色,並授予資料庫權限。 欲了解更多資訊,請參閱 團體服務負責人

使用 Postgres 原生密碼角色

作為 OAuth 角色的替代方案,你可以為無法每小時更新令牌的應用程式、長時間執行的程序或不支援 OAuth 的外部工具建立原生 Postgres 密碼角色。 關於建立與管理密碼角色的說明,請參見 「管理 Postgres 角色」。

後續步驟