次の方法で共有


Postgres ロールの管理

Important

この機能は、westuswestus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiasoutheastasiaの各リージョンのuksouth段階にあります。

Lakebase データベース インスタンス所有者の Azure Databricks ID の Postgres ロールが自動的に作成されます。

最初は、インスタンスの所有者のみが Postgres 経由でログインしてインスタンスにアクセスできます。 他の Azure Databricks ID がデータベース インスタンスにログインできるようにするには、Azure Databricks ID に対応する Postgres ロールが必要です。

このページでは、PostgreSQL で Azure Databricks ID ベースのロールを追加および管理する方法について説明します。

Postgres ロールを作成し、Azure Databricks ID の特権を付与する

Azure Databricks UI または PostgreSQL クエリを使用して Postgres ロールを作成します。

ロール管理アクションは、データベース インスタンスに付与されたアクセス許可によって制御されます。 ロールの管理を試みる前に、適切なレベルのアクセス権があることを確認します。

UI

データベース インスタンス CAN USE アクセス許可を持つユーザーは、Azure Databricks ID に関連付けられている既存の Postgres ロールを表示したり、独自の ID のロールをインスタンスに追加したりできます。

CAN MANAGEを持つユーザーは、他の Azure Databricks ID のロール (追加の特権を含む) を追加で作成したり、Azure Databricks ID のロールを削除したりできます。

データベース インスタンスの概要ページでは、必要なユーザー、グループ、またはサービス プリンシパルに追加のアクセス許可を割り当てることができます。

  1. [アプリ] アイコンをクリックします。右上隅にあるアプリを選択し、Lakebase Postgres を選択します。
  2. [ プロビジョニング済み ] をクリックして、[ プロビジョニングされたインスタンス ] ページを開きます。
  3. データベース インスタンスを選択します。
  4. [Lakebase アプリ] サイドバーの [ ロール ] ページを選択します。
  5. 右上隅にある [ ロールの追加] をクリックします。
  6. [ プリンシパル ] ドロップダウン メニューから、データベース アクセスを許可するユーザー、グループ、またはサービス プリンシパルを選択します。 インスタンスに Postgres ロールがまだない Azure Databricks ID を選択する必要があります。
  7. (省略可能)付与する システム ロール を選択します。
    • databricks_superuser: すべてのデータへの読み取りと書き込みのアクセスを許可します。 これは、 pg_read_all_datapg_write_all_data、および pg_monitorから継承される広範な特権を持つ管理ロールです。 事前に作成されたロールとアクセス許可を参照してください。
  8. (省略可能)特定の機能を付与するには 、[システム属性] を 選択します。
    • CREATEDB: 新しいデータベースを作成するためのアクセス許可を付与します。
    • CREATEROLE: 新しいロールを作成するためのアクセス許可を付与します。
    • BYPASSRLS: 行レベル セキュリティ (RLS) ポリシーをバイパスするアクセス許可を付与します。
  9. 追加をクリックします。

PostgreSQL

新しい Postgres ロールを作成する前に、次の要件を満たしていることを確認します。

  • データベースに対する CREATE 権限と CREATE ROLE 権限が必要です。
  • Azure Databricks ID (ユーザー、サービス プリンシパル、またはグループ) として認証して Postgres にログインする必要があります。 ネイティブ Postgres 認証セッションでは、Azure Databricks ロールを作成できません。
  • 認証トークンは有効であり、ロールの作成時に有効期限が切れていない必要があります。

databricks_create_role関数を使用して、Azure Databricks ID ベースの PostgreSQL ロールを追加して作成します。 カスタム PostgreSQL 拡張機能 databricks_auth は、 databricks_create_role 関数を提供します。

  1. databricks_auth拡張機能を作成します。 各 Postgres データベースには、独自の拡張機能が必要です。

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  2. databricks_create_role関数を使用して、Azure Databricks ID の新しい Postgres ロールを追加および作成します。 ロールがまだ存在してはいけません。 同じ名前のロールが存在する場合は、Azure Databricks ID ベースのロールを作成する前に削除します。

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

    identity_nameパラメーターとidentity_type パラメーターは、Azure Databricks ID の種類によって異なります。

    • Azure Databricks ユーザー:

      • identity_name: ユーザーの電子メール (例: myuser@databricks.com
      • IDタイプ: USER
      SELECT databricks_create_role('myuser@databricks.com','USER');
      
    • Azure Databricks サービス プリンシパル:

      • identity_name: サービス プリンシパルのアプリケーション ID (例: 8c01cfb1-62c9-4a09-88a8-e195f4b01b08
      • IDタイプ: SERVICE_PRINCIPAL
      SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08','SERVICE_PRINCIPAL');
      
    • Azure Databricks グループ:

      • identity_name: グループの名前 (大文字と小文字が区別されます): My Group 123
      • IDタイプ: GROUP
      SELECT databricks_create_role('My Group 123','GROUP');
      
  3. 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 ID ロールを表示する

UI

データベース インスタンスの概要ページで、対応する Postgres ロールを持つユーザー、グループ、サービス プリンシパルを確認できます。

  1. [アプリ] アイコンをクリックします。右上隅にあるアプリを選択し、Lakebase Postgres を選択します。
  2. [ プロビジョニング済み ] をクリックして、[ プロビジョニングされたインスタンス ] ページを開きます。
  3. データベース インスタンスを選択します。
  4. [Lakebase アプリ] サイドバーの [ ロール ] ページを選択します。

PostgreSQL

PostgreSQL クエリを使用して、既定で作成されたすべての Azure Databricks ID ロールを一覧表示し、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 ID ベースの Postgres ロールを削除する

UI

ロールの削除を元に戻すことはできません。 ロールは再作成できますが、再割り当てされたオブジェクトを所有する新しいロールを削除しなくても、オブジェクトの所有権の再割り当ては元に戻すことはできません。

  1. [アプリ] アイコンをクリックします。右上隅にあるアプリを選択し、Lakebase Postgres を選択します。
  2. [ プロビジョニング済み ] をクリックして、[ プロビジョニングされたインスタンス ] ページを開きます。
  3. データベース インスタンスを選択します。
  4. [Lakebase アプリ] サイドバーの [ ロール ] ページを選択します。
  5. ドロップするロールの場合は、行の右側にある [Kebab] メニュー アイコン をクリックします。
  6. [ ドロップ] をクリックします。
  7. (省略可能)ロールがオブジェクトを所有している場合は、[ 所有オブジェクトの再割り当て ] をオンにしてロールの削除を有効にします。 このオプションは、削除する前に所有オブジェクトを別のロールに再割り当てします。 一部のオブジェクト (削除されるロールへの許可など) は再割り当てできず、再割り当て可能なすべてのオブジェクトの再割り当て後に削除されます。
  8. [Confirm](確認) をクリックします。

PostgreSQL

Azure Databricks ID ベースの Postgres ロールは、他の Postgres ロールと同じように削除できます。 詳細については、 ロールの削除に関する PostgreSQL ドキュメントを参照してください。 Azure Databricks の ID ベースのロールが削除された後は、トークンベースの認証と Postgres へのアクセスに使用できません。