共用方式為


將 Linux 主機上的 SQL Server 加入 Active Directory 網域

適用於:SQL Server - Linux

本文提供有關如何將 SQL Server Linux 主機電腦加入 Active Directory 網域的一般指引。 您可使用下列兩種方法:使用內建的 SSSD 套件,或使用協力廠商 Active Directory 提供者。 協力廠商網域加入產品的範例包括 PowerBroker Identity Services (PBIS)One IdentityCentrify

本指南包含檢查 Active Directory 設定的步驟。 不過,其並未提供指示,說明在使用協力廠商公用程式時如何將機器加入網域。

注意

如需使用更新版 Ubuntu、RHEL 或 SLES 設定 Active Directory 的資訊,請參閱教學課程:使用 adutil 為 Linux 上的 SQL Server 設定 Active Directory 驗證

必要條件

設定 Active Directory 驗證之前,您必須先在網路上設定 Active Directory 網域控制站 (Windows)。 然後,將 Linux 主機上的 SQL Server 加入 Active Directory 網域。

本文中所述的範例步驟僅為指導用途,並參考 Ubuntu 16.04、Red Hat Enterprise Linux (RHEL) 7.x 和 SUSE Linux Enterprise Server (SLES) 12 作業系統。 根據整體環境的設定方式與作業系統版本而定,您環境中的實際步驟可能稍有不同。 例如,Ubuntu 18.04 使用 netplan,而 Red Hat Enterprise Linux (RHEL) 8.x 使用 nmcli 等其他工具來管理及設定網路。 您應連絡系統和網域系統管理員,以了解環境的特定工具、設定、自訂並進行任何必要的疑難排解。

反向 DNS (rDNS)

根據預設,當將執行 Windows Server 的電腦設定為網域控制站時,您可能沒有 rDNS 區域。 請確定網域控制站和將執行 SQL Server 的 Linux 電腦其 IP 位址都有所適用 rDNS 區域。

另請確定也有指向網域控制站的 PTR 記錄。

檢查網域控制站的連線

檢查是否可使用網域的簡短和完整名稱,以及使用網域控制站的主機名稱來與網域控制站連絡。 網域控制站其 IP 也應該可解析為網域控制站的 FQDN:

ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>

提示

本教學課程分別使用 contoso.comCONTOSO.COM 作為範例網域和領域名稱。 它也會使用 DC1.CONTOSO.COM 作為網域控制站的完整網域名稱範例。 您必須以自有值來取代這些名稱。

為了確保正確的網域名稱解析,在名稱檢查期間發現任何差異時,請務必更新 /etc/resolv.conf 檔案。 更新程序會因散發而有所不同;因此,建議參閱官方文件,以取得準確的指導。 下列清單提供某些散發及其金鑰版本的連結:

Distribution 參考文章
RHEL 8 手動設定 /etc/resolv.conf
RHEL 9 手動設定 /etc/resolv.conf
SLES 15 NETCONFIG_DNS_STATIC_SEARCHLIST 和 NETCONFIG_DNS_STATIC_SERVERS 設定
Ubuntu 名稱解析區段

其目標是為散發正確設定 /etc/resolv.conf,以便進行網域名稱解析。 例如,如果網域是 contoso.com 且 Active Directory IP 位址為 10.0.0.4,則應該據以設定 /etc/resolv.conf,以確保成功從主機進行名稱解析。

cat /etc/resolv.conf

結果集如下所示。

# Generated by NetworkManager
search contoso.com com
nameserver 10.0.0.4

RHEL 7.x

  1. 編輯 /etc/sysconfig/network-scripts/ifcfg-eth0 檔案,以讓您的 Active Directory 網域位於網域搜尋清單中。 或者,視需要編輯其他介面設定檔:

    sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
    

    內容看起來應類似下列範例:

    PEERDNS=no
    DNS1=<Domain controller IP address>
    DOMAIN="contoso.com com"
    
  2. 編輯此檔案之後,請重新啟動網路服務:

    sudo systemctl restart network
    
  3. 現在,檢查 /etc/resolv.conf 檔案是否包含類似下列範例的程式碼行:

    sudo vi /etc/resolv.conf
    

    內容看起來應類似下列範例:

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. 如果您仍然無法 Ping 網域控制站,請尋找網域控制站的完整網域名稱和 IP 位址。 範例網域名稱為 DC1.CONTOSO.COM。 將下列項目新增至 /etc/hosts

    sudo vi /etc/hosts
    

    內容看起來應類似下列範例:

    <IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
    

加入 Active Directory 網域

在驗證網域控制站的基本組態和連線能力之後,您可以使用下列兩個選項來聯結 SQL Server Linux 主機電腦與 Active Directory 網域控制站:

選項 1:使用 SSSD 封裝來加入 Active Directory 網域

此方法會使用 realmdsssd 封裝,將 SQL Server 主機加入 Active Directory 網域。

這是將 Linux 主機加入 Active Directory 網域控制站的慣用方法。

如需最新的指示,請參閱散發合作夥伴所提供的官方文件。

Distribution 參考文章
RHEL 8 使用 SSSD 探索和加入 AD 網域
RHEL 9 使用 SSSD 探索和加入 AD 網域
SLES 在 SUSE Linux Enterprise Server 15 上使用 realmd 加入 AD
Ubuntu 如何使用 Active Directory 設定 SSSD

