共用方式為


設定 Internet Information Services (IIS) 7.0 上 Analysis Services 的 HTTP 存取

您可以設定 MSMDPUMP.dll (這是在 Internet Information Services (IIS) 中執行的一個 ISAPI 擴充程式,可以將資料從用戶端應用程式提取到 Analysis Services 伺服器,然後再從 Analysis Services 伺服器提取回用戶端應用程式) 來啟用 Analysis Services 的 HTTP 存取。此方法會在您的 BI 方案需要下列功能時,提供連接至 Analysis Services 的替代方式。

  • 用戶端存取是透過網際網路或外部網路連接進行,但會限制可啟用的通訊埠。

  • 用戶端連接是來自相同網路的不信任網域。

  • 用戶端應用程式會在允許 HTTP 但不允許 TCP/IP 連接的網路環境中執行。

  • 需要 Windows 整合式安全性以外的驗證方法。具體而言,您可以在設定 Analysis Services 進行 HTTP 存取時使用匿名連接和基本驗證。不支援摘要式、表單和 ASP.NET 驗證。

  • 用戶端應用程式無法使用 Analysis Services 用戶端程式庫 (例如,在 UNIX 伺服器上執行的 Java 應用程式)。如果您無法使用 Analysis Services 用戶端程式庫進行資料存取,可以透過與 Analysis Services 執行個體的 HTTP 直接連接,使用 SOAP 和 XML/A。

本主題說明如何使用執行 IIS 7.0,設定 Analysis Services 執行個體的 HTTP 存取。這些指示一體適用於和 IIS 7.0 進行互動之所有 Analysis Services 執行個體的支援版本,包括 SQL Server 2012、SQL Server 2008 R2、SQL Server 2008 及 SQL Server 2005。表格式模式及多維度模式伺服器全都支援 HTTP 存取。

[!附註]

針對跨 BI 堆疊的用戶端和伺服器應用程式支援的驗證方法各有不同。如需有關透過對 Analysis Services 的 HTTP 存取啟用之案例的詳細資訊,請參閱 Microsoft BI 驗證及識別授權

本主題包含下列章節:

  • 概觀

  • 必要條件

  • 將 MSMDPUMP.dll 複製到 Web 伺服器上的資料夾中

  • 在 IIS 中建立應用程式集區與虛擬目錄

  • 設定 IIS 驗證並加入延伸模組

  • 編輯 MSMDPUMP.INI 檔案來設定目標伺服器

  • 測試您的組態

概觀

MSMDPUMP 是一個 ISAPI 延伸程式,可載入 IIS 並重新導向至位於相同電腦或相同網域內之遠端電腦的 Analysis Services 執行個體。藉由設定此 ISAPI 擴充程式,即可建立 Analysis Services 執行個體的 HTTP 端點。

您必須為每個 HTTP 端點建立及設定一個虛擬目錄。每個端點都需要一組自己的 MSMDPUMP 檔案,用於您要連接的每個 Analysis Services 執行個體。這組檔案中的組態檔會指定用於每個 HTTP 端點的 Analysis Services 執行個體名稱。

在 IIS 上,MSMDPUMP 會使用 Analysis Services OLE DB 提供者,透過 TCP/IP 連接至 Analysis Services。Analysis Services 和 IIS 都必須位於相同網域或信任的網域,原生連接才會成功。

當 MSMDPUMP 連接至 Analysis Services 時,它會利用 Windows 使用者識別這麼做。此帳戶將是匿名帳戶 (如果您是設定匿名連接的虛擬目錄) 或 Windows 使用者帳戶。這個帳戶在 Analysis Services 伺服器和資料庫上必須擁有適當的資料存取權限。

[!附註]

請記得解除封鎖 Windows 防火牆中的連接埠,以允許用戶端與 Analysis Services 遠端伺服器的連接。如需詳細資訊,請參閱<設定 Windows 防火牆以允許 Analysis Services 存取>。

顯示元件間連接的圖表

下表列出您針對不同狀況啟用 HTTP 存取時的其他考量。

案例

組態

相同電腦上的 IIS 和 Analysis Services

這是最簡單的組態,因為它可讓您搭配 NTLM 使用預設組態 (其伺服器名稱為 localhost)、本機 Analysis Services OLE DB 提供者,以及 Windows 整合式安全性。假設用戶端也位於相同網域,驗證對使用者而言是透明的,您不需要採取其他任何動作。

不同電腦上的 IIS 和 Analysis Services

針對此拓撲,您必須在 Web 伺服器上安裝 Analysis Services OLE DB 提供者。您也必須編輯 msmdpump.ini 檔案,以便在遠端電腦上指定 Analysis Services 執行個體的位置。

