SQL OLTP 的 Kerberos 驗證 (SharePoint Server 2010)
適用版本: SharePoint Server 2010
上次修改主題的時間: 2016-11-30
在此案例中,我們將逐步解說在範例環境中,設定 SQL Server 叢集之 Kerberos 驗證的程序。完成該程序之後,我們將確認叢集是否可以使用 Kerberos 通訊協定驗證 SharePoint Server 服務。
在此案例中,您將執行下列作業:
設定現有的 SQL Server 2008 R2 叢集使用 Kerberos 驗證
確認用戶端可以使用 Kerberos 驗證對叢集進行驗證
建立稍後案例所要使用的測試資料庫和範例資料
注意
核心 SharePoint Server 資料服務 (例如平台資料庫連線) 不需要使用 Kerberos 驗證 SQL Server。範例環境包含一個 SQL Server 叢集,以主控稍後案例所要使用的其他範例資料庫。若要在這些案例中正常執行委派,SQL Server 叢集必須接受 Kerberos 驗證的連線。
注意
如果您是安裝在 Windows Server 2008,則可能必須安裝下列 Hotfix 以進行 Kerberos 驗證:
使用 AES 演算法時,在執行 Windows Server 2008 或 Windows Vista 的電腦上無法進行 Kerberos 驗證,錯誤碼為 0X80090302 或 0x8009030f (https://support.microsoft.com/kb/969083/zh-tw)
設定檢查清單
設定區域 | 描述 |
---|---|
設定 DNS |
建立 SQL Server 叢集 IP 的 DNS (A) 主機記錄 |
設定 Active Directory |
建立 SQL Server 服務的服務主要名稱 (SPN) |
確認 SQL Server Kerberos 設定 |
使用 SQL Server Management Studio 查詢 SQL 連線中繼資料,確定使用 Kerberos 驗證通訊協定 |
案例環境詳細資料
此案例示範設定為使用 SQL 別名,以連線至設定為使用 Kerberos 驗證之 SQL Server 叢集的 SharePoint Server 伺服器陣列。
逐步式設定指示
設定 DNS
在您的環境中,設定 SQL Server 叢集的 DNS。在此範例中,我們會在叢集 IP 192.168.8.135/4 的連接埠 1433 上,執行一個 SQL Server 叢集 MySqlCluster.vmlab.local。該叢集是主動/被動叢集,並在第一個節點的預設執行個體上執行 SQL Server 資料庫引擎。
如需如何設定 DNS 的一般資訊,請參閱管理 DNS 記錄 (可能為英文網頁)。
在此範例中,我們會設定 SQL Server 叢集的 DNS (A) 記錄。
注意
技術上,由於 SQL Server SPN 包含執行個體名稱 (如果在相同電腦上使用第二個具名執行個體),因此您可以將叢集的 DNS 主機註冊為 CNAME 別名,以避免發生附錄 A<Kerberos 設定已知的問題 (SharePoint Server 2010)>中所述的 CNAME 問題。但是,如果選擇使用 CNAME,則必須使用 DNS (A) 記錄主機名稱為 CNAME 別名註冊 SPN。
設定 Active Directory
若要讓 SQL Server 使用 Kerberos 驗證對用戶端進行驗證,您必須為執行 SQL Server 的服務帳戶註冊服務主要名稱 (SPN)。針對使用預設執行個體 (而不是 SQL Server 具名執行個體) 的設定,SQL Server 資料庫引擎的服務主要名稱使用下列格式:
MSSQLSvc/<FQDN>:port
如需註冊 SQL Server 2008 之 SPN 的詳細資訊,請參閱註冊服務主要名稱。
在範例中,我們使用下列 SetSPN 命令,設定 SQL Server 資料庫引擎服務帳戶 (vmlab\svcSQL) 的 SQL Server SPN:
SetSPN -S MSSQLSVC/MySQLCluster.vmlab.local:1433 vmlab\svcSQL
SQL Server 具名執行個體
如果使用 SQL Server 具名執行個體,而不是預設執行個體,則必須註冊 SQL Server 執行個體及 SQL Server Browser 服務特定的 SPN。如需設定具名執行個體之 Kerberos 驗證的詳細資訊,請參閱下列文章:
SQL 別名
最佳作法是在建立伺服器陣列時,考慮使用 SQL 別名連線至 SQL Server 電腦。如果選擇使用 SQL 別名,這些連線的 Kerberos SPN 格式不會變更。您可以繼續為 SQL Server 使用 SPN 中註冊的 DNS 主機名稱 (A 記錄)。例如,如果註冊別名 "SPFARMSQL" 代表 "MySQLCluster.vmlab.local",當您連線至 SPFarmSQL 時,SPN 會維持為 "MSSQLSVC/MySQLCluster.vmlab.local:1433"。
確認 SQL Server Kerberos 設定
設定 DNS 和服務主要名稱之後,即可重新啟動執行 SharePoint Server 的電腦,並確認 SharePoint Server 服務現在是否使用 Kerberos 驗證對 SQL Server 進行驗證。
確認叢集設定
重新啟動執行 SharePoint Server 的電腦 - 此動作會重新啟動所有服務,並強制服務使用 Kerberos 驗證重新連線及重新驗證。
開啟 SQL Server Management Studio 並執行下列查詢:
Select s.session_id, s.login_name, s.host_name, c.auth_scheme from sys.dm_exec_connections c inner join sys.dm_exec_sessions s on c.session_id = s.session_id
此查詢會傳回每個工作階段和連線的中繼資料。工作階段資料有助於識別連線來源,而工作階段資訊則會顯示連線的驗證配置。
確認 SharePoint Server 服務使用 Kerberos 驗證進行驗證。如果已正確設定 Kerberos 驗證,即會在查詢結果的 [auth_scheme] 欄中顯示 [Kerberos]。
建立測試 SQL Server 資料庫和測試資料表
若要測試本文件的案例所涵蓋之各種 SharePoint Server 服務應用程式之間的委派,您必須設定這些服務可存取的測試資料來源。在本案例的最後一個步驟中,您將設定稱為「測試」的測試資料庫及稱為「銷售」的測試資料表,以供稍後使用。
在 SQL Server Management Studio 中,建立稱為「測試」的新資料庫。建立此資料庫時,請保留預設設定。
在「測試」資料庫中,建立具備下列配置的新資料表:
資料行名稱 資料類型 允許 Null 地區
nvarchar(10)
否
年
nvarchar(4)
否
金額
money
否
RowId
int
否
以名稱「銷售」儲存資料表。
在 Management Studio 中,將測試資料填入資料表。資料本身不重要,且不會影響後續案例的運作。幾列資料便已足夠。