Databricks ODBC 驱动程序的身份验证设置

本文介绍如何为 Databricks ODBC 驱动程序配置 Azure Databricks 身份验证设置。

Databricks ODBC 驱动程序支持以下 Azure Databricks 身份验证类型:

Azure Databricks 个人访问令牌

要创建 Azure Databricks 个人访问令牌,请遵循适用于工作区用户的 Azure Databricks 个人访问令牌中的步骤。

要使用 Azure Databricks 个人访问令牌进行身份验证,请将以下配置添加到计算设置和任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 3
UID token
PWD 工作区用户的 Databricks 个人访问令牌

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=3
UID=token
PWD=<personal-access-token>

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=3;
UID=token;
PWD=<personal-access-token>

OAuth 2.0 令牌

ODBC 驱动程序 2.7.5 及更高版本支持对 Microsoft Entra ID 服务主体使用 OAuth 2.0 令牌。 这也称为 OAuth 2.0 令牌直通身份验证。

重要

ODBC 驱动程序 2.7.5 及更高版本支持使用 Azure Databricks OAuth 机密创建 OAuth 2.0 令牌。 不支持 Microsoft Entra ID 机密。

OAuth 2.0 令牌的默认生存期为 1 小时。 若要生成新的 OAuth 2.0 令牌,请重复此过程。

要使用 OAuth 2.0 令牌直通身份验证进行身份验证,请将以下配置添加到计算设置以及任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 11
Auth_Flow 0
Auth_AccessToken Azure Databricks OAuth 令牌

(OAuth 2.0 令牌直通身份验证不支持 Microsoft Entra ID 令牌。)

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=11
Auth_Flow=0
Auth_AccessToken=<databricks-oauth-token>

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=11;
Auth_Flow=0;
Auth_AccessToken=<databricks-oauth-token>

有关详细信息,请参阅 Databricks ODBC 驱动程序指南中的 Token Pass-through 部分。

Databricks OAuth 用户到计算机 (U2M) 身份验证

ODBC 驱动程序 2.8.2 及更高版本支持对 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 浏览器的身份验证进行身份验证,请将以下配置添加到计算设置以及任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 11
Auth_Flow 2
PWD 选择的密码。 驱动程序使用此密钥进行刷新令牌加密。
Auth_Client_ID(可选) databricks-sql-odbc(默认值):可以在 Databricks 帐户控制台中的应用连接设置下找到所有适用的应用程序,请参阅使用 Azure Databricks UI 启用自定义 OAuth 应用程序
Auth_Scope(可选) sql offline_access(默认值)
OAuth2RedirectUrlPort(可选) 8020(默认值)

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=11
Auth_Flow=2
PWD=<password>

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=11;
Auth_Flow=2;
PWD=<password>

有关详细信息,请参阅 Databricks ODBC 驱动程序指南中的 Browser Based 部分。

Microsoft Entra ID OAuth 用户到计算机 (U2M) 身份验证

ODBC 驱动程序 2.8.2 及更高版本支持对 Azure Databricks 用户进行 Microsoft Entra ID OAuth 用户到计算机 (U2M) 身份验证

要使用 Microsoft Entra ID OAuth 用户到计算机 (U2M) 进行身份验证,请将以下配置添加到计算设置和任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 11
Auth_Flow 2
PWD 选择的密码。 驱动程序使用此密钥进行刷新令牌加密
Auth_Client_ID Azure 应用程序的应用程序(客户端)ID
Auth_Scope 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/user_impersonation offline_access
OIDCDiscoveryEndpoint https://login.chinacloudapi.cn/<azureTenantId>/v2.0/.well-known/openid-configuration
OAuth2RedirectUrlPort Azure 应用程序的重定向端口

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=11
Auth_Flow=1
Auth_Client_ID=<application-id-azure-application>
Auth_Scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/user_impersonation offline_access
OIDCDiscoveryEndpoint=https://login.chinacloudapi.cn/<azureTenantId>/v2.0/.well-known/openid-configuration
OAuth2RedirectUrlPort=<redirect port of the Azure application>

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=11;
Auth_Flow=1;
Auth_Client_ID=<application-id-azure-application>;
Auth_Scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/user_impersonation offline_access;
OIDCDiscoveryEndpoint=https://login.chinacloudapi.cn/<azureTenantId>/v2.0/.well-known/openid-configuration;
OAuth2RedirectUrlPort=<redirect port of the Azure application>;

OAuth 计算机到计算机 (M2M) 身份验证

ODBC 驱动程序支持针对 Azure Databricks 服务主体的 OAuth 计算机到计算机 (M2M) 身份验证。 这也称为 OAuth 2.0 客户端凭据身份验证。