此拓撲加入了雙躍點驗證步驟,其中認證必須從用戶端流向 Web 伺服器,然後再流向後端 Analysis Services 伺服器。如果您要使用 Windows 認證和 NTLM,將會出現錯誤,因為 NTLM 不允許將用戶端認證委派給另一部伺服器。最常見的方案是搭配安全通訊端層 (SSL) 使用基本驗證,但在存取 MSMDPUMP 虛擬目錄時,這將需要使用者提供使用者名稱和密碼。更直接的方法可能是啟用 Kerberos 並設定 Analysis Services 限制的委派,讓使用者可以用透明的方式存取 Analysis Services。

請考慮要在 Windows 防火牆中解除封鎖哪些通訊埠。您將需要解除封鎖兩部伺服器上的通訊埠,以便存取 IIS 上的 Web 應用程式,以及遠端伺服器上的 Analysis Services。

用戶端連接是來自不信任網域或外部網路連接

來自不信任網域的用戶端連接會進一步導入驗證的限制。根據預設,Analysis Services 使用 Windows 整合式驗證,這種驗證需要使用者與伺服器位於相同網域上。如果您有從網域外部連接至 IIS 的外部網路使用者,當伺服器設定為使用預設值時,那些使用者會發生連接錯誤。

因應措施包括,讓外部網路使用者使用網域認證,透過 VPN 連接。不過,更好的方法可能是在 IIS 網站上啟用基本驗證和 SSL。

必要條件

IIS Web 伺服器上必篢安裝 SQL Server 2012 Analysis Services OLE DB 提供者 (MSOLAP)。您可以從 SQL Server 2012 功能套件下載此提供者。

步驟 1:將 MSMDPUMP 檔案複製到 Web 伺服器上的資料夾中

您建立的每個 HTTP 端點都必須有一組自己的 MSMDPUMP 檔案。在此步驟中,您要將 MSMDPUMP 可執行檔、組態檔以及資源檔從 Analysis Services 程式資料夾,複製到您將在執行 IIS 所在電腦的檔案系統上建立的新虛擬目錄資料夾。

磁碟機必須格式化為 NTFS 檔案系統。您所建立之資料夾的路徑不得包含任何空格。

  1. 尋找您要複製的檔案:MSMDPUMP.DLL、MSMDPUMP.INI 及包含語言資源檔案的 Resources 資料夾。這些檔案位於 <磁碟機>:\Program Files\Microsoft SQL Server\<instance>\OLAP\bin\isapi。

    [!附註]

    請注意,在最新版的 SQL Server 中,執行個體名稱的格式已變更。如果您使用 SQL Server 2012,預設的執行個體名稱為 MSAS11.MSSQLSERVER。

  2. 複製 \OLAP\bin\isapi 資料夾內的所有檔案,包括 Resources 子資料夾的內容。

  3. 在 Web 伺服器上,建立新的資料夾:<磁碟機>:\inetpub\wwwroot\OLAP

  4. 將您先前複製的檔案貼入此新資料夾中。

  5. 確認您 Web 伺服器上的 \inetpub\wwwroot\OLAP 資料夾包含下列項目:MSMDPUMP.DLL、MSMDPUMP.INI 及一個 Resources 資料夾。您的資料夾結構看起來應該像這樣:

    • <磁碟機>:\inetpub\wwwroot\OLAP\MSMDPUMP.dll

    • <磁碟機>:\inetpub\wwwroot\OLAP\MSMDPUMP.ini

    • <磁碟機>:\inetpub\wwwroot\OLAP\Resources

步驟 2:在 IIS 中建立應用程式集區與虛擬目錄

接著建立應用程式集區和提供都端點給幫浦的虛擬目錄。

