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

Postgresロールを作成する

備考

Lakebase オートスケールは次のリージョンで利用できます: us-east-1us-east-2us-west-2ca-central-1sa-east-1eu-central-1eu-west-1eu-west-2ap-south-1ap-southeast-1ap-southeast-2

Lakebase オートスケールは、オートスケール コンピュート、ゼロへのスケール、分岐、即時復元を備えた Lakebase の最新バージョンです。 Lakebase プロビジョニング ユーザーの場合は、 「Lakebase プロビジョニング」を参照してください。

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

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

これらの両方のロールは、プロジェクトを初めて開いたときに、 [ロールとデータベース] タブに表示されます。

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

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

注記

Postgres のロールは 、データベース アクセス (誰がデータをクエリできるか) を制御します。 プロジェクト権限 (インフラストラクチャを管理できるユーザー) については、 「プロジェクト権限」を参照してください。両方のセットアップに関するチュートリアルについては、 「チュートリアル: 新しいユーザーにプロジェクトとデータベースのアクセスを許可する」を参照してください。

事前作成されたロールシステム ロールを参照してください。

Postgresロールを作成する

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

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

使用するロールの種類を選択するためのガイダンスについては、 「認証の概要」を参照してください。それぞれ異なるユースケース向けに設計されています。

Databricks ID 用の OAuth ロールを作成する

Databricks ID (ユーザー、サービスプリンシパル、またはグループ) がOAuthを使用して接続できるようにするには、Lakebase UI、 SQLを使用したdatabricks_auth拡張機能、またはREST APIを使用してOAuthロールを作成します。

OAuthローンを取得する詳細な手順については、 「ユーザーからマシンへのフローでOAuthローンを取得する」および「マシンからマシンへのフローでOAuthローンを取得する」を参照してください。

  1. [役割とデータベース] > [役割の追加] > OAuth タブで、データベース アクセスを許可するユーザー、サービスプリンシパル、またはグループを選択します。
  2. ロールを作成したら、適切なデータベース権限を付与します。方法を学ぶ:権限を管理する

ロールの追加 - OAuth タブ

グループベースの認証

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

仕組み:

  1. 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 では、グループ レベルで権限を管理する方が、個々のユーザー権限を管理するよりも効率的です。グループ ロールに権限を付与すると、現在のグループ メンバーと将来のグループ メンバー全員がその権限を自動的に継承します。
  • ID の名前変更: Databricksでユーザーの電子メールまたはグループの表示名が変更されると、認証と既存のデータベース許可が壊れます。 古いロールを削除し、更新された名前で新しいロールを作成し、接続文字列と許可を更新します。
注記

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

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

パスワード接続は、プロジェクトまたはコンピュート レベルで無効にすることができます。 「パスワード接続をブロックする」を参照してください。

  1. [ロールとデータベース] > [ロールの追加] > [パスワード] タブで、ロール名を入力し、オプションでdatabricks_superuserまたはシステム属性 ( CREATEDBCREATEROLEBYPASSRLS ) を付与します。
  2. 生成されたパスワードをコピーし、ユーザーに安全に提供します。再度表示されません。

ロールの追加 - パスワードタブ

Postgres のロールを表示

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

役割リスト

役割を更新する

UI でロールの属性を更新するには、 「ロールとデータベース」 タブのロール メニューから 「ロールの編集」 を選択します。

API を使用して、ロールのシステム ロールまたは属性を更新します。変更するフィールドを指定するには、クエリ引数としてupdate_mask使用します。マスクされたフィールドのみが変更されます。

注記

更新および削除の呼び出しで使用するロールのリソース名を取得するには、ロールのリストエンドポイントを使用します。ロール リソース名では、作成時に指定されたpostgres_role値ではなく、システムによって生成された識別子 (たとえば、 rol-xxxx-xxxxxxxxxx ) が使用されます。

Bash
curl -X PATCH "$WORKSPACE/api/2.0/postgres/projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx?update_mask=spec.membership_roles%2Cspec.attributes.createdb" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "projects/my-project/branches/production/roles/rol-xxxx-xxxxxxxxxx",
"spec": {
"membership_roles": ["DATABRICKS_SUPERUSER"],
"attributes": { "createdb": true }
}
}' | jq

databricks_superuserを削除するには、空の配列"membership_roles": []を渡します。

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 ドキュメントの次のリソースを参照してください。

次のステップ