共用方式為


Analysis Services 實例的 SPN 註冊

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

當 Kerberos 用來相互驗證客戶端和服務識別時,服務主體名稱 (SPN) 會唯一識別 Active Directory 網域中的服務實例。 SPN 與服務實例執行所在的登入帳戶相關聯。

對於透過 Kerberos 驗證連線到 Analysis Services 的用戶端應用程式,Analysis Services 用戶端連結庫會使用連接字串和其他已知變數的主機名建構 SPN,例如服務類別,這些變數會在任何指定的 Analysis Services 版本中修正。

若要進行相互驗證,用戶端所建構的SPN必須符合Active Directory域控制器 (DC) 上對應的SPN物件。 這表示您可能需要為單一 Analysis Services 實例註冊多個 SPN,以涵蓋使用者可能會在連接字串上指定主機名的所有方式。 例如,您可能需要兩個SPN來處理伺服器的完整功能變數名稱(FQDN),以及簡短的電腦名稱。 正確註冊 Analysis Services SPN 對於成功連線至關重要。 如果SPN不存在、格式不正確或重複,連線將會失敗。

SPN 註冊是由 Analysis Services 系統管理員執行的手動工作。 不同於 SQL Server 資料庫引擎,Analysis Services 永遠不會在服務啟動時自動註冊其 SPN。 當 Analysis Services 在預設虛擬帳戶、網域用戶帳戶或內建帳戶下執行時,需要手動註冊,包括個別服務 SID。

如果服務是在網域系統管理員所建立的預先定義受控服務帳戶下執行,則不需要SPN註冊。 請注意,根據網域的功能等級而定,註冊 SPN 可能需要網域系統管理員許可權。

提示

Microsoft 適用於 SQL Server 的 Kerberos Configuration Manager 是一種診斷工具,可協助針對 SQL Server 的 Kerberos 相關連線問題進行疑難解答。 如需詳細資訊,請參閱 sql ServerMicrosoft Kerberos Configuration Manager。

本主題包含下列各節:

需要SPN註冊時

Analysis Services 的 SPN 格式

虛擬帳戶的SPN註冊

網域帳戶的SPN註冊

內建帳戶的SPN註冊

具名實例的SPN註冊

SSAS 叢集 的 SPN 註冊

針對針對 HTTP 存取設定的 SSAS 實例 SPN 註冊

針對接聽固定埠的 SSAS 實例 SPN 註冊

需要SPN註冊時

在連接字串上指定 「SSPI=Kerberos」 的任何用戶端連線,都會針對 Analysis Services 實例引入 SPN 註冊需求。

在下列情況下,需要SPN註冊。 如需詳細資訊,請參閱 設定 Analysis Services for Kerberos 限制委派

  • 身分識別委派是必要的,才能將使用者身分識別從用戶端應用程式或仲介層服務流向 Analysis Services。 身分識別委派通常會在特定物件上定義個別用戶的許可權或篩選時使用。

    涉及身分識別委派的常見案例是設定中介層服務,例如 Excel Services 或 Reporting Services,以在擷取 Analysis Services 中的數據時模擬使用者身分識別。 若要支援此行為,您必須在設定 Excel Services 或 Reporting Services 進行限制委派時,提供 Analysis Services SPN 做為目的地服務。

  • Analysis Services 使用 DirectQuery 模式從 SQL Server 關係資料庫擷取數據時,會委派使用者身分識別。 這是 Analysis Services 將使用者身分識別委派給另一個服務的唯一案例。

Analysis Services 的 SPN 格式

使用 setpn 註冊 SPN。 在較新的作業系統上,setpn 會安裝為系統公用程式。 如需詳細資訊,請參閱 SetSPN

下表描述 Analysis Services SPN 的每個部分。

元素 描述
服務類別 MSOLAPSvc.3 會將服務識別為 Analysis Services 實例。 .3 是 Analysis Services 傳輸中使用的 XMLA-over-TCP/IP 通訊協定版本的參考。 這與產品版本無關。 因此,MSOLAPSvc.3 是 SQL Server 2005、2008、2008 R2、2012 和任何未來 Analysis Services 版本的正確服務類別,直到修改通訊協定本身為止。
主機名 識別服務執行所在的計算機。 這可以是完整功能變數名稱或 NetBIOS 名稱。 您應該為這兩者註冊 SPN。

註冊伺服器的 NetBIOS 名稱 SPN 時,請務必使用 SetupSPN -S 檢查是否有重複的註冊。 NetBIOS 名稱不保證在樹系中是唯一的,而且具有重複的SPN註冊會導致連線失敗。

針對 Analysis Services 負載平衡叢集,主機名應該是指派給叢集的虛擬名稱。

