使用 Kerberos 將 Azure Data Studio 連線到 SQL Server

Azure Data Studio 支援使用 Kerberos 連線至 SQL Server。

若要在 macOS 或 Linux 上使用整合式驗證 (Windows 驗證),您必須設定將目前的使用者連結至 Windows 網域帳戶的 Kerberos 票證

必要條件

若要開始,您需要:

檢查 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

複製 DC 名稱,這是必要的 KDC 設定值。 在此情況下,它會 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. 完成連線設定檔,然後選取 [連線]。

成功連線之後,您的伺服器就會顯示在 [伺服器] 提要欄位中。