Postgres ロールは、Postgres データベース、スキーマ、テーブル、およびその他のデータベース オブジェクトへのアクセスを制御します。 Lakebase UI を使用して、チームのロールを作成および管理します。
ロールの概要
プロジェクトを作成すると、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_data、 pg_write_all_data、および pg_monitorを継承) または標準 Postgres 属性 (CREATEDB、 CREATEROLE、 BYPASSRLS) を付与します。 PostgreSQL ドキュメントの ロール属性 を参照してください。
OAuth ロールを作成するには、[ ロール] & [データベース>ロールの追加>OAuth ] タブに移動し、[ プリンシパル ] ドロップダウンから ID を選択し、アクセス許可を構成して、[ 追加] をクリックします。
注
SQL または REST API で databricks_auth 拡張機能を使用して OAuth ロールを作成することもできます。
Postgres ロールの作成を参照してください。
パスワード ロールを作成する
パスワード ロールでは静的 Postgres パスワードが使用され、Azure Databricks ID にはリンクされません。 これらは、従来のデータベース資格情報を必要とするアプリケーションまたはツールに役立ちます。
Lakebase アプリは、セキュリティで保護されたパスワードを自動的に生成します。 作成直後にコピーします。再び表示されません。 カスタム パスワードが必要な場合は、後で SQL を使用して設定します。 OAuth ロールと同じオプションのアクセス許可が適用されます (databricks_superuser、 CREATEDB、 CREATEROLE、 BYPASSRLS)。 ロール名は有効な 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 トークンを使用し、リセットするパスワードがありません。
ロールのパスワードをリセットするには:
- Lakebase アプリのブランチの [ロールとデータベース ] タブに移動します。
- ロール メニューから [ パスワードのリセット ] を選択し、[ リセット] をクリックします。
- 新しく生成されたパスワードをコピーします。
注
Lakebase アプリでパスワードをリセットすると、60 ビット エントロピで生成された値にパスワードがリセットされます。 独自のパスワード値を設定するには、次の構文を使用して 、SQL エディター または psql などの SQL クライアントを使用してパスワードをリセットできます。
ALTER USER user_name WITH PASSWORD 'new_password';
パスワードには、小文字、大文字、数字、および記号の文字が混在する少なくとも 12 文字が必要です。 ユーザー定義パスワードは作成時に検証され、60 ビットエントロピが保証されます。
新しい OAuth トークンを取得する
OAuth 認証を使用していて、新しい OAuth トークンが必要な場合 (トークンは 1 時間後に期限切れになります)、Connect モーダルから取得できます。
- Lakebase アプリでプロジェクトに移動します。
- [ 接続 ] をクリックして、データベース接続モーダルを開きます。
- [ ロール ] ドロップダウンから OAuth ロールを選択します。
- [ OAuth トークンのコピー ] をクリックして、新しいトークンをコピーします。
詳細情報: OAuth ロールを使用して接続する | 認証について
ロールを削除する
Important
ロールの削除は、元に戻すことができない永続的な操作であり、データベースを所有するロールを削除することはできません。 データベースを所有するロールを削除する前に、データベースを削除する必要があります。
ロールを削除するには:
- Lakebase アプリのブランチの [ロールとデータベース ] タブに移動します。
- [ ロール ] メニューから [ロールの削除] を選択し、削除を確認します。