使用下列步驟,將 SQL Server 主機加入 Active Directory 網域:

  1. 使用 realmd,將您的主機電腦加入 Active Directory 網域。 您必須先使用 Linux 發行版本的套件管理員,在 SQL Server 主機電腦上安裝 realmd 和 Kerberos 用戶端套件:

    RHEL:

    sudo yum install realmd krb5-workstation
    

  1. 如果 Kerberos 用戶端套件安裝提示您提供領域名稱,請以大寫輸入您的網域名稱。

  2. 在您確認 DNS 設定無誤之後,請執行下列命令來加入網域。 您必須使用具有足夠 Active Directory 權限的 Active Directory 帳戶進行驗證,才能將新的電腦加入網域。 此命令會在 Active Directory 中建立新的電腦帳戶、建立 /etc/krb5.keytab 主機金鑰表檔案、在 /etc/sssd/sssd.conf 中設定網域,以及更新 /etc/krb5.conf

    因為 realmd 發生問題,所以請先將電腦主機名稱設為 FQDN,而非電腦名稱。 否則,即使網域控制站支援動態 DNS 更新,realmd 也可能不會建立電腦所有必要的 SPN,且 DNS 項目也不會自動更新。

    sudo hostname <old hostname>.contoso.com
    

    執行此命令之後,/etc/hostname 檔案中應包含 <old hostname>.contoso.com

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

    您應該會看到 Successfully enrolled machine in realm 此訊息。

    下表列出一些您可能會收到的錯誤訊息,以及解決這些錯誤的建議:

    錯誤訊息 建議
    Necessary packages are not installed 請先使用 Linux 發行版本的套件管理員安裝這些套件,然後再次執行 realm join 命令。
    Insufficient permissions to join the domain 請連絡網域系統管理員,確認您有足夠權限可將 Linux 電腦加入您的網域。
    KDC reply did not match expectations 您可能未針對使用者指定正確的領域名稱。 領域名稱會區分大小寫;通常是大寫,且可以使用 realm discover contoso.com 命令來識別。

    SQL Server 會使用 SSSD 和 NSS,將使用者帳戶和群組對應至安全性識別碼 (SID)。 您必須設定並執行 SSSD,SQL Server 才能成功建立 Active Directory 登入。 realmd 通常會在加入網域的過程中自動執行此動作,但在某些情況下,您必須另外進行此作業。

    如需詳細資訊,請參閱如何手動設定 SSSD設定 NSS 以使用 SSSD

  3. 確認您現在可以透過網域收集使用者的相關資訊,並取得該使用者的 Kerberos 票證。 下列範例會針對上述目的,使用 idkinitklist 命令。

    id user@contoso.com
    
    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    
    kinit user@CONTOSO.COM
    
    Password for user@CONTOSO.COM:
    
    klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: user@CONTOSO.COM
    

    如果 id user\@contoso.com 傳回 No such user,請執行 sudo systemctl status sssd 命令以確定 SSSD 服務已成功啟動。 如果服務正在執行,但您仍然看到此錯誤,請嘗試啟用 SSSD 的詳細資訊記錄。 如需詳細資訊,請參閱 Red Hat 文件的 Troubleshooting SSSD (針對 SSSD 進行疑難排解)。

    如果 kinit user\@CONTOSO.COM 傳回 KDC reply didn't match expectations while getting initial credentials,請確認您已指定大寫的領域。

如需詳細資訊,請參閱 Red Hat 文件的 Discovering and Joining Identity Domains (探索及加入識別身分網域)。

選項 2:使用協力廠商 OpenLDAP 提供者的公用程式

您可以使用協力廠商公用程式,例如 PBISVASCentrify。 本文未涵蓋每個個別公用程式的步驟。 您必須先使用其中一個公用程式,將 SQL Server 的 Linux 主機加入網域,再繼續進行。

SQL Server 不會使用協力廠商整合器的程式碼或程式庫來進行任何 Active Directory 相關查詢。 SQL Server 一律會直接在此安裝程式中使用 OpenLDAP 程式庫呼叫來查詢 Active Directory。 系統只會使用協力廠商整合器來將 Linux 主機加入 Active Directory 網域,而 SQL Server 與這些公用程式沒有任何直接的通訊。

重要

如需使用 mssql-conf network.disablesssd 組態選項的建議,請參閱<透過 Linux 上的 SQL Server 使用 Active Directory 驗證>一文的<其他組態選項>區段一節。

確認您已正確設定 /etc/krb5.conf。 大多數協力廠商 Active Directory 提供者都會自動完成此設定。 不過,請檢查 /etc/krb5.conf 的下列值,以防止任何後續問題:

sudo vi /etc/krb5.conf

內容看起來應類似下列範例:

[libdefaults]
default_realm = CONTOSO.COM

[realms]
CONTOSO.COM = {
}

[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM

檢查反向 DNS 是否已正確設定

下列命令應該會傳回 SQL Server 執行主機的完整網域名稱 (FQDN)。 例如 SqlHost.contoso.com

host <IP address of SQL Server host>

此命令的輸出應該類似 <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com。 如果此命令未傳回您主機的 FQDN,或 FQDN 不正確,請將 Linux 上的 SQL Server 主機反向 DNS 項目新增至您的 DNS 伺服器。

後續步驟

本文涵蓋如何在使用 Active Directory 驗證的 Linux 主機電腦上設定 SQL Server。 若要完成設定 Linux 上的 SQL Server 以支援 Active Directory 帳戶,請遵循這些指示。