這很重要
Lakebase 自動縮放在以下地區處於 Beta 階段:eastus2、westeurope、westus。
Lakebase 自動縮放是 Lakebase 的最新版本,具備自動縮放運算、縮放至零、分支及即時還原功能。 關於與 Lakebase Provisioned 的功能比較,請參見「選擇版本」。
學習如何設定新使用者,讓其存取你的 Lakebase 專案和資料庫。 本教學涵蓋專案層級權限(用於管理 Lakebase 資源)與資料庫層級權限(透過 Postgres 存取資料)。
關於這兩種許可系統
Lakebase Postgres 使用兩層權限:
專案權限(ACL):控制平台層級的動作,例如建立分支、管理運算及管理專案設定。 這些服務皆透過 Lakebase 應用程式管理。
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 權限,讓他們能執行專案管理操作。
- 在 Lakebase 應用程式中導航到你的專案。
- 點選左側邊欄的 設定 。
- 捲動到 專案權限 區塊。
- 點擊 授權。
- 搜尋並選擇使用者。
- 選擇 「可管理 權限」。
- 請按一下 授權。
CAN MANAGE 所允許的功能:
- 建立與刪除分支
- 管理運算並設定專案設定
- 建立與管理資料庫與 Postgres 角色
- 對專案運作的全面控制
備註
CAN MANAGE 提供對專案的完全控制權,包括許多其他行動。 CAN USE 允許在不需完整管理的情況下查看與使用資源(清單、檢視、取得連線 URI 及某些分支操作)。 有關所有權限等級及每個權限允許的特定動作的完整清單,請參閱 Lakebase 專案 ACL。
步驟 2:為使用者建立 Postgres 角色
現在建立一個 OAuth 角色,讓 Alex 能用他們的 Azure Databricks 身份和 OAuth 代幣進行認證。 作為專案擁有者,你擁有建立角色所需的權限。
打開 Lakebase SQL 編輯器並連接到你的專案。
建立
databricks_auth擴充功能(如果還沒啟用):CREATE EXTENSION IF NOT EXISTS databricks_auth;使用這個
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 編輯器:
Alex 打開 Lakebase 應用程式,並導向你的專案。
Alex 打開 Lakebase SQL 編輯器。
在 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:
- 從專案儀表板點選 「連結」。
- 選擇分支、運算和資料庫。
- 從 角色 下拉選單中選擇
alex.lopez@databricks.com。 - 複製
psql連線片段。 - 點擊 複製 OAuth 令牌 以取得認證令牌。
- 使用複製的
psql指令連線,並在提示輸入密碼時輸入 OAuth 令牌。 - 執行與上述相同的驗證查詢。
替代方案:唯讀資料庫存取
對於只需查詢資料而不修改資料的使用者,請授予相同的專案權限,但使用更嚴格的資料庫權限:
專案權限
授予 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 角色」。