メインコンテンツまでスキップ

Postgresのロールを管理する

備考

ベータ版

Lakebase Postgres (オートスケール Beta) は 次のリージョンで利用できます: us-east-1us-west-2eu-west-1

このベータ リリースは Lakebase の次のバージョンであり、評価目的でのみ利用できます。本番運用ワークロードの場合は、 Lakebase Public Preview を使用します。 どのバージョンが適しているかを判断するには、バージョンの選択を参照してください。

データベース プロジェクトを作成すると、Lakebase によってプロジェクト内にいくつかの Postgres ロールが作成されます。

  • プロジェクト所有者の Databricks ID の Postgres ロール (例: user@databricks.com )。これはデフォルトのdatabricks_postgresデータベースを所有します。
  • databricks_superuser管理者ロール

databricks_postgresデータベースが作成されるので、プロジェクトの作成後すぐに Lakebase に接続して試すことができます。

システム管理ロールもいくつか作成されます。これらは、管理、モニタリング、データ操作のためにDatabricksサービスによって使用される内部ロールです。

詳細:事前作成されたロールシステムロール

Postgresロールを作成する

Lakebase は、データベース アクセス用に 2 種類の Postgres ロールをサポートしています。

  • ネイティブ Postgres パスワード ロール: Lakebase UI または SQL を使用して作成します。パスワード認証では有効なロール名を使用します。
  • Databricks ID の OAuth ロール: databricks_auth拡張機能と SQL を使用して作成します。Databricks ID (ユーザー、サービスプリンシパル、グループ) がOAuthトークンを使用して接続できるようにします。

認証方法の詳細については、認証を参照してください。

ネイティブのPostgresパスワードロールを作成する

Lakebase UI または標準 SQL コマンドを使用して、ネイティブ Postgres パスワード ロールを作成できます。

UI の使用:

  1. Lakebase アプリで、ブランチの概要ページに移動し、ブランチの [ロールとデータベース] タブに移動します。
  2. [ロールの追加] をクリックし、ロール名 (有効な Postgres ロール名) を指定します。

Postgresロールを追加する

  1. 作成 をクリックします。
  2. 生成されたパスワードをコピーし、このロールを使用するユーザーに安全に提供します。

Lakebase UI は、60 ビットのエントロピーを使用して安全なパスワードを自動的に生成します。UI を通じて作成されたロールには、広範なデータベース権限を提供するdatabricks_superuserロールのメンバーシップが自動的に付与されます。

SQL の使用:

標準の Postgres SQL コマンドを使用してネイティブの Postgres パスワード ロールを作成することもできます。

SQL
CREATE ROLE role_name WITH LOGIN PASSWORD 'your_secure_password';

SQL を使用してロールを作成する場合、パスワードは小文字、大文字、数字、記号を組み合わせた 12 文字以上にする必要があります。ユーザー定義のパスワードは、60 ビットのエントロピーを確保するために作成時に検証されます。

SQL を使用して Databricks ID の OAuth ロールを作成する

Databricks ID (ユーザー、サービスプリンシパル、またはグループ) がOAuth使用して接続できるようにするには、 databricks_auth拡張機能を使用して Postgres ロールを作成する必要があります。 グループにロールを作成すると、すべてのグループ メンバーがグループ ロールを使用して認証できるようになり、権限管理が簡素化されます。

前提条件:

  • データベースに対するCREATEおよびCREATE ROLE権限が必要です
  • 有効なOAuthでDatabricks IDとして認証される必要があります。
  • ネイティブPostgres認証セッションではOAuthロールを作成できません

OAuth ロールを作成するには:

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

    SQL
    CREATE EXTENSION IF NOT EXISTS databricks_auth;
  2. databricks_create_role関数を使用して、Databricks ID の Postgres ロールを作成します。

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

    Databricks ユーザーの場合:

    SQL
    SELECT databricks_create_role('myuser@databricks.com', 'USER');

    Databricksサービスプリンシパルの場合:

    SQL
    SELECT databricks_create_role('8c01cfb1-62c9-4a09-88a8-e195f4b01b08', 'SERVICE_PRINCIPAL');

    Databricks グループの場合:

    SQL
    SELECT databricks_create_role('My Group Name', 'GROUP');

    グループ名は大文字と小文字が区別され、Databricks ワークスペースに表示されるものと完全に一致する必要があります。グループの Postgres ロールを作成すると、そのDatabricksグループの直接的または間接的なメンバー (ユーザーまたはサービスプリンシパル) は、個別のOAuthアカウントを使用してグループ ロールとして Postgres に対して認証できます。 これにより、個々のユーザーの権限を管理する代わりに、Postgres のグループ レベルで権限を管理できるようになります。

  3. 新しく作成されたロールにデータベース権限を付与します。

databricks_create_role()関数は、 LOGIN権限のみを持つ Postgres ロールを作成します。ロールを作成した後、ユーザーがアクセスする必要がある特定のデータベース、スキーマ、またはテーブルに対して適切なデータベース権限とアクセス許可を付与する必要があります。方法を学ぶ:権限を管理する