要配置 OAuth M2M 或 OAuth 2.0 客户端凭据身份验证,请执行以下操作:

  1. 在 Azure Databricks 工作区中创建 Azure Databricks 服务主体,并为该服务主体创建 OAuth 机密。

    若要创建服务主体及其 OAuth 机密,请参阅使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证。 记下服务主体的 UUID应用程序 ID 值,以及服务主体的 OAuth 机密的机密值。

  2. 授予服务主体对群集或仓库的访问权限。 请参阅计算权限管理 SQL 仓库

要使用 OAuth 计算机到计算机 (M2M) 或 OAuth 2.0 客户端凭据身份验证进行身份验证,请将以下配置添加到计算设置以及任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 11
Auth_Flow 1
Auth_Client_ID 服务主体的 UUID/应用程序 ID 值。
Auth_Client_Secret 服务主体的 OAuth“机密”值。
Auth_Scope(可选) all-apis(默认值)

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=11
Auth_Flow=1
Auth_Client_ID=<service-principal-application-ID>
Auth_Client_Secret=<service-principal-secret>
Auth_Scope=all-apis

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=11;
Auth_Flow=1;
Auth_Client_ID=<service-principal-application-ID>;
Auth_Client_Secret=<service-principal-secret>;
Auth_Scope=all-apis

有关详细信息,请参阅 Databricks ODBC 驱动程序指南中的 Client Credentials 部分。

Microsoft Entra ID OAuth 计算机到计算机 (M2M) 身份验证

ODBC 驱动程序 2.8.2 及更高版本支持对 Microsoft Entra ID 服务主体进行 Entra ID OAuth 计算机到计算机 (M2M) 身份验证。

要配置 Entra ID OAuth 计算机到计算机 (M2M) 身份验证,请执行以下操作:

  1. 创建 Microsoft Entra ID 托管服务主体。 为此,请参阅管理服务主体
  2. 授予服务主体对群集或仓库的访问权限。 请参阅计算权限管理 SQL 仓库

要使用 Entra ID OAuth 计算机到计算机 (M2M) 进行身份验证,请将以下配置添加到计算设置和任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 11
Auth_Flow 1
Auth_Client_ID Entra ID 中服务主体的应用程序 ID
Auth_Client_Secret Entra ID 中服务主体的客户端密码。 这是在 Microsoft Entra ID 的证书和机密中创建的客户端密码。
Auth_Scope 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default
OIDCDiscoveryEndpoint https://login.chinacloudapi.cn/<AzureTenantId>/v2.0/.well-known/openid-configuration

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=11
Auth_Flow=1
Auth_Client_ID=<entra-id-service-principal-application-ID>
Auth_Client_Secret=<entra-id-service-principal-client-secret>
Auth_Scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default
OIDCDiscoveryEndpoint=https://login.chinacloudapi.cn/<AzureTenantId>/v2.0/.well-known/openid-configuration

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=11;
Auth_Flow=1;
Auth_Client_ID=<entra-id-service-principal-application-ID>>;
Auth_Client_Secret=<entra-id-service-principal-client-secret>;
Auth_Scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default;
OIDCDiscoveryEndpoint=https://login.chinacloudapi.cn/<AzureTenantId>/v2.0/.well-known/openid-configuration

Azure 托管标识身份验证

ODBC 驱动程序 2.7.7 及更高版本支持 Azure 托管标识身份验证,该验证使用 Azure 资源托管标识(以前称为托管服务标识 (MSI))与 Azure Databricks 进行身份验证。 对 Azure Databricks 工作区操作的编程调用在使用支持托管标识的 Azure 资源(如 Azure VM)时使用这些托管标识。

要使用 Azure 托管标识身份验证进行身份验证,请将以下配置添加到计算设置以及任何特殊或高级驱动程序功能设置

设置 “值”
AuthMech 11
Auth_Flow 3
Auth_Client_ID Azure 托管标识的 ID。
Azure_workspace_resource_id Azure Databricks 工作区的 Azure 资源 ID。

若要获取此 ID,在 Azure Databricks 工作区的顶部导航栏中,单击你的用户名,然后单击
Azure 门户。 在显示的 Azure Databricks 工作区资源页上,单击边栏中“设置”下的“属性”。 该 ID 位于“概要”下的“ID”中

要为非 Windows 系统创建 DSN,请使用以下格式:

[Databricks]
Driver=<path-to-driver>
Host=<server-hostname>
Port=443
HTTPPath=<http-path>
SSL=1
ThriftTransport=2
AuthMech=11
Auth_Flow=3
Auth_Client_ID=<azure-managed-identity-ID>
Azure_workspace_resource_id=<azure-workspace-resource-ID>

要创建无 DSN 连接字符串,请使用以下格式。 为清楚起见,添加了换行符。 字符串不得包含以下换行符:

Driver=<path-to-driver>;
Host=<server-hostname>;
Port=443;
HTTPPath=<http-path>;
SSL=1;
ThriftTransport=2;
AuthMech=11;
Auth_Flow=3;
Auth_Client_ID=<azure-managed-identity-ID>;
Azure_workspace_resource_id=<azure-workspace-resource-ID>