使用 Kerberos 将 Azure Data Studio 连接到 SQL Server

Azure Data Studio 支持使用 Kerberos 连接到 SQL Server。

若要在 macOS 或 Linux 上使用集成身份验证(Windows 身份验证),需要设置 Kerberos 工单,将当前用户链接到 Windows 域帐户。

先决条件

要开始,需要:

检查 SQL Server 是否设置了 Kerberos

登录到 SQL Server 的主机。 在 Windows 命令提示符下,使用 setspn -L %COMPUTERNAME% 列出主机的所有 SPN。 验证是否存在以 MSSQLSvc/HostName.contoso.com 开头的条目。 这些条目意味着 SQL Server 已注册 SPN 并可接受 Kerberos 身份验证。

如果无权访问 SQL Server 实例的主机,那么,可以在加入同一 Active Directory 的任何其他 Windows 操作系统中使用命令 setspn -L <SQLSERVER_NETBIOS>,其中 <SQLSERVER_NETBIOS> 是 SQL Server 实例主机的计算机名称。

获取 Kerberos 密钥发行中心

找到 Kerberos 密钥发行中心 (KDC) 配置值。 在加入 Active Directory 域的 Windows 计算机上运行以下命令:

从命令行运行 nltest,并将“DOMAIN.CONTOSO.COM”替换为域的名称。

nltest /dsgetdc:DOMAIN.CONTOSO.COM

输出类似于以下示例:

DC: \\dc-33.domain.contoso.com
Address: \\2111:4444:2111:33:1111:ecff:ffff:3333
...
The command completed successfully

复制所需 KDC 配置值的 DC 名称。 在本例中,它是 dc-33.domain.contoso.com。

将操作系统加入 Active Directory 域控制器

sudo apt-get install realmd krb5-user software-properties-common python-software-properties packagekit

编辑 /etc/network/interfaces 文件,以便将 Active Directory 域控制器的 IP 地址列为 dns-nameserver。 例如:

<...>
# The primary network interface
auto eth0
iface eth0 inet dhcp
dns-nameservers **<AD domain controller IP address>**
dns-search **<AD domain name>**

注意

不同计算机的网络接口 (eth0) 可能不同。 若要查明正在使用哪个接口,请运行 ifconfig 并复制具有 IP 地址以及传输和接收字节的接口。

编辑此文件后,重启网络服务:

sudo ifdown eth0 && sudo ifup eth0

现在检查 /etc/resolv.conf 文件是否包含如下所示的行:

nameserver **<AD domain controller IP address>**

加入 Active Directory 域:

sudo realm join contoso.com -U 'user@CONTOSO.COM' -v

下面是预期的输出:

<...>
* Success

测试票证授予票证检索

从 KDC 获取票证授予票证 (TGT)。

kinit username@DOMAIN.CONTOSO.COM

使用 klist 查看可用票证。 如果 kinit 成功,应会看到一个票证。

klist

下面是预期的输出:

krbtgt/DOMAIN.CONTOSO.COM@ DOMAIN.CONTOSO.COM.

使用 Azure Data Studio 连接

  1. 创建新的连接配置文件。

  2. 选择“Windows 身份验证”作为身份验证类型。

  3. 对于服务器,输入一个完全限定的主机名,格式为 hostname.DOMAIN.CONTOSO.COM

  4. 完成连接配置文件,选择“连接”。

成功连接后,你的服务器将显示在“服务器”边栏中。