グループベースの認証

Databricks グループの Postgres ロールを作成すると、グループベースの認証が有効になります。これにより、Databricks グループのどのメンバーもグループのロールを使用して Postgres に対して認証できるようになり、権限管理が簡素化されます。

仕組み:

  1. databricks_create_role('Group Name', 'GROUP')を使用して、Databricks グループの Postgres ロールを作成します。
  2. Postgres のグループ ロールにデータベース権限を付与します。「権限の管理」を参照してください。
  3. Databricksグループの直接的または間接的なメンバー (ユーザーまたはサービスプリンパルシ) は、個別のOAuthセキュリティを使用して Postgres に接続できます。
  4. 接続すると、メンバーはグループ ロールとして認証され、そのロールに付与されたすべての権限を継承します。

認証フロー:

グループ メンバーが接続するときに、グループの Postgres ロール名をユーザー名として指定し、独自の OAuth トークンをパスワードとして指定します。

Bash
export PGPASSWORD='<OAuth token of a group member>'
export GROUP_ROLE_NAME='<pg-case-sensitive-group-role-name>'

psql -h $HOSTNAME -p 5432 -d databricks_postgres -U $GROUP_ROLE_NAME

重要な考慮事項:

  • グループ メンバーシップの検証: グループ メンバーシップは認証時にのみ検証されます。接続を確立した後にメンバーが Databricks グループから削除された場合、接続はアクティブなままになります。削除されたメンバーからの新たな接続試行は拒否されます。
  • ワークスペースのスコープ: データベース プロジェクトと同じDatabricksワークスペースに割り当てられたグループのみが、グループベースの認証でサポートされます。 ワークスペースにグループを割り当てる方法については、 「グループの管理」を参照してください。
  • 大文字と小文字の区別: databricks_create_role()で使用されるグループ名は、大文字と小文字を含め、Databricks ワークスペースに表示されるグループ名と完全に一致する必要があります。
  • 権限管理: Postgres では、グループ レベルで権限を管理する方が、個々のユーザー権限を管理するよりも効率的です。グループ ロールに権限を付与すると、現在のグループ メンバーと将来のグループ メンバー全員がその権限を自動的に継承します。
注記

ロール名は 63 文字を超えることはできず、一部の名前は許可されません。詳細:役割の管理

Postgres のロールを表示

プロジェクト内のすべての Postgres ロールを表示するには、Lakebase アプリでブランチの [ロールとデータベース] タブに移動します。システム ロールを除く、ブランチで作成されたすべてのロールが、パスワード認証を使用するネイティブ Postgres ロールも含めて一覧表示されます。

Postgres のロールを表示

Postgresロールを削除する

Databricks ID ベースのロールとネイティブの Postgres パスワード ロールの両方を削除できます。

ロールの削除は元に戻すことのできない永続的なアクションです。データベースを所有するロールは削除できません。データベースを所有するロールを削除する前に、データベースを削除する必要があります。

UI を使用して Postgres ロールを削除するには:

  1. Lakebase アプリでブランチの [ロールとデータベース] タブに移動します。
  2. ロールメニューから 「ロールの削除」 を選択し、削除を確認します。

事前に作成されたロール

データベース プロジェクトが作成されると、Databricks はプロジェクト管理と開始のために Postgres ロールを自動的に作成します。

ロール

説明

継承された権限

<project_owner_role>

プロジェクト作成者の Databricks ID (例: my.user@databricks.com )。このロールはデフォルトのdatabricks_postgresデータベースを所有し、プロジェクトにログインして管理できます。

メンバー databricks_superuser

databricks_superuser

内部管理の役割。プロジェクト全体のアクセスを構成および管理するために使用されます。このロールには広範な権限が付与されます。

pg_read_all_datapg_write_all_datapg_monitorから継承します。

これらのロールの特定の機能と権限の詳細については、以下を参照してください:事前に作成されたロールの機能

Databricksによって作成されたシステムロール

Databricks は、内部サービスに必要な次のシステム ロールを作成します。これらのロールは、 psqlまたはLakebase SQL エディターから\duコマンドを発行することで表示できます。

ロール

目的

cloud_admin

クラウド インフラストラクチャ管理に使用されるスーパーユーザー ロール

databricks_control_plane

管理操作のために内部 Databricks コンポーネントによって使用されるスーパーユーザー ロール

databricks_monitor

内部メトリクス収集サービスによって使用される

databricks_replicator

データベースのレプリケーション操作に使用される

databricks_writer_<dbid>

同期されたテーブルの作成と管理に使用されるデータベースごとのロール

databricks_reader_<dbid>

Unity Catalogに登録されたテーブルを読み取るために使用されるデータベースごとのロール

databricks_gateway

マネージドデータ配信サービスの内部接続に使用されます

Postgres でのロール、権限、およびロール メンバーシップの仕組みについては、Postgres ドキュメントの次のリソースを参照してください。

次のステップ