建立應用程式集區

  1. 啟動 IIS 管理員。按一下 [開始],指向 [執行],然後輸入 Inetmgr。

    使用 inetmgr exe 執行命令的螢幕擷取畫面

  2. 以滑鼠右鍵按一下 [應用程式集區],然後按一下 [新增應用程式集區]。使用 .NET Framework v2.0.50727,在 Managed 管線模式設為 [傳統] 的情況下,建立名稱為 OLAP 的應用程式集區。

    新增應用程式集區對話方塊的螢幕擷取畫面

  3. 根據預設,IIS 會使用 Network Service 做為安全性識別來建立應用程式集區。若要變更您剛才建立之應用程式集區的識別,以滑鼠右鍵按一下 OLAP,然後選取 [進階設定]

    進階設定屬性頁的螢幕擷取畫面

  4. 在 [識別] 中,按一下 IIS 所指定的內建帳戶。根據您要使用的 Windows 版本,這是 [Network Service] (顯示在螢幕擷取畫面中) 或 [ApplicationPoolIdentity]。按一下此屬性的 [變更] 按鈕,以您要使用的自訂帳戶取代內建帳戶。

  5. 根據預設,IIS 會在 64 位元作業系統上,將 [啟用 32 位元應用程式] 屬性設為 false。如果您從 64 位元的 Analysis Services 安裝複製 msmdpump.dll,對 64 位元 IIS 伺服器上的 MSMDPUMP 延伸程式而言,這是正確的設定。如果您從 32 位元安裝複製 MSMDPUMP 二進位,則將其設為 true。請立即檢查此屬性以確認設定是否正確。

建立虛擬目錄

  1. 在 [IIS 管理員] 中,開啟 [網站],以滑鼠右鍵按一下 [預設的網站] (或您要用於存取幫浦的網站),然後按一下 [新增虛擬目錄]

  2. 在 [別名] 中輸入 OLAP。

  3. 在 [實體路徑] 中,按一下瀏覽按鈕並瀏覽至 C:\inetpub\wwwroot\OLAP。按一下 [確定]。

    新增虛擬目錄對話方塊的螢幕擷取畫面

  4. 以滑鼠右鍵按一下您剛建立的 OLAP 虛擬目錄,然後按一下 [轉換成應用程式]

  5. 按一下 [加入應用程式] 對話方塊之 [應用程式集區] 旁的 [選取],然後選擇您在上節中建立的 OLAP 應用程式集區。

  6. 按兩次 [確定] 接受變更,並且轉換應用程式。

步驟 3:設定 IIS 驗證並加入延伸模組

在此步驟中,您會進一步設定您剛建立的 SSAS 虛擬目錄。您將會指定驗證方法,然後加入指令碼對應。經由 HTTP 的 Analysis Services 所支援的驗證方法包括:

  • Windows 驗證 (Kerberos 或 NTLM)

  • 匿名驗證

  • 基本驗證

匿名驗證經常在初始測試期間使用,因為它容易設定,可幫助您快速驗證 Analysis Services 的 HTTP 連接。只要執行幾個步驟,您就可以指派唯一的使用者帳戶做為識別、授與該帳戶 Analysis Services 中的權限、使用帳戶確認用戶端應用程式中的資料存取,然後在測試完成時停用匿名驗證。

如果使用者沒有 Windows 使用者帳戶,您也可以在生產環境中使用匿名驗證,但請遵循最佳作法,鎖定主機系統上的權限,如本文件中的註標所示:啟用匿名驗證 (IIS 7)。務必在虛擬目錄上設定驗證,而不是在父網站上,以便進一步降低帳戶存取層級。

啟用匿名時,可透過匿名使用者身分進行任何對 HTTP 端點的使用者連接。您將無法稽核個別使用者連接,也無法使用使用者識別從模型選取資料。如您所見,使用匿名的影響範圍包含從模型設計到資料重新整理和存取的一切。不過,如果使用者沒有 Windows 使用者登入,則使用匿名帳戶可能是您唯一的選項。

Windows 驗證視為最安全,並且會針對使用 Active Directory 的網路運用現有基礎結構。若要有效使用 Windows 驗證,所有瀏覽器、用戶端應用程式及伺服器應用程式都必須支援該驗證。這是最安全的建議模式,但是它要求 IIS 能夠存取可驗證要求連接之使用者識別的 Windows 網域控制站。

對於將 Analysis Services 和 IIS 放置於不同電腦的拓撲,您將需要解決雙躍點問題,這是在需要將使用者識別委派至遠端電腦上的另一項服務時所引發的問題,通常是因啟用 Analysis Services 進行 Kerberos 限制的委派所造成。如需詳細資訊,請參閱<設定 Analysis Services 進行 Kerberos 限制委派>。

基本驗證是在您有 Windows 識別,但使用者連接來自非信任網域,因而禁止使用委派或模擬的連接時使用。基本驗證可讓您在連接字串上指定使用者識別和密碼。連接至 Analysis Services 時不會使用目前使用者的安全性內容,而是使用連接字串上的認證。由於 Analysis Services 僅支援 Windows 驗證,因此任何傳遞至 Analysis Services 的認證都必須是裝載 Analysis Services 所在網域之成員的 Windows 使用者或群組。