絕對不要使用IP位址建立SPN。 Kerberos 使用網域的 DNS 解析功能。 指定IP位址會略過該功能。
埠號碼 雖然埠號碼是 SPN 語法的一部分,但您從未在註冊 Analysis Services SPN 時指定埠號碼。 Analysis Services 會使用冒號 (: ) 字元,通常用來提供標準 SPN 語法中的埠號碼,以指定實例名稱。 針對 Analysis Services 實例,埠會假設為預設埠 (TCP 2383) 或 SQL Server Browser 服務指派的埠 (TCP 2382)。
實例名稱 Analysis Services 是可複製的服務,可在同一部計算機上安裝多次。 每個實例都會透過其實例名稱來識別。

實例名稱前面會加上冒號 (: ) 字元。 例如,假設主計算機名為 SRV01 和 SSAS-Tabular 的具名實例,SPN 應該是 SRV01:SSAS-Tabular。

請注意,指定具名 Analysis Services 實例的語法與其他 SQL Server 實例所使用的語法不同。 其他服務會使用反斜杠 (\ ) 在SPN中附加實例名稱。
Service-account 這是 MSSQLServerOLAPService Windows 服務的啟動帳戶。 它可以是 Windows 網域用戶帳戶、虛擬帳戶、受控服務帳戶 (MSA) 或內建帳戶,例如個別服務 SID、NetworkService 或 LocalSystem。 Windows 網域用戶帳戶可以格式化為 domain\user 或 user@domain。

虛擬帳戶的SPN註冊

虛擬帳戶是 SQL Server 服務的預設帳戶類型。 虛擬帳戶會針對預設實例 NT Service\MSOLAPServiceNT Service\MSOLAP$<具名實例的實例名稱>。

顧名思義,這些帳戶不存在於 Active Directory 中。 虛擬帳戶只存在於本機計算機上。 線上到外部服務、應用程式或裝置時,會使用本機電腦帳戶進行連線。 因此,在虛擬帳戶下執行的 Analysis Services SPN 註冊實際上是電腦帳戶的 SPN 註冊。

執行為 NT Service\MSOLAPService 的預設實例的範例語法

此範例示範在預設虛擬帳戶下執行的 Analysis Services 預設實例 setspn 語法。 在這裡範例中,電腦主機名 AW-SRV01。 如前所述,SPN 註冊必須指定 計算機帳戶,而不是虛擬帳戶,NT Service\MSOLAPService

Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com AW-SRV01  

注意

請記得建立兩個SPN註冊,一個用於NETBIOS主機名,另一個用於主機的完整功能變數名稱。 線上到 Analysis Services 時,不同的用戶端應用程式會使用不同的主機名慣例。 擁有兩個SPN註冊可確保這兩個版本的主機名都已計入其中。

執行為 NT Service\MSOLAP$ 之具名實例的範例語法<實例名稱>

此範例示範在預設虛擬帳戶下執行的具名實例 setpn 語法。 在此範例中,電腦主機名 AW-SRV02,而實例名稱 AW-FINANCE。 同樣地,它是針對 SPN 指定的電腦帳戶,而不是針對 NT Service\MSOLAP$ 虛擬帳戶<實例名稱>。

Setspn -s MSOLAPSvc.3/AW-SRV02.AdventureWorks.com:AW-FINANCE AW-SRV02  

網域帳戶的SPN註冊

使用網域帳戶來執行 Analysis Services 實例是常見的作法。

針對在網路或硬體負載平衡叢集中執行的 Analysis Services 實例,需要網域帳戶,且叢集中的每個實例都以相同網域帳戶執行。

以網域使用者身分執行之預設實例的範例語法

此範例示範在 AdventureWorks 網域中,SSAS-Service網域中執行之 Analysis Services 預設實例 setpn 語法。

Setspn -s msolapsvc.3/AW-SRV01.Adventureworks.com AdventureWorks\SSAS-Service  

提示

根據SPN的註冊方式,執行 Setspn -L <domain account>Setspn -L <machinename>,確認是否已為 Analysis Services 伺服器建立 SPN。 您應該會在清單中看到 MSOLAPSVC.3/<主機名>。

內建帳戶的SPN註冊

雖然不建議這種做法,但較舊的 Analysis Services 安裝有時會設定為在網路服務、本地服務或本機系統等內建帳戶下執行。

在內建帳戶下執行之默認實例的範例語法

在內建帳戶或個別服務 SID 下執行之服務的 SPN 註冊,相當於用於虛擬帳戶的 SPN 語法。 使用電腦帳戶,而不是帳戶名稱:

Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com AW-SRV01  

具名實例的SPN註冊

根據預設,Analysis Services 的具名實例會使用 SQL Server Browser 服務偵測到的動態埠指派。 您只需要為具名實例建立 NetBIOS 和 FQDN SPN,才能啟用 Kerberos 連線。

以網域使用者身分執行的具名實例範例語法

下列範例顯示 AdventureWorks 網域中網域用戶帳戶 SSAS-Service 下執行之 Analysis Services 具名實例 AW-FINANCEsetspn 語法。 在此範例中,計算機主機名為 AW-SRV01。

