ロールの管理

Postgres ロールは、Postgres データベース、スキーマ、テーブル、およびその他のデータベース オブジェクトへのアクセスを制御します。 Lakebase UI を使用して、チームのロールを作成および管理します。

ロールを操作する前に、データベースに 接続 し、OAuth トークンまたはネイティブ Postgres パスワード 認証 を使用して認証する方法を参照してください。

ロールの概要

プロジェクトを作成すると、Databricks ID (たとえば、 user@databricks.com) に対して Postgres ロールが自動的に作成されます。 このロールは、既定の databricks_postgres データベースを所有し、 databricks_superuserのメンバーであり、データベース オブジェクトを管理するための広範な特権を付与します。 プロジェクトの既定のブランチまたは子ブランチで、追加のロールを作成できます。

Terraform を使用してプロジェクトを管理し、この暗黙的な所有者ロールを IaC 管理の下に持ち込む場合は、導入パターンについてはreplace_existingに関するページを参照してください。

代わりに宣言型オートメーション バンドルを使用する場合は、同じパターンの 宣言型オートメーション バンドルを使用した一般的な Lakebase プロジェクトのセットアップ に関するページを参照してください。

Postgres ロールの状態はブランチ間で独立しています。 ブランチを作成すると、ブランチ時に親の Postgres ロール、データベース、ロール メンバーシップ、および許可が反映されます。 分岐後、各ブランチは個別に進化します。作成されたロールとデータベース、GRANT と REVOKEs が適用され、1 つのブランチで変更されたロール属性またはメンバーシップは、親を含む他のブランチには影響しません。 ブランチ間のロール状態の自動同期はありません。

Projectアクセス許可 (CAN USE、CAN MANAGE) の動作は異なります。project全体とそのすべてのブランチに適用されます。 「 プロジェクトのアクセス許可の管理」を参照してください。

ロールを作成する

Lakebase アプリの [ロールの追加] ダイアログを使用して、Databricks ID の OAuth ロールまたはネイティブ Postgres パスワード ロールを作成します。

OAuth ロールを作成する

OAuth ロールは Azure Databricks ID (ユーザー、サービス プリンシパル、またはグループ) にリンクされ、OAuth トークンを使用して認証されます。これは 1 時間後に期限切れになります。

子ブランチを作成すると、ブランチ時の親のロールとデータベースの状態が反映されます。 その後、各ブランチにおけるロールの状態は独立して変化していきます。 グループの場合、ワークスペース レベルのグループのみがサポートされます。

必要に応じて、 databricks_superuser ( pg_read_all_datapg_write_all_data、および pg_monitorを継承) または標準 Postgres 属性 (CREATEDBCREATEROLEBYPASSRLS) を付与します。 PostgreSQL ドキュメントの ロール属性 を参照してください。

OAuth ロールを作成するには、[ ロール] & [データベース>ロールの追加>OAuth ] タブに移動し、[ プリンシパル ] ドロップダウンから ID を選択し、アクセス許可を構成して、[ 追加] をクリックします。

ロールの追加 - [OAuth] タブ

SQL または REST API で databricks_auth 拡張機能を使用して OAuth ロールを作成することもできます。 Postgres ロールの作成を参照してください。

パスワード ロールを作成する

パスワード ロールでは静的 Postgres パスワードが使用され、Azure Databricks ID にはリンクされません。 これらは、従来のデータベース資格情報を必要とするアプリケーションまたはツールに役立ちます。

Lakebase アプリは、セキュリティで保護されたパスワードを自動的に生成します。 作成直後にコピーします。再び表示されません。 カスタム パスワードが必要な場合は、後で SQL を使用して設定します。 OAuth ロールと同じオプションのアクセス許可が適用されます (databricks_superuserCREATEDBCREATEROLEBYPASSRLS)。 ロール名は有効な Postgres 識別子である必要があり、63 文字を超えることはできません。

パスワード ロールを作成するには、[ ロール] & [データベース>ロールの追加>Password ] タブに移動し、ロール名を入力してアクセス許可を構成し、[ 追加] をクリックして、生成されたパスワードをコピーします。

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

ロールの表示

ブランチ内のすべてのロールを表示するには、Lakebase アプリのブランチの [ロール] & [データベース ] タブに移動します。

ロールの一覧

パスワード接続の管理

新しい Lakebase 自動スケール プロジェクトでは、パスワード接続は既定で無効になっています。 既存のプロジェクトは、この既定の影響を受けません。

