Important
この機能は、、westus、westus2、eastus、eastus2、centralus、southcentralus、northeurope、westeurope、australiaeast、brazilsouth、canadacentral、centralindia、southeastasiaの各リージョンのuksouth段階にあります。
このページでは、Lakebase データベース インスタンスに対する認証方法について説明します。 認証には 2 つの方法があります。
- OAuth トークンを取得し、Azure Databricks ID を使用して認証します。
- パスワードでネイティブ Postgres ロールを使用します。
Azure Databricks ID を使用して認証する
Azure Databricks ID として認証する場合は、OAuth トークンを生成し、Postgres に接続するときにパスワードとして使用する必要があります。
開始する前の考慮事項
OAuth トークンは 1 時間後に期限切れになりますが、有効期限はログイン時にのみ適用されます。 トークンの有効期限が切れた場合でも、開いている接続はアクティブなままです。 ただし、トークンの有効期限が切れている場合、認証を必要とする PostgreSQL コマンドは失敗します。
Postgres 認証に使用される OAuth トークンはワークスペース スコープであり、データベース インスタンスを所有するのと同じワークスペースに属している必要があります。 ワークスペース間トークン認証はサポートされていません。 認証の詳細については、 Databricks CLI の認証に関するページを参照してください。
トークンベースの認証にはプレーンテキスト パスワードが必要であるため、SSL 接続のみが許可されます。 トークンベースの認証で Postgres へのアクセスに使用するクライアント ライブラリが、SSL 接続を確立するように構成されていることを確認します。
ユーザーからマシンへのフローで OAuth トークンを取得する
データベース所有者、管理者、または Azure Databricks ID にデータベース インスタンスに対応する Postgres ロールがある場合は、UI、Databricks CLI、またはいずれかの Databricks SDK から OAuth トークンを取得できます。 Databricks CLI を使用して、トークンのスコープを適切に制限できます。
他の Azure Databricks ID ユーザーについては、OAuth トークンを取得するためのワークスペース レベルの承認手順については、「 OAuth を使用して Azure Databricks へのユーザー アクセスを承認 する」を参照してください。
UI
データベース インスタンス の状態 が 使用可能な場合は、Azure Databricks UI を使用して OAuth トークンを取得します。
- ワークスペースのサイドバーで [ コンピューティング ] をクリックし、[ Lakebase プロビジョニング済み ] タブをクリックします。
- OAuth トークンを取得するデータベース インスタンスの名前を見つけてクリックします。
- [接続の詳細] タブをクリックします。
- [ OAuth トークンの取得] をクリックします。 フラグは、トークンが作成された日時を示します。
- [ OAuthToken のコピー ] をクリックして、トークンをクリップボードにコピーします。
CLI
データベース インスタンス の状態 が 使用可能な場合は、Databricks CLI v0.256.0 以降を使用して OAuth トークンを取得します。
- トークンをフェッチするには、次のコマンドを使用します。
databricks database generate-database-credential \ --request-id $(uuidgen) \ --json '{ "instance_names": ["db-instance-name"] }' - これにより、次の形式の応答が生成されます。 応答から
tokenをコピーします。{ "expiration_time": "2025-08-24T14:15:22Z", "token": "<string>" }
Databricks CLI を使用して OAuth トークンを取得する方法の詳細については、「 OAuth ユーザー対マシン (U2M) 認証」を参照してください。
Python SDK
Databricks SDK for Python を使用して OAuth トークンを生成できます。 Azure Databricks SDK バインドは、Databricks SDK for Python バージョン v0.56.0 で使用できます。
古いバージョンの SDK で実行している場合は、最初にこれらのコマンドを実行します。
%pip install --upgrade databricks-sdk
%restart_python
Databricks SDK for Python は、データベース インスタンス用の安全な OAuth トークン ( cred) を生成します。 必要に応じ、資格情報を入力します。
from databricks.sdk import WorkspaceClient
import uuid
w = WorkspaceClient()
instance_name = "<YOUR INSTANCE>"
cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])
Java SDK
Databricks SDK for Java を使用して OAuth トークンを生成できます。 データベース SDK バインドは、Databricks SDK for Java バージョン v0.53.0 以降で使用できます。 古いバージョンの SDK で実行している場合は、インポートした SDK の更新が必要になる場合があります。 詳細については、このページを参照してください。
%scala
import com.databricks.sdk.WorkspaceClient
import com.databricks.sdk.service.database.GetDatabaseInstanceRequest
import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest
import com.databricks.sdk.service.database.DatabaseInstance
import com.databricks.sdk.service.database.DatabaseCredential
import java.util.Collections
import java.util.UUID
val w = new WorkspaceClient()
val instanceName = "<YOUR INSTANCE>"
// Generate database credential
val cred = w.database().generateDatabaseCredential(
new GenerateDatabaseCredentialRequest()
.setRequestId(UUID.randomUUID().toString())
.setInstanceNames(Collections.singletonList(instanceName))
)
// Print out credential details
System.out.println("Credential: " + cred.getToken())
マシン間フローで OAuth トークンを取得する
データベース インスタンスへの安全で自動化された (マシン間) アクセスを有効にするには、Azure Databricks サービス プリンシパルを使用して OAuth トークンを取得する必要があります。 このプロセスには、サービス プリンシパルの構成、資格情報の生成、認証用の OAuth トークンの作成が含まれます。
無期限に有効な資格情報を使用してサービス プリンシパルを構成します。 手順については、「 OAuth を使用して Azure Databricks へのサービス プリンシパル アクセスを承認する」を参照してください。
サービス プリンシパルとして新しい OAuth トークンを作成します。
CLI
データベース インスタンス の状態 が 使用可能な場合は、Databricks CLI v0.256.0 以降を使用して OAuth トークンを取得します。
トークンをフェッチするには、次のコマンドを使用します。
databricks database generate-database-credential \ --request-id $(uuidgen) \ --json '{ "instance_names": ["db-instance-name"] }'これにより、次の形式の応答が生成されます。 応答から
tokenをコピーします。{ "expiration_time": "2025-08-24T14:15:22Z", "token": "<string>" }
Python SDK
Databricks SDK for Python を使用して OAuth トークンを生成できます。 Azure Databricks SDK バインドは、Databricks SDK for Python バージョン v0.56.0 で使用できます。
古いバージョンの SDK で実行している場合は、最初にこれらのコマンドを実行します。
%pip install --upgrade databricks-sdk %restart_pythonDatabricks SDK for Python は、データベース インスタンス用の安全な OAuth トークン (
cred) を生成します。 必要に応じ、データベース インスタンス名を入力します。from databricks.sdk import WorkspaceClient import uuid w = WorkspaceClient( host = "https://<YOUR WORKSPACE URL>/", client_id = "<YOUR SERVICE PRINCIPAL ID>", client_secret = "REDACTED" ) instance_name = "<YOUR INSTANCE>" cred = w.database.generate_database_credential(request_id=str(uuid.uuid4()), instance_names=[instance_name])Java SDK
Databricks SDK for Java を使用して OAuth トークンを生成できます。 データベース SDK バインドは、Databricks SDK for Java バージョン v0.53.0 以降で使用できます。 古いバージョンの SDK で実行している場合は、新しい SDK への更新が必要になる場合があります。 詳細については、このページを参照してください。
%scala import com.databricks.sdk.WorkspaceClient import com.databricks.sdk.core.DatabricksConfig import com.databricks.sdk.service.database.GetDatabaseInstanceRequest import com.databricks.sdk.service.database.GenerateDatabaseCredentialRequest import com.databricks.sdk.service.database.DatabaseInstance import com.databricks.sdk.service.database.DatabaseCredential import java.util.Collections import java.util.UUID val config = new DatabricksConfig() // See https://github.com/databricks/databricks-sdk-java#authentication val w = new WorkspaceClient(config) val instanceName = "<YOUR INSTANCE>" // Generate database credential val cred = w.database().generateDatabaseCredential( new GenerateDatabaseCredentialRequest() .setRequestId(UUID.randomUUID().toString()) .setInstanceNames(Collections.singletonList(instanceName)) ) // Print out credential details System.out.println("Credential: " + cred.getToken())
注
時間単位の有効期限が切れる前に 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.
次のコマンドを実行して、返される Azure Databricks ID を確認します。
CLI
databricks current-user me
Python SDK
w.current_user.me().user_name
Java SDK
w.currentUser.me().getUserName()
予想される ID が返されない場合は、ワークスペース クライアントの初期化時に正しい資格情報が使用されたことを確認します。
Microsoft Entra ID で認証する
Azure Databricks の場合、Microsoft Entra ID ID とトークンを使用して、Azure Databricks API に対する認証を行うこともできます。 これらの API を使用して、Postgres に対して認証するトークンを取得します。
Azure Databricks で Microsoft Entra ID マネージド ID を管理する方法については 、「ユーザー、サービス プリンシパル、およびグループ の管理」を参照してください。 Microsoft Entra ID のユーザー、グループ、およびサービス プリンシパルは、Azure Databricks で作成できます。 これらの ID が Azure Databricks に追加されたら、「 Postgres ロールの管理」の説明に従って、それらをデータベース インスタンスに追加できます。
Microsoft Entra ID トークンを取得するには、次を参照してください。
Azure Databricks グループとして認証する
グループとグループ メンバーシップは Azure Databricks から Postgres に同期されず、どちらも Unity カタログのアクセス許可ではありません。 ただし、Azure Databricks グループが Postgres に追加された後、グループ内のすべての Azure Databricks ユーザーは、ユーザーのパスワードを使用してグループとしてログインできます。 これにより、Postgres のグループ レベルでアクセス許可を管理できます。 Azure Databricks グループ ID の直接または間接メンバー (ユーザーまたはサービス プリンシパル) は、Postgres に対して認証を行い、Azure Databricks グループ Postgres ロールとしてログインできます。
ユーザーまたはサービス プリンシパル トークンを使用してグループ ID として認証する場合、グループ メンバーシップは認証時にのみ検証されます。 認証後にメンバーがグループから削除された場合、グループ メンバー トークンとの開いている接続は開いたままです。 削除されたグループ メンバーからの新しい接続要求は、認証中に拒否されます。
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
グループベースの Postgres ログインでは、データベース インスタンスの Azure Databricks ワークスペースに割り当てられたグループのみがサポートされます。 ワークスペースにグループを割り当てる方法については、「グループをワークスペース に割り当てる」を参照してください。
Postgres のロールとパスワードを使用して認証する
1 時間後に資格情報のローテーションをサポートしていないクライアントがある場合は、パスワードを使用してネイティブ Postgres ロールを作成できます。
ワークスペースのサイドバーで、[コンピューティング] をクリックします。
[ データベース インスタンス ] タブをクリックします。
更新するデータベース インスタンスを選択します。
右上の [編集] をクリックします。
[Postgres ネイティブ ロール ログインを有効にする] をオンにします。
[保存] をクリックします。
Postgres にログインするか、SQL エディターを使用して、パスワードを使用してロールを作成します。
CREATE ROLE new_role LOGIN PASSWORD 'your strong password';新しいロールに追加の Postgres アクセス許可を付与します。 PostgreSQL を使用した Postgres ロールへの特権の付与に関する説明を参照してください。
次のステップ
資格情報 (OAuth トークンまたはパスワード) を取得した後、データベース インスタンスに接続できます。