共用方式為


管理 Postgres 角色

這很重要

這項功能在下列區域中處於公開預覽狀態:westus、、westus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindia、、 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 身份的角色。

您可以在 資料庫執行個體 概觀頁面中,將其他許可權指派給任何所需的使用者、群組或服務主體。

  1. 點擊應用程式圖示。右上角的應用程式,選擇 Lakebase Postgres
  2. 點選 「已配置 」以開啟 「已配置實例」 頁面。
  3. 選擇你的資料庫實例。
  4. 請在 Lakebase App 側邊欄選擇 角色 頁面。
  5. 點選右上角的 「新增角色 」。
  6. 主體 下拉選單中,選擇你想授權資料庫存取的使用者、群組或服務主體。 你必須選擇一個尚未在實例中擁有 Postgres 角色的 Azure Databricks 帳戶。
  7. (可選)選擇 系統角色 以授予:
    • databricks_superuser:授權對所有資料進行讀寫存取。 這是一個具有廣泛權限的行政角色,繼承了 pg_read_all_datapg_write_all_datapg_monitor。 請參閱 預先建立的角色與權限
  8. (可選)選擇 系統屬性 以賦予特定能力:
    • CREATEDB:授權建立新的資料庫。
    • CREATEROLE:授權建立新角色。
    • BYPASSRLS:授權繞過列級安全(RLS)政策。
  9. 按下 新增

PostgreSQL

建立新的 Postgres 角色之前,請確認您符合下列需求:

  • 您必須已獲得資料庫上的 CREATECREATE ROLE 許可權。
  • 您必須以 Azure Databricks 身分識別 (使用者、服務主體或群組) 進行驗證並登入 Postgres。 原生 Postgres 已驗證的會話無法建立 Azure Databricks 角色。
  • 您的 驗證權杖 必須有效,且在建立角色時未過期。

使用 函 databricks_create_role 式來新增和建立 Azure Databricks 身分識別型 PostgreSQL 角色。 自訂 PostgreSQL 擴充功能 databricks_auth 提供 databricks_create_role 函式。

  1. 建立databricks_auth擴充套件。 每個 Postgres 資料庫都必須有自己的擴充功能。

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. 使用 databricks_create_role 函式來為 Azure Databricks 身分識別建立新的 Postgres 角色。 角色必須尚未存在。 如果具有相同名稱的角色存在,請先卸除該角色,再建立 Azure Databricks 身分識別型角色。

    SELECT databricks_create_role('identity_name', 'identity_type');
    

    identity_nameidentity_type 參數取決於 Azure Databricks 身分識別類型:

    • Azure Databricks 使用者:

      • identity_name:用戶的電子郵件,例如 myuser@databricks.com
      • identity_type:USER
      SELECT databricks_create_role('myuser@databricks.com','USER');
      
    • Azure Databricks 服務主體:

      • identity_name:服務主體的應用程式標識碼,例如 8c01cfb1-62c9-4a09-88a8-e195f4b01b08
      • identity_type:SERVICE_PRINCIPAL
      SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08','SERVICE_PRINCIPAL');
      
    • Azure Databricks 群組:

      • identity_name:組名(區分大小寫): My Group 123
      • identity_type:GROUP
      SELECT databricks_create_role('My Group 123','GROUP');
      
  3. 使用 databricks_create_role 建立的角色只擁有建立後授與的PUBLIC許可權。 若要授與或撤銷其他許可權,請使用標準 Postgres 許可權管理命令 GRANTREVOKE

    授與角色讀取許可權以存取數據表。

    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 角色。

  1. 點擊應用程式圖示。右上角的應用程式,選擇 Lakebase Postgres
  2. 點選 「已配置 」以開啟 「已配置實例」 頁面。
  3. 選擇你的資料庫實例。
  4. 請在 Lakebase App 側邊欄選擇 角色 頁面。

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

捨棄角色無法復原。 您可以重新建立角色,但任何物件擁有權重新指派都無法復原,除非捨棄擁有重新指派物件的新角色。

  1. 點擊應用程式圖示。右上角的應用程式,選擇 Lakebase Postgres
  2. 點選 「已配置 」以開啟 「已配置實例」 頁面。
  3. 選擇你的資料庫實例。
  4. 請在 Lakebase App 側邊欄選擇 角色 頁面。
  5. 對於你想丟棄的角色,請點擊 右側的烤肉選單圖示
  6. 點擊 Drop
  7. (可選)如果該角色擁有物件,請開啟重新指定擁有物件以便刪除該角色。 此選項會在刪除前將已擁有的物件重新指派到另一個角色。 有些物件(例如被移除角色的授權)無法重新指派,且在所有可重新指派的物件分配後才會被丟棄。
  8. 按一下 [確認]

PostgreSQL

可以像卸除任何其他 Postgres 角色一樣,卸除並移除 Azure Databricks 身分識別型 Postgres 角色。 如需詳細資訊,請參閱 卸除角色的PostgreSQL檔。 卸除 Azure Databricks 身分識別型角色之後,就無法用於令牌型驗證和存取 Postgres。