Postgres ロールの管理
プレビュー
この機能は、us-east-1、 us-west-2、 eu-west-1、 ap-southeast-1、 ap-southeast-2、 eu-central-1、 us-east-2、 ap-south-1のリージョンでパブリック プレビューとして提供されています。
Lakebase プロビジョニング プレビューは、手動でスケールするプロビジョニング コンピュートを使用します。 オートスケール コンピュート、分岐、即時復元、その他の高度な機能をサポートする Lakebase の新しいバージョンについては、 「Lakebase Postgres (オートスケール プレビュー)」を参照してください。 どのバージョンが適しているかを判断するには、バージョンの選択を参照してください。
Lakebase データベース インスタンス所有者の Databricks ID の Postgres ロールが自動的に作成されます。
最初は、インスタンスの所有者のみが Postgres を介してログインしてインスタンスにアクセスできます。他の Databricks ID がデータベース インスタンスにログインできるようにするには、Databricks ID に対応する Postgres ロールが必要です。
このページでは、PostgreSQL で Databricks ID ベースのロールを追加および管理する方法について説明します。
Postgres ロールを作成し、Databricks ID の特権を付与する
Databricks UI または PostgreSQL クエリを使用して Postgres ロールを作成します。
ロール管理アクションは、データベース・インスタンスに付与された権限によって管理されます。ロールの管理を試みる前に、適切なレベルのアクセス権があることを確認してください。
- UI
- PostgreSQL
データベース インスタンスに対する CAN USE アクセス許可を持つユーザーは、Databricks ID に関連付けられている既存の Postgres ロールを表示したり、自分の ID のロールをインスタンスに追加したりできます。
CAN MANAGEを持つユーザーは、追加の特権を含む他の Databricks ID のロールを追加で作成し、任意の Databricks ID のロールを削除できます。
データベース ・インスタンス の概要ページで、任意のユーザー、グループ、またはサービスプリンシパルに追加の権限を割り当てることができます。
-
ワークスペースのサイドバーで「 コンピュート 」をクリックします。
-
データベース・インスタンス をクリックします。
-
「 アクセス許可 」タブをクリックします。
-
右上の PostgreSQL ロールの追加 をクリックします。
-
[ ワークスペース identity ] に、ユーザー、グループ、またはサービスプリンシパルを入力し、 Databricks ID を選択します。 インスタンスに Postgres ロールがまだない Databricks ID を選択する必要があります。
-
[ロール] メンバーシップ を選択します。データベース インスタンスに対する
CAN MANAGEアクセス許可がある場合は、databricks_superuserロール にメンバーシップを追加し、一部のロール属性を有効にすることができます。 -
新しいロールに付与するPostgreSQL属性を選択します。
CREATEDB: 新しいデータベースを作成する権限を付与します。CREATEROLE: 新しいロールを作成する権限を付与します。BYPASS RLS: インスタンス内のすべての行レベルのセキュリティをバイパスする権限を付与します。
-
確認 をクリックします。
新しいPostgresロールを作成する前に、次の要件を満たしていることを確認してください。
- データベースに対する
CREATE権限とCREATE ROLE権限が必要です。 - Postgres に認証し、 Databricks ID (ユーザー、サービスプリンシパル、またはグループ) としてログインする必要があります。 ネイティブ Postgres 認証セッションでは、Databricks ロールを作成できません。
- 認証トークンは有効であり、ロールの作成時に有効期限が切れていない必要があります。
databricks_create_role 関数を使用して、Databricks ID ベースの PostgreSQL ロールを追加および作成します。カスタムPostgreSQL拡張機能 databricks_auth は、 databricks_create_role 関数を提供します。
-
databricks_auth拡張機能を作成します。各Postgresデータベースには、独自の拡張子が必要です。SQLCREATE EXTENSION IF NOT EXISTS databricks_auth; -
databricks_create_role関数を使用して、Databricks ID の新しい Postgres ロールを追加および作成します。ロールはすでに存在していてはなりません。同じ名前のロールが存在する場合は、Databricks ID ベースのロールを作成する前に削除します。SQLSELECT databricks_create_role('identity_name', 'identity_type');identity_nameパラメーターとidentity_typeパラメーターは、Databricks ID の種類によって異なります。-
Databricks ユーザー:
- identity_name:ユーザーの電子メール(例:
myuser@databricks.com - identity_type:
USER
SQLSELECT databricks_create_role('myuser@databricks.com','USER'); - identity_name:ユーザーの電子メール(例:
-
Databricks サービスプリンシパル:
- identity_name:サービスプリンシパルのアプリケーションID(例:
8c01cfb1-62c9-4a09-88a8-e195f4b01b08 - identity_type:
SERVICE_PRINCIPAL
SQLSELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08','SERVICE_PRINCIPAL'); - identity_name:サービスプリンシパルのアプリケーションID(例:
-
Databricks グループ:
- identity_name: グループの名前 (大文字と小文字を区別):
My Group 123 - identity_type:
GROUP
SQLSELECT databricks_create_role('My Group 123','GROUP'); - identity_name: グループの名前 (大文字と小文字を区別):
-
-
databricks_create_roleを使用して作成されたロールには、作成後にPUBLICにのみ権限が付与されます。追加の権限を付与または取り消すには、標準のPostgres権限管理コマンドGRANTとREVOKEを使用します。テーブルにアクセスするための読み取りアクセス許可をロールに付与します。
SQLGRANT SELECT ON "my_schema"."my_table" TO <role-name>;ロールからテーブルへの書き込みアクセスを削除します。
SQLREVOKE INSERT, UPDATE, DELETE ON TABLE "my_schema"."my_table" FROM <role-name>;ロールからデータベースへのすべてのアクセスを取り消します。
SQLREVOKE CONNECT ON DATABASE "example_database" FROM <role-name>;
Databricks ID ロールを表示する
- UI
- PostgreSQL
どのユーザー、グループ、およびサービスプリンシパルが対応するPostgresロールを持っているかは、 データベース・インスタンス の概要ページで確認できます。
- ワークスペースのサイドバーで「 コンピュート 」をクリックします。
- データベース・インスタンス をクリックします。
- 「 アクセス許可 」タブをクリックします。
PostgreSQLクエリを使用して、によって作成されたすべてのDatabricks ID ロールを一覧表示します デフォルト databricks_create_role関数を使用して、databricks_auth 拡張機能の databricks_list_roles 関数を使用します。これにより、Postgres ロールとして認証するために追加されたすべての Databricks ユーザー、サービスプリンシパル、およびグループが一覧表示されます。
CREATE EXTENSION IF NOT EXISTS databricks_auth;
SELECT * from databricks_list_roles;
Databricks ID ベースの Postgres ロールを削除する
- UI
- PostgreSQL
ロールの削除は元に戻せません。ロールを再作成することはできますが、オブジェクト所有権の再割り当ては、再割り当てされたオブジェクトを所有する新しいロールを削除せずに元に戻すことはできません。
- ワークスペースのサイドバーで「 コンピュート 」をクリックします。
- データベース・インスタンス をクリックします。
- 「 アクセス許可 」タブをクリックします。
- ドロップするロール ID で、右端の [
] をクリックします。
- [ ロールの削除 ] をクリックします。
- オブジェクトを所有するロールを削除する必要がある場合は、[ 所有オブジェクトを再割り当て] をオンにします。これにより、再割り当て可能なすべての所有オブジェクト (データベース、スキーマ、およびテーブル) が他の役割に再割り当てされ、再割り当て不可の所有オブジェクトが削除されます。
- 確認 をクリックします。
Databricks ID ベースの Postgres ロールは、他の Postgres ロールと同様に削除および削除できます。詳細については、 ロールの削除に関するPostgreSQLのドキュメントを参照してください。Databricks ID ベースのロールが削除されると、トークンベースの認証と Postgres へのアクセスに使用できなくなります。