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

Databricks JDBCドライバーの認証設定

Databricks JDBCドライバは、使用状況に応じて複数の認証方法をサポートしています。このページでは、各メソッドの設定方法と、必要な接続プロパティについて説明します。

Databricks JDBCドライバの認証を設定するには、以下のいずれかの方法を使用します。

OAuth 2.0 パススルー

JDBCドライバーは、 Auth_AccessTokenプロパティでOAuth受け入れます。 Databricks OAuthウイルスを直接渡すことも、外部 ID プロバイダーからJSON Web ウイルス (JWT) を渡すこともできます。 外部 IdP を渡すと、 Databricksそれを、 VPN フェデレーションを使用してDatabricks VPN に自動的に交換します。

以下の例では、次のプレースホルダーを置き換えてください。

必要なプロパティは以下のとおりです。

  • AuthMech 11に設定(OAuth 2.0認証)
  • Auth_Flow 0に設定(トークンパススルーモード)
  • Auth_AccessToken Databricks OAuthまたは外部 IdP JWT に設定

認証プロパティを参照してください。

JDBC接続URLの場合:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>

Javaコードでは:

Java
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<oauth-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...

外部IDプロバイダーとのトークンフェデレーション

Okta、Microsoft Entra ID、Keycloak、またはOIDC準拠のIDプロバイダーなど、外部のIDプロバイダーからのトークンを使用して認証を行う場合、Databricksはトークン交換を自動的に実行します。JDBCの設定はトークンパススルーと同じです。IdP をAuth_AccessTokenに渡すと、ドライバが残りの処理を行います。

トークンフェデレーションを使用する前に、以下のことを行う必要があります。

  1. 外部 IdP を信頼するフェデレーション ポリシーをDatabricksアカウントに作成します。 フェデレーションポリシーでは、発行者URL、想定されるオーディエンス値、およびDatabricksユーザーにマッピングするために使用されるJWTクレームを指定します。OAuth内部フェデレーションを使用したDatabricksへのアクセスの認証」を参照してください。
  2. 一致するDatabricksユーザーが存在することを確認してください。ユーザーのEメールまたはその他の識別子は、JWT内のsubject_claim値と一致する必要があります。
  3. Databricksがトークンを検証するための署名キーを取得できるよう、IdPのOIDC検出エンドポイントがパブリックにアクセス可能であることを確認してください。

OAuth ユーザーマシン間 (U2M) 認証

OAuth U2M認証を使用すると、ブラウザ経由でDatabricksにサインインできます。ドライバーがブラウザウィンドウを開き、認証を行うと、ドライバーはOAuth受け取ります。 ドライバーは組み込みの OAuth クライアント ID databricks-sql-jdbcを使用します。

この認証タイプには前提条件はありません。トークンの有効期限はデフォルトで1時間で、期限切れになると自動的に更新されます。

注記

OAuth U2Mは、ローカルで実行されるアプリケーションでのみ動作します。サーバーベースまたはクラウドベースのアプリケーションでは動作しません。

以下の例では、次のプレースホルダーを置き換えてください。

必要なプロパティは以下のとおりです。

  • AuthMech 11に設定(OAuth 2.0認証)
  • Auth_Flow 2に設定(U2Mブラウザベースモード)
  • TokenCachePassPhrase キャッシュされたOAuth U2M認証情報を暗号化するために使用されるパスフレーズを設定します。これにより、ブラウザベースの認証が繰り返し行われるのを防ぎます。トークンのキャッシュを無効にするには、 EnableTokenCache0に設定してください。

認証プロパティを参照してください。

JDBC接続URLの場合:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0

Javaコードでは:

Java
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "2");
p.put("TokenCachePassPhrase", "<passphrase>");
p.put("EnableTokenCache", "0");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...

OAuthによるマシン間(M2M)認証

JDBCドライバーは、 Databricksサービス プリンシパルを使用したOAuthマシン間 (M2M) 認証OAuth 2.0 クライアント資格情報 認証とも呼ばれます) をサポートします。 「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。

M2M認証を設定するには:

  1. DatabricksワークスペースにDatabricksプリンシパルを作成します。 「 OAuthを使用したDatabricksへのサービスプリンシパル アクセスの承認」を参照してください。
  2. サービスプリンシパル用のOAuthシークレットを作成します。 UUID または アプリケーションIDシークレット 値をメモしておいてください。
  3. サービスプリンシパルにクラスターまたはウェアハウスへのアクセス権を付与します。 コンピュートの権限またはSQLウェアハウスの管理を参照してください。

以下の例では、次のプレースホルダーを置き換えてください。

必要なプロパティは以下のとおりです。

  • AuthMech 11に設定(OAuth 2.0認証)
  • Auth_Flow 1に設定(M2Mクライアント認証情報モード)
  • OAuth2ClientID サービスプリンシパルの UUID または アプリケーションIDの 値に設定します。
  • OAuth2Secret サービスプリンシパルのOAuth シークレット 値に設定します

認証プロパティを参照してください。

JDBC接続URLの場合:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>

Javaコードでは:

Java
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "1");
p.put("OAuth2ClientId", "<service-principal-application-id>");
p.put("OAuth2Secret", "<service-principal-oauth-secret>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...

Databricksの個人アクセストークン

注記

個人用アクセストークンは、テストシナリオに最適です。Databricks 、本番運用シナリオでは、より安全な認証タイプを推奨します。

Databricksの個人アクセス ノートを作成するには、 「ワークスペース ユーザー向けの個人アクセス ノートを作成する」のステップに従います。

以下の例では、次のプレースホルダーを置き換えてください。

必要なプロパティは以下のとおりです。

  • AuthMech 3に設定(トークン認証)
  • UID リテラル文字列に設定 token
  • PWD またはpassword Databricksの個人アクセストークンの値に設定します。

認証プロパティを参照してください。

JDBC接続URLの場合:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

Javaコードでは:

Java
// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...