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

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

注記

この記事は、Databricks JDBC Simba ドライバーに適用されます。 Databricks が開発した JDBC ドライバーについては、「 Databricks JDBC ドライバー (OSS)」を参照してください。

この記事では、 Databricks JDBC ドライバーの Databricks 認証設定を構成する方法について説明します。

DatabricksDatabricksJDBCドライバーの 接続を構成するには、コンピュート リソースの設定、ドライバー機能の設定、および次の認証設定を、JDBC 接続 URL またはJDBC 接続プロパティのプログラムによるコレクションに組み合わせる必要があります。

JDBC 接続 URL は、次の形式を使用します。

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

JDBC 接続プロパティのプログラムによるコレクションは、次の例のような Java コードで使用できます。

Java
package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class Main {
public static void main(String[] args) throws Exception {
Class.forName("com.databricks.client.jdbc.Driver");
String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
Properties p = new java.util.Properties();
p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
p.put("<setting1>", "<value1");
p.put("<setting2>", "<value2");
p.put("<settingN>", "<valueN");
try (Connection conn = DriverManager.getConnection(url, p)) {
Statement stmt = conn.createStatement();
try (ResultSet rs = stmt.executeQuery("<query>")) {
ResultSetMetaData md = rs.getMetaData();
String[] columns = new String[md.getColumnCount()];
for (int i = 0; i < columns.length; i++) {
columns[i] = md.getColumnName(i + 1);
}
while (rs.next()) {
System.out.print("Row " + rs.getRow() + "=[");
for (int i = 0; i < columns.length; i++) {
if (i != 0) {
System.out.print(", ");
}
System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
}
System.out.println(")]");
}
}
}
System.exit(0);
}
}
  • DATABRICKS_SERVER_HOSTNAME 環境と DATABRICKS_HTTP_PATH 環境の値を、ターゲット リソース Databricks の Server HostnameHTTP Path の値をそれぞれ設定します。 これらの値を取得するには、「Databricks JDBC ドライバーのコンピュート設定」を参照してください。環境変数を設定するには、オペレーティングシステムのドキュメントを参照してください。
  • 必要に応じて、次のセクションに示すように、各接続プロパティの <setting><value> を置き換えます。
  • また、特別な ドライバー機能設定や高度なドライバー機能設定を、通常は追加の <setting><value> のペアとして追加することもできます。
  • この例では、 <query> を SQL SELECT クエリ文字列に置き換えます。

接続 URL を使用するか、接続プロパティのコレクションを使用するかは、ターゲット アプリ、ツール、クライアント、SDK、または API の要件によって異なります。 この記事では、JDBC 接続 URL の例と JDBC 接続プロパティのプログラムによるコレクションについて、サポートされている Databricks 認証の種類ごとに説明します。

Databricks JDBC ドライバーは、次の Databricks 認証の種類をサポートしています。

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

注記

個人用アクセス トークンは、テスト シナリオ用に提供されます。 Databricks では、本番運用シナリオに対して、より安全な認証の種類を推奨しています。

Databricks個人用アクセス トークンを作成するには、「ワークスペース ユーザー用の個人用アクセス トークンDatabricks」の手順に従います。

PATを使用して、一般的な構成プロパティと機密性の高い資格情報プロパティが埋め込まれたJDBC接続URLの認証を構成するには、次のようにします。

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

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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);
// ...
  • 上記のコード スニペットは、独自のニーズに合わせて調整できます。 完全な Java コード例については、この記事の冒頭を参照してください。
  • 上記の URL または Java コードで、 <personal-access-token> をワークスペース ユーザーの Databricks 個人用アクセス トークンに置き換えます。
  • <server-hostname><http-path> の値を取得するには、「Databricks JDBC ドライバーのコンピュート設定」を参照してください。

OAuth 2.0 トークン

ドライバーJDBC 2.6.36 以降では、OAuthDatabricks ユーザーまたはサービスプリンシパルの 2.0 トークンがサポートされています。これは、OAuth 2.0 トークン パススルー 認証とも呼ばれます。

トークン パススルー認証用の OAuth 2.0 トークンを作成するには、次の操作を行います。

  • ユーザーの場合は、 Databricks CLI を使用して OAuth U2M プロセスを開始して OAuth 2.0 トークンを生成し、 databricks auth token コマンドを実行して生成された OAuth 2.0 トークンを取得できます。 OAuth ユーザー間 (U2M) 認証を参照してください。OAuth 2.0 トークンのデフォルト有効期間は 1 時間です。 新しい OAuth 2.0 トークンを生成するには、このプロセスを繰り返します。
  • サービスプリンシパルについては、「OAuth サービスプリンシパル認証用のアクセス トークンを手動で生成して使用する」を参照してください。サービスプリンシパルの OAuth access_token値をメモします。 OAuth 2.0 トークンのデフォルト有効期間は 1 時間です。 新しい OAuth 2.0 トークンを生成するには、このプロセスを繰り返します。