FQDN SPN: Setspn -s MSOLAPSvc.3/AW-SRV01.AdventureWorks.com:AW-FINANCE AdventureWorks\SSAS-Service 

NetBIOS SPN: Setspn -s MSOLAPSvc.3/AW-SRV01:AW-FINANCE AdventureWorks\SSAS-Service 

注意

如果您將具名實體設定為接聽固定埠,請執行下列步驟以使用來自用戶端應用程式的 Kerberos 連線:

  1. 啟動 SQL Server Browser 服務。
  2. 如果您在連接字串中使用埠號碼,請移除埠號碼、新增實例名稱,並讓應用程式透過 SQL Server Browser 服務接收埠號碼。

提示

根據SPN的註冊方式,執行 Setspn -L <domain account>Setspn -L <machinename> 命令,確認是否已為 SQL 具名實例建立 SPN。

Microsoft適用於 SQL Server 的 Kerberos Configuration Manager 是一種診斷工具,可協助針對 SQL Server 的 Kerberos 相關連線問題進行疑難解答。 此工具可協助找出 SPN 和委派中的潛在問題,並提供自動化程式來修正已識別的問題。 如需詳細資訊,請參閱 sql ServerMicrosoft Kerberos Configuration Manager。

SSAS 叢集的SPN註冊

針對 Analysis Services 故障轉移叢集,主機名應該是指派給叢集的虛擬名稱。 當您在現有的 WSFC 上安裝 Analysis Services 時,這是在 SQL Server 安裝程式期間指定的 SQL Server 網路名稱。 您可以在 Active Directory 中找到此名稱。 您也可以在 [故障轉移叢集管理員] | [角色 | 資源] 索引卷標中找到它。[資源] 索引標籤上的伺服器名稱是 SPN 命令中應該用來做為「虛擬名稱」的內容。

Analysis Services 叢集的 SPN 語法

Setspn -s msolapsvc.3/<virtualname.FQDN > <domain user account>  

回想一下,Analysis Services 叢集中的節點必須使用預設埠 (TCP 2383),並在相同的網域用戶帳戶下執行,讓每個節點都有相同的 SID。 如需詳細資訊,請參閱 如何叢集 SQL Server Analysis Services

針對設定為 HTTP 存取的 SSAS 實例進行 SPN 註冊

根據解決方案需求,您可能已設定 Analysis Services 進行 HTTP 存取。 如果您的解決方案包含 IIS 作為中介層元件,且 Kerberos 驗證是解決方案需求,您可能需要手動註冊 IIS 的 SPN。 如需詳細資訊,請參閱如何在 如何設定 SQL Server 2008 Analysis Services 和 SQL Server 2005 Analysis Services 中的<設定執行 IIS 的電腦上設定設定>,以使用 Kerberos 驗證

在 Analysis Services 實例的 SPN 註冊方面,針對 TCP 或 HTTP 設定的實例之間沒有任何差異。 使用 MSMDPUMP ISAPI 擴充功能從 IIS 連線到 Analysis Services 的連線一律為 TCP。

這表示您可以使用先前各節的指示來註冊 SPN,以取得預設或具名實例。 指定主機名時,請務必在為 HTTP 存取設定服務時,使用您在 msmdpump.ini 檔案中指定的主機名。

如需 HTTP 存取的詳細資訊,請參閱 在 Internet Information Services 上設定 Analysis Services 的 HTTP 存取權 (IIS) 8.0

在固定埠上接聽 SSAS 實例的 SPN 註冊

您無法在 Analysis Services SPN 註冊上指定埠號碼。Analysis Services SPN 註冊只能使用實例名稱。 如果您將 Analysis Services 安裝為預設實例,並將其設定為接聽非預設埠,則無法使用 Kerberos 連線到該實例。 您必須將它設定為接聽預設埠 (TCP 2383) 以啟用該實例的 Kerberos 連線。 在非預設埠上接聽之 Analysis Services 的預設實例只能接受 NTLM 連線。 針對具名實例,您必須啟動 SQL Server Browser 服務,並在連接字串中使用實例名稱,而不是埠號碼。

Analysis Services 實例只能接聽單一埠。 不支援使用多個埠。 如需埠設定的詳細資訊,請參閱 設定 Windows 防火牆以允許 Analysis Services 存取

另請參閱

Microsoft BI 驗證和身分識別委派
使用 Kerberos 相互驗證
服務主體名稱 (SPN) SetSPN 語法 (Setspn.exe)
SetSPN
服務帳戶逐步指南
設定 Windows 服務帳戶和許可權
當您設定裝載在 Internet Information Services 上的 Web 應用程式時,如何使用 SPN
服務帳戶的新功能
設定 SharePoint 2010 產品的 Kerberos 驗證(白皮書)