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

データベース・インスタンスに対する認証

備考

プレビュー

この機能は、us-east-1us-west-2eu-west-1ap-southeast-1ap-southeast-2eu-central-1us-east-2ap-south-1のリージョンでパブリック プレビューとして提供されています。

Lakebase (パブリック プレビュー) は、現在の本番運用対応バージョンです。 データベース分岐、オートスケール、ゼロへのスケールなどの最新機能については、評価版のみ利用可能なLakebase Postgres (ベータ)をお試しください。 どのバージョンが適しているかを判断するには、バージョンの選択を参照してください。

このページでは、Lakebase データベースインスタンスに対して認証する方法について説明します。認証には、次の 2 つの方法があります。

  1. OAuth トークンを取得し、Databricks ID を使用して認証します。
  2. パスワードでネイティブのPostgresロールを使用します。

Databricks ID で認証する

Databricks ID として認証する場合は、OAuth トークンを生成し、Postgres に接続するときにパスワードとして使用する必要があります。

開始前の考慮事項

  • OAuth トークンは 1 時間後に期限切れになりますが、有効期限はログイン時にのみ適用されます。オープン接続は、トークンの有効期限が切れてもアクティブなままです。ただし、認証を必要とする PostgreSQL コマンドは、トークンの有効期限が切れている場合は失敗します。

  • Postgres 認証に使用される OAuth トークンはワークスペース スコープであり、データベース インスタンスを所有するのと同じワークスペースに属している必要があります。クロスワークスペーストークン認証はサポートされていません。認証の詳細については、「 Databricks CLI の認証」を参照してください。

  • トークンベースの認証ではプレーンテキストのパスワードが必要なため、SSL 接続のみが許可されます。トークンベースの認証でPostgresにアクセスするために使用するクライアントライブラリが、SSL接続を確立するように構成されていることを確認します。

ユーザーからマシンへのフローで OAuth トークンを取得する

データベース所有者、管理者、または Databricks ID にデータベース インスタンスに対応する Postgres ロールがある場合は、UI、Databricks CLI、または Databricks SDK の 1 つから OAuth トークンを取得できます。Databricks CLI を使用して、トークンのスコープを適切に制限できます。

その他の Databricks ID ユーザーについては、OAuth トークンを取得するためのワークスペース レベルの承認手順については、「 OAuth を使用して Databricks へのユーザー アクセスを承認する」 を参照してください。

データベース インスタンスの [ステータス][使用可能] の場合は、Databricks UI を使用して OAuth トークンを取得します。

  1. ワークスペースのサイドバーで 「コンピュート」 をクリックし、 「Lakebase Postgres」 タブをクリックします。
  2. OAuth トークンを取得するデータベース インスタンスの名前を見つけてクリックします。
  3. 接続の詳細 タブをクリックします。
  4. 「OAuth トークンの取得」 をクリックします。フラグはトークンが作成されたことを示します。
  5. 「OAuthToken をコピー」 をクリックしてトークンをクリップボードにコピーします。

マシン間フローでの OAuth トークンの取得

データベースインスタンスへのセキュアで自動化された (マシン間) アクセスを有効にするには、Databricksサービスプリンシパルを使用してOAuthトークンを取得する必要があります。このプロセスには、サービスプリンシパルの構成、資格情報の生成、認証用のトークン OAuth 鋳造が含まれます。

  1. 無期限の有効期間の資格情報を使用してサービスプリンシパルを設定します。 手順については、「サービスプリンシパルアクセスをOAuthでDatabricksに許可する」を参照してください。
  2. 新しい OAuth トークンをサービスプリンシパルとして鋳造します。

データベース インスタンスの [状態 ] が [使用可能] の場合は、Databricks CLI v0.256.0 以降を使用して OAuth トークンを取得します。

  1. 次のコマンドを使用して、トークンをフェッチします。

    Bash
      databricks database generate-database-credential \
    --request-id $(uuidgen) \
    --json '{
    "instance_names": ["db-instance-name"]
    }'
  2. これにより、次の形式で応答が生成されます。応答から token をコピーします。

    JSON
    {
    "expiration_time": "2025-08-24T14:15:22Z",
    "token": "<string>"
    }
注記

時間単位の有効期限が切れる前に OAuth トークンをローテーションします。

  • 使用するたびに OAuth トークンの有効期限を確認し、必要に応じて更新します。
  • または、現在の OAuth トークンを定期的に更新するようにバックグラウンド スレッドを設定します。

ID のトラブルシューティング

トークンの ID がセキュリティ ラベルと一致しない場合は、次のようなエラー メッセージが表示されることがあります。

A valid oauth token was supplied but the token's identity "<USER>" did not match the security label configured for role "<SERVICE PRINCIPAL>". Please ensure that the token is generated for the correct databricks identity.

次のコマンドを実行して、返される Databricks ID を確認します。

Bash
databricks current-user me

予期された ID が返されない場合は、ワークスペース クライアントの初期化時に正しい資格情報が使用されたことを確認します。

Databricks グループとして認証する

グループとグループのメンバーシップは、 Databricks からPostgresに同期されず、 Unity Catalog 権限も同期されません。 ただし、Databricks グループが Postgres に追加されると、グループ内のすべての Databricks ユーザーは、ユーザーのパスワードを使用してグループとしてログインできます。これにより、Postgres のグループ レベルで権限を管理できます。Databricksグループ ID の直接または間接のメンバー (ユーザーまたはサービスプリンシパル) は、Postgres に対して認証し、Databricks グループ Postgres ロールとしてログインできます。

ユーザーまたはサービスプリンシパルを使用してグループ ID として認証する場合、グループ メンバーシップは認証時にのみ検証されます。 認証後にメンバーがグループから削除された場合でも、グループ メンバー トークンとの開いている接続は開いたままになります。削除されたグループ メンバーからの新しい接続要求は、認証中に拒否されます。

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

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

データベースインスタンスの Databricks ワークスペースに割り当てられたグループのみが、グループベースのPostgresログインでサポートされます。 グループをワークスペースに割り当てる方法については、「 ワークスペースにグループを割り当てる」を参照してください。

Postgres ロールとパスワードを使用した認証

1 時間後の資格情報のローテーションをサポートしていないクライアントがある場合は、パスワードを使用してネイティブの Postgres ロールを作成できます。

  1. ワークスペースのサイドバーで「 コンピュート 」をクリックします。

  2. データベース・インスタンス タブをクリックします。

  3. 更新するデータベース・インスタンスを選択します。

  4. 右上の [編集] をクリックします。

  5. [Postgres ネイティブロールログインを有効にする] をオンにします。

  6. 保存 をクリックします。

  7. Postgres にログインするか、SQL エディタを使用して、パスワードを使用してロールを作成します。

    SQL
    CREATE ROLE new_role LOGIN PASSWORD 'your strong password';
  8. 新しいロールに追加の Postgres アクセス許可を付与します。PostgreSQLを使用したPostgresロールへの権限の付与を参照してください。

次のステップ

資格情報 (OAuth トークンまたはパスワード) を取得したら、データベースインスタンスに接続できます。