設定驗證類型及加入指令碼對應

  1. 在 [IIS 管理員] 中,依序開啟 [網站][預設的網站],然後選取 OLAP 虛擬目錄。

  2. 在主頁面的 IIS 區段中,按兩下 [驗證]

    IIS 管理員主頁面的螢幕擷取畫面

  3. 如果要使用 Windows 整合式安全性,請啟用 [Windows 驗證]

    Vdir 驗證設定的螢幕擷取畫面

  4. 或者,如果您的用戶端和伺服器應用程式位於不同的網域,請啟用 [基本驗證]。此模式會要求使用者輸入使用者名稱和密碼。使用者名稱和密碼是透過 HTTP 連接,傳送到 IIS。連接至 MSMDPUMP 時,IIS 將嘗試模擬使用所提供認證的使用者,但是認證不會委派至 Analysis Services。您必須在連接時傳遞有效的使用者名稱和密碼,如本文件的步驟 6 所述。

    安全性注意事項安全性注意事項

    請注意,建立傳送密碼之目標系統的任何人都必須有數種方式來保護通訊通道的安全。IIS 提供一組可協助您保護通道安全的工具。如需詳細資訊,請參閱如何在 IIS 7 上設定 SSL

  5. 如果您使用 Windows 或基本驗證,請停用 [匿名驗證]。啟用匿名驗證時,IIS 將一律優先使用它,即使已啟用其他驗證方法也一樣。

    在匿名驗證下,幫浦 (msmdpump.dll) 會以您為匿名使用者建立的使用者帳戶執行。連接至 IIS 的使用者以及連接至 Analysis Services 的使用者之間並沒有差別。根據預設,IIS 會使用 IUSR 帳戶,不過,您可以將它變更為具有網路權限的網域使用者帳戶。如果 IIS 和 Analysis Services 位於不同的電腦上,您將需要這項功能。

    如需有關如何設定匿名驗證之認證的指示,請參閱匿名驗證

    安全性注意事項安全性注意事項

    匿名驗證最可能在受到高度控制的環境中使用,這類環境是依據檔案系統中的存取控制清單給予或拒絕使用者的存取權。如需最佳作法,請參閱啟用匿名驗證 (IIS 7)

  6. 按一下 OLAP 虛擬目錄來開啟主頁面。按兩下 [處理常式對應]

    IIS 管理員主頁面的螢幕擷取畫面

  7. 以滑鼠右鍵按一下頁面的任何位置,然後選取 [新增指令碼對應]。在 [新增指令碼對應] 對話方塊中,將要求路徑指定為 *.dll,再指定 c:\inetpub\wwwroot\olap\msmdpump.dll 做為可執行檔,然後輸入 OLAP 做為名稱。

    新增指令碼對應對話方塊的螢幕擷取畫面

  8. 按一下 [要求限制]

  9. 在 [動作] 索引標籤上,確認已選取 [所有動作]。按一下 [確定],然後再按一下 [確定] 完成加入指令碼對應。

    要求限制對話方塊的螢幕擷取畫面

  10. 出現允許 ISAPI 擴充程式的提示時,按一下 [是]

    確認新增 ISAPI 擴充程式的螢幕擷取畫面

步驟 4:編輯 MSMDPUMP.INI 檔案來設定目標伺服器

MSMDPUMP.INI 檔案會指定 MSMDPUMP.DLL 連接的 Analysis Services 執行個體。這個執行個體可以位於本機或遠端,以及安裝為預設或具名執行個體。

開啟 C:\inetpub\wwwroot\OLAP 資料夾中的 msmdpump.ini 檔,然後查看此檔案的內容。它應該如下所示:

<ConfigurationSettings>
<ServerName>localhost</ServerName>
<SessionTimeout>3600</SessionTimeout>
<ConnectionPoolSize>100</ConnectionPoolSize>
</ConfigurationSettings>

如果您要為其設定 HTTP 存取的 Analysis Services 執行個體位於本機電腦,而且當做預設執行個體安裝,則不需要變更此設定。否則,您必須指定伺服器名稱 (例如,<伺服器名稱>ADWRKS-SRV01</伺服器名稱>)。對於安裝為具名執行個體的伺服器,務必附加執行個體名稱 (例如 <ServerName>ADWRKS-SRV01\Tabular</ServerName>)。

Analysis Services 預設會接聽 TCP/IP 連接埠 2383。若您將 Analysis Services 安裝為預設執行個體,因為 Analysis Services 知道如何自動接聽連接埠 2383,所以您無須在 <伺服器名稱> 中指定任何連接埠。不過,您需要在 Windows 防火牆中,允許該通訊埠的傳入連接。如需詳細資訊,請參閱<設定 Windows 防火牆以允許 Analysis Services 存取>。

