這很重要
這項功能在下列區域中處於公開預覽狀態:westus、、westus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouth、canadacentralcentralindia、、 southeastasiauksouth
會自動建立 Lakebase 資料庫實例擁有者 Azure Databricks 身分識別的 Postgres 角色。
一開始,只有實例的擁有者可以透過Postgres登入和存取實例。 若要允許其他 Azure Databricks 身分識別登入資料庫執行個體,Azure Databricks 身分識別必須具有相應的 PostgreSQL 角色。
此頁面說明如何在PostgreSQL中新增和管理其他 Azure Databricks 身分識別型角色。
建立 Postgres 角色,並授與 Azure Databricks 身分識別的許可權
使用 Azure Databricks UI 或 PostgreSQL 查詢建立 Postgres 角色。
備註
角色管理動作會受到在資料庫實例上授與的許可權所控管。 在嘗試管理角色之前,請確定您有適當的存取層級。
UI
具有 CAN USE 資料庫實例許可權的使用者可以檢視與 Azure Databricks 身分識別相關聯的現有 Postgres 角色,或將自己的身分識別角色新增至實例。
具有 CAN MANAGE 的使用者可以為其他 Azure Databricks 身份建立角色,包括附加許可權,並卸除任何 Azure Databricks 身份的角色。
您可以在 資料庫執行個體 概觀頁面中,將其他許可權指派給任何所需的使用者、群組或服務主體。
在工作區側邊欄中按下 [計算]。
按兩下 [ 資料庫實例]。
按一下 權限 索引標籤。
按一下右上角的 新增 PostgreSQL 角色 。
針對 [工作區身分識別],輸入使用者、群組或服務主體,然後選取 Azure Databricks 身分識別。 您必須選取在該實例中尚未具有 Postgres 角色的 Azure Databricks 帳戶。
選取 角色成員資格。 如果您具有
CAN MANAGE資料庫執行個體的許可權,則可以將成員資格新增至databricks_superuser角色,並啟用某些角色屬性。選取要授與新角色的 PostgreSQL 屬性。
-
CREATEDB:授與建立新資料庫的許可權 -
CREATEROLE:授與建立新角色的許可權 -
BYPASS RLS:授予許可權以繞過實例中的所有行級安全性
-
按一下 [確認]。
PostgreSQL
建立新的 Postgres 角色之前,請確認您符合下列需求:
- 您必須已獲得資料庫上的
CREATE和CREATE ROLE許可權。 - 您必須以 Azure Databricks 身分識別 (使用者、服務主體或群組) 進行驗證並登入 Postgres。 原生 Postgres 已驗證的會話無法建立 Azure Databricks 角色。
- 您的 驗證權杖 必須有效,且在建立角色時未過期。
使用 函 databricks_create_role 式來新增和建立 Azure Databricks 身分識別型 PostgreSQL 角色。 自訂 PostgreSQL 擴充功能 databricks_auth 提供 databricks_create_role 函式。
建立
databricks_auth擴充套件。 每個 Postgres 資料庫都必須有自己的擴充功能。CREATE EXTENSION IF NOT EXISTS databricks_auth;使用
databricks_create_role函式來為 Azure Databricks 身分識別建立新的 Postgres 角色。 角色必須尚未存在。 如果具有相同名稱的角色存在,請先卸除該角色,再建立 Azure Databricks 身分識別型角色。SELECT databricks_create_role('identity_name', 'identity_type');identity_name和identity_type參數取決於 Azure Databricks 身分識別類型:Azure Databricks 使用者:
- identity_name:用戶的電子郵件,例如
myuser@databricks.com - identity_type:
USER
SELECT databricks_create_role('myuser@databricks.com','USER');- identity_name:用戶的電子郵件,例如
Azure Databricks 服務主體:
- identity_name:服務主體的應用程式標識碼,例如
8c01cfb1-62c9-4a09-88a8-e195f4b01b08 - identity_type:
SERVICE_PRINCIPAL
SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08','SERVICE_PRINCIPAL');- identity_name:服務主體的應用程式標識碼,例如
Azure Databricks 群組:
- identity_name:組名(區分大小寫):
My Group 123 - identity_type:
GROUP
SELECT databricks_create_role('My Group 123','GROUP');- identity_name:組名(區分大小寫):
使用
databricks_create_role建立的角色只擁有建立後授與的PUBLIC許可權。 若要授與或撤銷其他許可權,請使用標準 Postgres 許可權管理命令GRANT和REVOKE。授與角色讀取許可權以存取數據表。
GRANT SELECT ON "my_schema"."my_table" TO <role-name>;從角色移除數據表的寫入許可權。
REVOKE INSERT, UPDATE, DELETE ON TABLE "my_schema"."my_table" FROM <role-name>;撤銷角色對資料庫的所有存取權。
REVOKE CONNECT ON DATABASE "example_database" FROM <role-name>;
檢視 Azure Databricks 身分識別角色
UI
您可以在資料庫 執行個體 概觀頁面中查看哪些使用者、群組和服務主體具有對應的 Postgres 角色。
- 在工作區側邊欄中按下 [計算]。
- 按兩下 [ 資料庫實例]。
- 按一下 權限 索引標籤。
PostgreSQL
使用 PostgreSQL 查詢來列出預設建立的所有 Azure Databricks 身分識別角色,並從使用 databricks_create_role 函式,使用 databricks_list_roles 延伸模組中的 databricks_auth 函式。 列出所有已新增為 Postgres 角色的 Azure Databricks 使用者、服務主體和群組。
CREATE EXTENSION IF NOT EXISTS databricks_auth;
SELECT * from databricks_list_roles;
卸除 Azure Databricks 身分識別型 Postgres 角色
UI
捨棄角色無法復原。 您可以重新建立角色,但任何物件擁有權重新指派都無法復原,除非捨棄擁有重新指派物件的新角色。
- 在工作區側邊欄中按下 [計算]。
- 按兩下 [ 資料庫實例]。
- 按一下 權限 索引標籤。
- 針對您要捨棄的角色身分識別,按一下最右側的
- 按一下 刪除角色。
- 如果需要刪除某個角色而該角色擁有物件,請啟用重新分配擁有物件的功能。 這會將所有可重新指派的擁有物件 (資料庫、結構描述和資料表) 重新指派給另一個角色,然後捨棄任何不可重新指派的擁有物件。
- 按一下 [確認]。
PostgreSQL
可以像卸除任何其他 Postgres 角色一樣,卸除並移除 Azure Databricks 身分識別型 Postgres 角色。 如需詳細資訊,請參閱 卸除角色的PostgreSQL檔。 卸除 Azure Databricks 身分識別型角色之後,就無法用於令牌型驗證和存取 Postgres。