パスワード接続を有効にするには、プロジェクト の設定>Database 接続 に移動し、 パスワード (Native Postgres ロール) を確認します。

パスワード接続を無効にするには、プロジェクト の設定>Database 接続 に移動し、 パスワード (Native Postgres ロール) をオフにします。 既存のパスワード ロールは削除されませんが、パスワード接続が無効になっている間は認証できません。

コンピューティング エンドポイントごとにこれを制御することもできます。 ブランチのコンピューティング設定で、[>] を選択し、[パスワード (Postgres ロール)] をオンまたはオフにします。

データベース接続の設定

Important

これは動作の変更です。 新しい Lakebase 自動スケーリング プロジェクトを作成し、ネイティブ Postgres パスワード接続に依存するオートメーション スクリプトまたは CI パイプラインがある場合は、プロジェクトの作成後にパスワード接続を明示的に有効にする必要があります。

プログラムでパスワード接続を有効または無効にするには:

CLI

# Enable password connections
databricks postgres update-project projects/<project-id> spec.enable_pg_native_login \
  --json '{"spec": {"enable_pg_native_login": true}}'

# Disable password connections
databricks postgres update-project projects/<project-id> spec.enable_pg_native_login \
  --json '{"spec": {"enable_pg_native_login": false}}'

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import FieldMask, Project, ProjectSpec

w = WorkspaceClient()

# Enable password connections
w.postgres.update_project(
    name="projects/<project-id>",
    project=Project(spec=ProjectSpec(enable_pg_native_login=True)),
    update_mask=FieldMask(field_mask=["spec.enable_pg_native_login"]),
).wait()

# Disable password connections
w.postgres.update_project(
    name="projects/<project-id>",
    project=Project(spec=ProjectSpec(enable_pg_native_login=False)),
    update_mask=FieldMask(field_mask=["spec.enable_pg_native_login"]),
).wait()

curl

# Enable password connections
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/postgres/projects/<project-id>?update_mask=spec.enable_pg_native_login" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"spec": {"enable_pg_native_login": true}}' | jq

# Disable password connections
curl -X PATCH "https://${DATABRICKS_HOST}/api/2.0/postgres/projects/<project-id>?update_mask=spec.enable_pg_native_login" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"spec": {"enable_pg_native_login": false}}' | jq

認証については、「 認証について」を参照してください。

パスワードをリセットする

ネイティブ Postgres パスワード ロールのパスワードをリセットできます。 OAuth ロールは認証に OAuth トークンを使用し、リセットするパスワードがありません。

ロールのパスワードをリセットするには:

  1. Lakebase アプリのブランチの [ロールとデータベース ] タブに移動します。
  2. ロール メニューから [ パスワードのリセット ] を選択し、[ リセット] をクリックします。
  3. 新しく生成されたパスワードをコピーします。

Lakebase アプリでパスワードをリセットすると、60 ビット エントロピで生成された値にパスワードがリセットされます。 独自のパスワード値を設定するには、次の構文を使用して 、SQL エディター または psql などの SQL クライアントを使用してパスワードをリセットできます。

ALTER USER user_name WITH PASSWORD 'new_password';

パスワードには、小文字、大文字、数字、および記号の文字が混在する少なくとも 12 文字が必要です。 ユーザー定義パスワードは作成時に検証され、60 ビットエントロピが保証されます。

新しい OAuth トークンを取得する

OAuth 認証を使用していて、新しい OAuth トークンが必要な場合 (トークンは 1 時間後に期限切れになります)、Connect モーダルから取得できます。

  1. Lakebase アプリでプロジェクトに移動します。
  2. [ 接続 ] をクリックして、データベース接続モーダルを開きます。
  3. [ ロール ] ドロップダウンから OAuth ロールを選択します。
  4. [ OAuth トークンのコピー ] をクリックして、新しいトークンをコピーします。

詳細情報: OAuth ロールを使用して接続する | 認証について

ロールを削除する

Important

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

ロールを削除するには:

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

データベース ロールを管理するには、 CAN MANAGE または CAN USEプロジェクト権限が必要です。 必要なアクセス許可がない場合は、ロール関連のアクションを実行しようとすると、"アクセス許可が必要です" というメッセージが表示されます。 アクセス権を要求するには、ワークスペース管理者に問い合わせてください。 詳細については、「プロジェクトの アクセス許可の管理」を参照してください。