次の方法で共有


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

メモ

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

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

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

Microsoft Entra ID トークン

ODBC および JDBC ドライバー 2.6.15 以降では、Azure Databricks ユーザーまたは Microsoft Entra ID サービス プリンシパルの Microsoft Entra ID トークンがサポートされています。

Microsoft Entra ID アクセス トークンを作成するには、次の操作を行います。

Microsoft Entra ID アクセス トークンの既定の有効期間は約 1 時間です。 アクセス トークンは、 Microsoft Entra ID アクセス トークンの更新でコードを実行することで、接続を中断することなく、既存のセッションに対してプログラムで更新できます。 トークンを更新する方法については、「Configuring Authentication > Using OAuth 2.0」の セクションを参照してください。

Microsoft Entra ID トークンを使用して認証するには、次の構成を設定します。

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

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

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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", "<microsoft-entra-id-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...

詳細については、Token Pass-throughの「」セクションを参照してください。

OAuth 2.0 トークン

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

重要

JDBC ドライバー 2.6.36 以降では、Azure Databricks OAuth シークレットを使用した OAuth 2.0 トークンの作成がサポートされています。 Microsoft Entra ID シークレットはサポートされません。

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 コードの場合:

// ...
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);
// ...
  • 上記の URL または Java コードで、<oauth-token> を Azure Databricks OAuth トークンに置き換えます。 (Microsoft Entra ID トークンは、OAuth 2.0 トークン パススルー認証ではサポートされていません。)
  • <server-hostname><http-path>の値を取得するには、「Databricks JDBC Driver のコンピューティング設定」を参照してください。

詳細については、Token Pass-throughの「」セクションを参照してください。

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

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

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 コードの場合:

// ...
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);
// ...
  • 上記の URL または Java コードで、<passphrase> を選んだパスフレーズに置き換えます。 ドライバーは、更新トークンの暗号化にこのキーを使用します。
  • <server-hostname><http-path>の値を取得するには、「Databricks JDBC Driver のコンピューティング設定」を参照してください。

詳細については、Using Browser Based Authenticationの「」セクションを参照してください。

Microsoft Entra ID OAuth ユーザー対マシン (U2M) 認証

JDBC ドライバー 2.7.1 以降では、Azure Databricks ユーザーに対する Microsoft Entra ID OAuth ユーザー対マシン (U2M) 認証がサポートされています。 これは、OAuth 2.0 ''ブラウザーベース'' の認証とも呼ばれます。

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

メモ

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

Microsoft Entra ID OAuth ユーザー対マシン (U2M) を使用して認証するには、OAuth クライアント (アプリケーション) を Microsoft Entra ID に登録する必要があります。「 Microsoft Entra ID にクライアント アプリケーションを登録する」を参照してください。 次に、次の構成を設定します。

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

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

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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");
p.put("OIDCDiscoveryEndpoint", "https://login.microsoftonline.com/<azureTenantId>/v2.0/.well-known/openid-configuration");
p.put("EnableOIDCDiscovery", "true");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • 上記の URL または Java コードで、<passphrase> を選んだパスフレーズに置き換えます。 ドライバーは、更新トークンの暗号化にこのキーを使用します。
  • <server-hostname><http-path>の値を取得するには、「Databricks JDBC Driver のコンピューティング設定」を参照してください。

詳細については、Using Browser Based Authenticationの「」セクションを参照してください。

OAuth マシン間 (M2M) 認証

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

メモ

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

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

  1. Microsoft Entra ID マネージド サービス プリンシパルを作成し、それを Azure Databricks アカウントとワークスペースに割り当てます。 これを行うには、 サービス プリンシパルに関する説明を参照してください。

  2. サービス プリンシパルの Azure Databricks OAuth シークレットを作成します。 これを行うには、「 OAuth サービス プリンシパル認証用のアクセス トークンを手動で生成して使用する」を参照してください。

  3. サービス プリンシパルにクラスターまたはウェアハウスへのアクセス権を付与します。 「 コンピューティングのアクセス許可」 または 「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 コードの場合:

// ...
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);
// ...
  • 上記の URL または Java コマンドで、次のプレースホルダーを置き換えます。
    • <service-principal-application-id>をサービス プリンシパルのアプリケーション (クライアント) ID 値に置き換えます。
    • <service-principal-oauth-secret>をサービス プリンシパルの Azure Databricks OAuth シークレットに置き換えます。 (Microsoft Entra ID シークレットは、OAuth M2M または OAuth 2.0 クライアント資格情報認証ではサポートされていません。)
    • <server-hostname><http-path>の値を取得するには、「Databricks JDBC Driver のコンピューティング設定」を参照してください。

詳細については、Using M2M Based Authenticationの「」セクションを参照してください。

Microsoft Entra ID OAuth マシン間 (M2M) 認証

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

Entra ID OAuth M2M 認証を構成するには、次の操作を行います。

  1. Microsoft Entra ID マネージド サービス プリンシパルを作成し、それを Azure Databricks アカウントとワークスペースに割り当てます。 これを行うには、 サービス プリンシパルに関する説明を参照してください。

  2. サービス プリンシパルの Entra ID OAuth シークレットを作成します。 これを行うには、「 OAuth サービス プリンシパル認証用のアクセス トークンを手動で生成して使用する」を参照してください。

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

Entra ID OAuth マシン間 (M2M) を使用して認証するには、次の構成を設定します。

全般構成のプロパティと機密資格情報のプロパティが埋め込まれた 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>;OIDCDiscoveryEndpoint=<endpoint>;EnableOIDCDiscovery=true

一般的な構成プロパティと機密性の高い資格情報プロパティが JDBC 接続 URL の外部に設定されている 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", "<entra-id-service-principal-application-id>");
p.put("OAuth2Secret", "<entra-id-service-principal-client-secret>");
p.put("OIDCDiscoveryEndpoint", "https://login.microsoftonline.com/<AzureTenantId>/v2.0/.well-known/openid-configuration");
p.put("EnableOIDCDiscovery", "true");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • 上記の URL または Java コマンドで、次のプレースホルダーを置き換えます。
    • <entra-id-service-principal-application-id>を、Entra のサービス プリンシパルのアプリケーション ID 値に置き換えます。
    • <entra-id-service-principal-client-secret>を Entra のサービス プリンシパルのシークレットに置き換えます。 これは、ユーザーが Microsoft Entra ID の [証明書とシークレット] で作成するクライアント シークレットです。
    • <server-hostname><http-path>の値を取得するには、「Databricks JDBC Driver のコンピューティング設定」を参照してください。