配置对 Internet Information Services (IIS) 7.0 上 Analysis Services 的 HTTP 访问
您可以通过配置 MSMDPUMP.dll(这是一种在 Internet Information Services (IIS) 下运行的 ISAPI 扩展插件,它可以在客户端应用程序和 Analysis Services 服务器之间抽送数据),实现对 Analysis Services 的 HTTP 访问。在您的 BI 解决方案需要以下功能时,此方法可替代用于连接到 Analysis Services 的方法:
客户端访问通过 Internet 或 extranet 连接进行,并且对可以启用的端口有限制。
客户端连接来自同一网络中的不可信域。
客户端应用程序在允许 HTTP 但不允许 TCP/IP 连接的网络环境下运行。
要求并非 Windows 集成安全性的身份验证方法。具体而言,在配置以 HTTP 方式访问 Analysis Services 时可使用匿名连接和基本身份验证。不支持摘要式、窗体和 ASP.NET 身份验证。
客户端应用程序无法使用 Analysis Services 客户端库(例如,在 UNIX 服务器上运行的 Java 应用程序)。如果无法将 Analysis Services 客户端库用于数据访问,则可以使用 SOAP 和 XML/A 通过直接 HTTP 连接来连接到 Analysis Services 实例。
本主题说明如何使用 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 结构中的客户端和服务器应用程序而异。有关通过 HTTP 访问 Analysis Service 而实现的应用场景的详细信息,请参阅 Microsoft BI 身份验证和身份委托。 |
本主题包含以下各节:
概述
先决条件
将 MSMDPUMP.dll 复制到 Web 服务器上的某个文件夹
在 IIS 中创建应用程序池和虚拟目录
配置 IIS 身份验证和添加扩展插件
编辑 MSMDPUMP.INI 文件以便设置目标服务器
测试您的配置
概述
MSMDPUMP 是一种 ISAPI 扩展插件,它加载到 IIS 中并且提供对在同一台计算机上或同一域内的远程计算机上的 Analysis Services 实例的重定向。配置此 ISAPI 扩展后,即创建 Analysis Services 实例的 HTTP 端点。
必须为每个 HTTP 端点都创建并配置一个虚拟目录。对于要连接到的每个 Analysis Services 实例,每个端点都将需要自身的一组 MSMDPUMP 文件。这组文件中有一个配置文件指定用于每个 HTTP 端点的 Analysis Services 实例的名称。
在 IIS 上,MSMDPUMP 使用 Analysis Services OLE DB 访问接口通过 TCP/IP 连接到 Analysis Services。Analysis Services 和 IIS 必须位于同一域中或者位于可信域中,以便本机连接成功。
在 MSMDPUMP 连接到 Analysis Services 时,它基于 Windows 用户标识来这样做。如果您为匿名连接配置了虚拟目录,则该帐户将是匿名帐户或 Windows 用户帐户。此帐户必须对 Analysis Services 服务器和数据库具有适当的数据访问权限。
注意 |
---|
请记住,为了允许与远程 Analysis Services 服务器的客户端连接,需取消阻止 Windows 防火墙中的端口。有关详细信息,请参阅将 Windows 防火墙配置为允许 Analysis Services 访问。 |
下表列出您为不同情形启用 HTTP 访问时需要注意的其他事项。
应用场景 |
配置 |
---|---|
IIS 和 Analysis Services 位于同一台计算机上 |
这是最简单的配置,因为它允许您使用默认配置(其中,服务器名称为 localhost)、本地 Analysis Services OLE DB 访问接口以及与 NTLM 的 Windows 集成安全性。假定客户端也在同一域中,用户意识不到身份验证的存在,并且您不需要做其他工作。 |
IIS 和 Analysis Services 位于不同计算机上 |
对于此拓扑,您必须将 Analysis Services OLE DB 访问接口安装在 Web 服务器上。您还必须编辑 msmdpump.ini 文件,以便指定 Analysis Services 实例在远程计算机上的位置。 此拓扑添加了双跃点身份验证步骤,其中,凭据必须从客户端流到 Web 服务器,然后流到后端 Analysis Services 服务器上。如果您在使用 Windows 凭据和 NTLM,系统将会显示错误消息,因为 NTLM 不允许将客户端凭据委托给第二个服务器。最常见的解决方案是将基本身份验证用于安全套接字层 (SSL),但是,这就要求用户在访问 MSMDPUMP 虚拟目录时提供用户名和密码。一个更为直接的方法可能是启用 Kerberos 并且配置 Analysis Services 约束的委托,以便用户能够以透明的方式访问 Analysis Services。 考虑要在 Windows 防火墙中取消阻止的端口。您将需要取消阻止这两台服务器上的端口,以便允许访问 IIS 上的 Web 应用程序以及远程服务器上的 Analysis Services。 |
客户端连接来自不可信域或 extranet 连接 |
来自不可信域的客户端连接对身份验证带来进一步的限制。默认情况下,Analysis Services 使用 Windows 集成身份验证,这要求用户与服务器处于同一域中。如果您具有从域的外部连接到 IIS 的 Extranet 用户,则在服务器配置为使用默认设置时,这些用户将会收到连接错误。 解决方法包括让 Extranet 用户使用域凭据通过 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 文件系统格式化该驱动器。指向您创建的文件夹的路径不得包含任何空格。
找到需要复制的文件:MSMDPUMP.DLL、MSMDPUMP.INI 和包含语言资源文件的 Resources 文件夹。可在 <驱动器>:\Program Files\Microsoft SQL Server\<实例>\OLAP\bin\isapi 中找到这些文件。
注意 请注意,该实例名称的格式已在最近的 SQL Server 版本中更改。如果您在使用 SQL Server 2012,则默认实例名称是 MSAS11.MSSQLSERVER。
复制 \OLAP\bin\isapi 文件夹中的所有文件,包括 Resources 子文件夹的内容。
在 Web 服务器上,创建一个新文件夹:<drive>:\inetpub\wwwroot\OLAP
将先前复制的文件粘贴到这个新文件夹。
检查 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 中创建应用程序池和虚拟目录
接下来,创建提供抽取端点的应用程序池和虚拟目录。
创建应用程序池
启动 IIS 管理器。单击**“开始”,指向“运行”**,然后键入 Inetmgr。
右键单击**“应用程序池”,然后单击“添加应用程序池”。使用 .NET Framework v2.0.50727 创建名为 OLAP 的应用程序池,并且将托管管道模式设置为“典型”**。
默认情况下,IIS 通过将网络服务用作安全标识,创建应用程序池。若要更改您刚创建的应用程序池的标识,请右键单击 OLAP,然后选择**“高级设置”**。
在“标识”中,单击 IIS 指定的内置帐户。根据您所使用的 Windows 版本,该标识将是**“网络服务”(显示在屏幕快照中)或 ApplicationPoolIdentity。单击此属性的“更改”**按钮,以便用您要使用的自定义帐户替换该内置帐户。
默认情况下,在 64 位操作系统上,IIS 将**“启用 32 位应用程序”**属性设置为 false。如果您从 Analysis Services 的 64 位安装中复制了 msmdpump.dll,则这是针对 64 位 IIS 服务器上 MSMDPUMP 扩展插件的正确设置。如果您从 32 位安装中复制了 MSMDPUMP 二进制文件,则将其设置 true。立即检查此属性以便确保其正确设置。
创建虚拟目录
在 IIS 管理器中,打开**“站点”,右键单击“默认网站”(或者您用于访问抽取的任何网站),然后单击“添加虚拟目录”**。
在“别名”中,键入 OLAP。
在“物理路径”中,单击“浏览”按钮并导航到 C:\inetpub\wwwroot\OLAP。单击**“确定”**。
右键单击您刚创建的 OLAP 虚拟目录,然后单击**“转换为应用程序”**。
在“添加应用程序”对话框中,在“应用程序池”的旁边单击**“选择”**,然后选择在以前章节中创建的 OLAP 应用程序池。
单击**“确定”**两次以接受更改和转换该应用程序。
步骤 3:配置 IIS 身份验证和添加扩展插件
在这一步中,进一步配置刚刚创建的 SSAS 虚拟目录。您将指定一个身份验证方法,然后添加脚本映射。Analysis Services 在 HTTP 上支持的身份验证方法包括:
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 约束委托实现这一点。有关详细信息,请参阅针对 Kerberos 约束委托对 Analysis Services 进行配置。
当您具有 Windows 身份时,将使用基本身份验证,但由于用户连接来自不可信的域,因此禁止使用委托或模拟的连接。通过基本身份验证,可在连接字符串中指定用户身份和密码。不使用当前用户的安全上下文,而是使用连接字符串中的凭据连接到 Analysis Services。由于 Analysis Services 仅支持 Windows 身份验证,因此传递给它的任何凭据都必须是某个 Windows 用户或组,而后者必须是从中托管 Analysis Services 的域的成员。
设置身份验证类型并添加脚本映射
在 IIS 管理器中,打开**“站点”,打开“默认网站”**,然后选择 OLAP 虚拟目录。
在主页的 IIS 部分中双击**“身份验证”**。
如果使用的是 Windows 集成安全性,则启用**“Windows 身份验证”**。
或者,如果客户端和服务器应用程序在不同的域中,则启用**“基本身份验证”**。此模式要求用户输入用户名和密码。该用户名和密码通过 HTTP 连接传输到 IIS。IIS 在连接到 MSMDPUMP 时将尝试使用所提供的凭据模拟用户的身份,但不会将凭据委托给 Analysis Services。而是需要由您在连接时传递有效的用户名和密码,如本文中的第 6 步所述。
安全说明 请注意,构建密码将传输到的系统的任何人都必须设法确保通信渠道的安全。IIS 提供多种工具来帮助您确保通信渠道的安全。有关详细信息,请参阅如何在 IIS 7 上设置 SSL。
如果使用的是 Windows 或基本身份验证,则禁用**“匿名身份验证”**。启用匿名身份验证后,IIS 将始终首先使用该方法,即使启用了其他身份验证方法也是如此。
在匿名身份验证下,抽取 (msmdpump.dll) 以您为匿名用户建立的用户帐户身份运行。连接到 IIS 的用户与连接到 Analysis Services 的用户之间没有区别。默认情况下,IIS 使用 IUSR 帐户,但可将其改为某个具有网络权限的域用户帐户。如果 IIS 和 Analysis Services 在不同的计算机上,则需要用到此功能。
有关如何为匿名身份验证配置凭据的说明,请参阅匿名身份验证。
安全说明 匿名身份验证最常用于极端受控的环境中,其中通过文件系统中的访问控制列表向用户授予访问权限或拒绝用户访问。有关最佳实践,请参阅启用匿名身份验证 (IIS 7)。
单击 OLAP 虚拟目录以便打开主页。双击**“处理程序映射”**。
右键单击该页上的任何地方,然后选择**“添加脚本映射”**。在“添加脚本映射”对话框中,指定 *.dll 作为请求路径,指定 c:\inetpub\wwwroot\OLAP\msmdpump.dll 作为可执行文件,并且输入 OLAP 作为名称。
单击**“请求限制”**。
在“谓词”选项卡上,确认选择了**“所有谓词”。单击“确定”,然后再次单击“确定”**以完成添加脚本映射的过程。
当提示允许运行 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 实例位于本地计算机上并且作为默认实例安装,则无需更改该设置。否则,您必须指定服务器名称(例如 <ServerName>ADWRKS-SRV01</ServerName>)。对于作为命名实例安装的服务器,请确保追加该实例名称(例如 <ServerName>ADWRKS-SRV01\Tabular</ServerName>)。
默认情况下,Analysis Services 侦听 TCP/IP 端口 2383。。如果将 Analysis Services 作为默认实例安装,则无需在 <ServerName> 中指定任何端口,因为 Analysis Services 知道如何自动侦听端口 2383。但是,您确实需要在 Windows 防火墙中允许与该端口的入站连接。有关详细信息,请参阅将 Windows 防火墙配置为允许 Analysis Services 访问。
如果将 Analysis Services 的命名实例或默认实例配置为侦听固定端口,则必须将该端口号添加到服务器名称(例如 <ServerName>AW-SRV01:55555</ServerName>),并且必须在 Windows 防火墙中允许向该端口进行入站连接。
步骤 5:授予数据访问权限
如上所述,需要授予对 Analysis Services 实例的数据访问权限。每个数据库对象都将具有提供给定级别权限(读或读/写)的角色,而每个角色都将具有由 Windows 用户身份组成的成员。
若要设置权限,可使用 SQL Server Management Studio。在“数据库”|“角色”文件夹下,可创建角色、指定数据库权限、向 Windows 用户或组帐户分配成员身份,然后授予对特定对象的读或写权限。通常,使用但不更新模型数据的客户端连接只需对多维数据集的**“读取”**权限即可。
角色分配根据配置身份验证的方式而异。
匿名 |
向成员身份列表添加在 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 测试连接
在 Excel 的“数据”选项卡上的“获取外部数据”中,单击**“自其他来源”,然后选择“来自 Analysis Services”**以启动数据连接向导。
在服务器名称中,输入 msmdpump 扩展的 HTTP 地址:http://my-web-srv01/OLAP/msmdpump.dll。
对于“登录凭据”,如果使用的是 Windows 集成安全性、NTLM 或匿名用户,则选择**“使用 Windows 验证”**。
对于基本身份验证,选择**“使用下列用户名和密码”**,然后指定用于登录的凭据。随后将在连接字符串中将所提供的凭据传递给 Analysis Services。
使用 SQL Server Management Studio 测试连接
在 Management Studio 的“连接到服务器”对话框中,选择**“Analysis Services”**作为服务器类型。在服务器名称中,输入 msmdpump 扩展的 HTTP 地址:http://my-web-srv01/OLAP/msmdpump.dll。
身份验证必须为 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)