OAuth 2.0 トークン パススルー認証を使用して認証するには、次の構成を設定します。

一般的な構成プロパティと機密性の高い資格情報プロパティが埋め込まれた JDBC 接続 URL の場合:

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

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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);
// ...
  • 上記のコード スニペットは、独自のニーズに合わせて調整できます。 完全な Java コード例については、この記事の冒頭を参照してください。
  • 上記の URL または Java コードで、 <oauth-token> を OAuth 2.0 トークンに置き換えます。
  • <server-hostname><http-path> の値を取得するには、「Databricks JDBC ドライバーのコンピュート設定」を参照してください。

詳細については、『 Databricks JDBC Driver Guide』のToken Pass-throughセクションを参照してください。

OAuth ユーザー間 (U2M) 認証

JDBC ドライバー 2.6.36 以降では、Databricks ユーザーの OAuth ユーザー間 (U2M) 認証がサポートされています。 これは、OAuth 2.0 ブラウザーベースの 認証とも呼ばれます。

注記

JDBC 2.6.40.1071 は、プライベートリンクワークスペースに M2M を使用して接続することがサポートされていない古いバージョンの問題を解決します。

OAuth U2M または OAuth 2.0 ブラウザーベースの認証には、前提条件はありません。 OAuth 2.0 トークンのデフォルト有効期間は 1 時間です。 OAuth U2M または OAuth 2.0 ブラウザーベースの認証では、期限切れの OAuth 2.0 トークンが自動的に更新されます。

注記

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

OAuth ユーザー間 (U2M) または OAuth 2.0 ブラウザーベースの認証を使用して認証するには、次の構成を設定します。

一般的な構成プロパティと機密性の高い資格情報プロパティが埋め込まれた JDBC 接続 URL の場合:

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

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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);
// ...
  • 上記のコード・スニペットを各自のニーズに合わせて適応できる完全な Java コード例については、この記事の冒頭にあるコード例を参照してください。
  • 上記の URL または Java コードで、 <passphrase> を任意のパスフレーズに置き換えます。 ドライバーは、更新トークンの暗号化にこのキーを使用します。
  • <server-hostname><http-path> の値を取得するには、「Databricks JDBC ドライバーのコンピュート設定」を参照してください。

詳細については、『 Databricks JDBC Driver Guide』のUsing Browser Based Authenticationセクションを参照してください。

OAuth マシン間 (M2M) 認証

JDBC ドライバー 2.6.36 以降ではOAuthDatabricks サービスプリンシパルの マシン間 (M2M) 認証がサポートされています。これは、OAuth 2.0 クライアント資格情報 認証とも呼ばれます。

注記

JDBC 2.6.40.1071 は、プライベートリンクワークスペースに M2M を使用して接続することがサポートされていない古いバージョンの問題を解決します。

OAuth M2M または OAuth 2.0 クライアント資格情報認証を構成するには、次の手順を実行します。

  1. DatabricksワークスペースにDatabricks サービスプリンシパルを作成し、そのサービスプリンシパルのOAuthシークレットを作成します。

    サービスプリンシパルとそのOAuth シークレットを作成するには、「Databricksを使用してサービスプリンシパルを使用して リソースへの無人アクセスを承認OAuth する」を参照してください。サービスプリンシパルの UUID または Application ID の値と、サービスプリンシパルの シークレットの Secret OAuth 値をメモします。

  2. サービスプリンシパルにクラスターまたはウェアハウスへのアクセス権を付与します。 「コンピュートの権限」または「SQLウェアハウスの管理」を参照してください。

OAuth マシン間 (M2M) または OAuth 2.0 クライアント資格情報認証を使用して認証するには、次の構成を設定します。

一般的な構成プロパティと機密性の高い資格情報プロパティが埋め込まれた 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>

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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);
// ...
  • 上記のコード・スニペットを各自のニーズに合わせて適応できる完全な Java コード例については、この記事の冒頭にあるコード例を参照してください。
  • 上記の URL または Java コードで、次のプレースホルダーを置き換えます。
    • <service-principal-application-id> をサービスプリンシパルの UUID / Application ID 値に置き換えます。
    • <service-principal-oauth-secret> をサービスプリンシパルの OAuth Secret 値に置き換えます。
    • <server-hostname><http-path> の値を取得するには、「Databricks JDBC ドライバーのコンピュート設定」を参照してください。

詳細については、『 Databricks JDBC Driver Guide』のUsing M2M Based Authenticationセクションを参照してください。