如果您將 Analysis Services 的具名執行個體或預設執行個體設定為接聽固定的通訊埠,您必須將通訊埠編號加入至伺服器名稱 (例如,<伺服器名稱>AW-SRV01:55555</伺服器名稱>),而且您必須在 Windows 防火牆中,允許該通訊埠的傳入連接。

步驟 5:授與資料存取權限

如前面所述,您需要授與 Analysis Services 執行個體的資料存取權限。每個資料庫物件都有提供特定層級權限的角色 (讀取或讀取/寫入),因此,每個角色都會有由 Windows 使用者識別所組成的成員。

若要設定權限,您可以使用 SQL Server Management Studio。在 [資料庫 | 角色] 資料夾底下,您可以建立角色、指定資料庫權限、指派成員資格給 Windows 使用者或群組帳戶,然後授與特定物件的讀取或寫入權限。一般而言,Cube 的 [讀取] 權限對於使用 (但不會更新) 模型資料的用戶端連接而言就已足夠。

角色指派會根據您設定的驗證而有所不同。

匿名

將 IIS 的 [編輯匿名驗證認證] 中指定的帳戶加入至 [成員資格] 清單。如需詳細資訊,請參閱匿名驗證

Windows 驗證

將透過模擬或委派要求 Analysis Services 資料的 Windows 使用者或群組帳戶加入至 [成員資格] 清單。

基本驗證

將要在連接字串中傳遞的 Windows 使用者或群組帳戶加入至 [成員資格] 清單。

如需有關設定權限的詳細資訊,請參閱<將存取權授與物件和作業 (Analysis Services)>。

步驟 6:測試您的組態

MSMDPUMP 的連接字串語法為 MSMDPUMP.dll 檔案的 URL。

如果 Web 應用程式要接聽固定的通訊埠,請將通訊埠編號附加到伺服器名稱或 IP 位址 (例如,http://my-web-srv01:8080/OLAP/msmdpump.dll 或 http://123.456.789.012:8080/OLAP/msmdpump.dll)。

若要快速測試連接,您可以使用 Microsoft Excel 或 SQL Server Management Studio 開啟連接。

使用 Excel 測試連接

  1. 在 Excel 的 [資料] 索引標籤上的 [取得外部資料] 中,按一下 [從其他來源],然後選擇 [從 Analysis Services] 啟動 [資料連線精靈]。

  2. 在 [伺服器名稱] 中,輸入 msmdpump 擴充功能的 HTTP 位址:http://my-web-srv01/OLAP/msmdpump.dll。

  3. 針對 [登入認證],如果您使用 Windows 整合式安全性或 NTLM 或是匿名使用者,則選擇 [使用 Windows 驗證]

    若是基本驗證,請選擇 [使用下列的使用者名稱和密碼],然後指定用來登入的認證。您提供的認證將在連接字串中傳遞至 Analysis Services。

使用 SQL Server Management Studio 測試連接

  1. 在 Management Studio 的 [連接到伺服器] 對話方塊中,選取 [Analysis Services] 做為伺服器類型。在 [伺服器名稱] 中,輸入 msmdpump 擴充功能的 HTTP 位址:http://my-web-srv01/OLAP/msmdpump.dll。

  2. 驗證必須是 Windows 驗證,而且使用 Management Studio 的使用者必須是 Analysis Services 系統管理員。

使用 AMO 測試連接

您可以使用 AMO 透過程式設計的方式測試 HTTP 存取,替代端點的 URL 做為伺服器名稱。如需詳細資訊,請參閱論壇文章 (如何透過 HTTPS 跨網域/樹系和防火牆界限同步處理 SSAS 2008 R2 資料庫)

範例連接字串,說明使用基本驗證的 HTTP(S) 存取語法:

Data Source=https://<servername>/olap/msmdpump.dll; Initial Catalog=AdventureWorksDW2012; Integrated Security=Basic; User ID=XXXX; Password=XXXXX;

如需有關以程式設計方式設定連接的詳細資訊,請參閱<在 ADOMD.NET 中建立安全連接>。

最後一個步驟是確實使用更嚴格的測試進行後續追蹤,方法是,使用在連接來源之網路環境中執行的用戶端電腦。

請參閱

概念

設定 Windows 防火牆以允許 Analysis Services 存取

將存取權授與物件和作業 (Analysis Services)

其他資源

論壇文章 (使用 msmdpump 和基本驗證的 HTTP 存取)

IIS 驗證方法

如何在 IIS 7 上設定 SSL