你的组织中的用户可以访问本地数据(他们已经具有该数据的访问授权),但在这些用户可以连接到你的本地数据源之前,需要安装和配置本地数据网关。 该网关便于云中的用户与你的本地数据源相互进行快速安全的后台通信,然后返回到云。

安装和配置网关通常由管理员完成。 它可能要求具备本地服务器的专门知识,在某些情况下可能需要服务器管理员权限。

本文不提供有关如何安装和配置网关的分步指导。 为此,请务必参阅本地数据网关。 本文旨在让你深入了解网关的工作原理。 我们还将深入了解有关 Azure Active Directory 和 Analysis Services 中的用户名和安全性的详细信息,以及该云服务如何使用用户登录时所用的电子邮件地址、网关和 Active Directory 来安全地连接到你的本地数据并进行查询。

网关的工作原理

on-prem-data-gateway-how-it-works

让我们首先看一下当用户与连接到本地数据源的元素交互时,会发生什么情况。

Note:

对于 Power BI,需要配置网关的数据源。

  1. 云服务将创建查询以及本地数据源的加密凭据,并将其发送到队列中以让网关进行处理。

  2. 网关云服务将分析该查询,并将请求推送到 Azure 服务总线

  3. 本地数据网关将为挂起的请求轮询 Azure 服务总线

  4. 网关获取查询、解密凭据并使用这些凭据连接到数据源。

  5. 网关将查询发送到数据源执行。

  6. 执行的结果从数据源发出,返回到网关,然后到云服务上。 然后,服务将使用该结果。

可用数据源类型的列表

数据源 实时/DirectQuery 用户配置的手动或计划的刷新
Analysis Services 表格
Analysis Services 多维
SQL Server
SAP HANA
Oracle
Teradata
文件
文件夹
SharePoint 列表(本地)
Web
OData
IBM DB2
MySQL
Sybase
SAP BW
IBM Informix 数据库
ODBC

登录帐户

用户将使用工作或学校帐户登录。 这是你的组织帐户。 如果你注册了 Office 365 产品/服务,但没有提供实际的工作电子邮件,则可能类似于 nancy@contoso.onmicrosoft.com。 你在云服务中的帐户存储于 Azure Active Directory (AAD) 中的租户内。 在大多数情况下,你的 AAD 帐户的 UPN 将与电子邮件地址匹配。

向本地数据源进行身份验证

存储的凭据将用于从网关连接到本地数据源(Analysis Services 除外)。 无论是哪个用户,该网关都使用存储的凭据进行连接。

向实时 Analysis Services 数据源进行身份验证

每次用户与 Analysis Services 交互时,有效用户名将传递到网关,然后传递到你的本地 Analysis Services 服务器。 我们会将你用于登录云的用户主体名称 (UPN)(通常为电子邮件地址)作为有效用户传递到 Analysis Services。 UPN 将在连接属性 EffectiveUserName 中传递。 此电子邮件地址应与本地 Active Directory 域内定义的 UPN 匹配。 UPN 是 Active Directory 帐户的属性。 该 Windows 帐户还需位于 Analysis Services 角色中,以便能够访问服务器。 如果在 Active Directory 中找不到匹配项,则登录不会成功。

Analysis Services 还可以基于此帐户提供筛选。 筛选可能伴随基于角色的安全性或行级别安全性出现。

基于角色的安全性

模型提供了基于用户角色的安全性。 在 SQL Server Data Tools – Business Intelligence (SSDT-BI) 中创作期间,或在部署模型之后,通过使用 SQL Server Management Studio (SSMS) 为特定模型项目定义角色。 角色包含按 Windows 用户名或按 Windows 组的成员。 角色定义了用户进行查询或对模型执行操作所具有的权限。 大多数用户将属于具有读取权限的角色。 其他角色用于具有处理项目、管理数据库功能和管理其他角色的权限的管理员。

行级别安全性

行级别安全性特指 Analysis Services 行级别安全性。 模型可以提供动态的行级别安全性。 不像在用户所属的角色中至少具有一个角色,任何表格模型都不需要动态安全性。 在较高级别,动态安全定义了用户对数据以至特定表中的特定行的读取访问权限。 类似于角色,动态行级别安全性依赖于用户的 Windows 用户名。

用户是否能够查询和查看模型数据首先取决于 Windows 用户帐户所属的角色,其次取决于动态行级别安全性(如已配置)。

在模型中实现角色和动态行级别安全性已超出本文的讨论范围。 你可以在 MSDN 上的角色(SSAS 表格)安全角色(Analysis Services - 多维数据)了解详细信息。 若要特别深入地了解表格模型的安全性,请下载并阅读保护表格 BI 语义模型白皮书。

Azure Active Directory 如何?

Microsoft 云服务使用 Azure Active Directory 来处理对用户的身份验证。 Azure Active Directory 是包含用户名和安全组的租户。 通常情况下,用户登录时使用的电子邮件地址与帐户的 UPN 相同。

本地 Active Directory 的角色是什么?

为了使 Analysis Services 能够确定连接到它的用户是否属于具有数据读取权限的角色,服务器需要转换从 AAD 传递到网关,然后传递到 Analysis Services 服务器的有效用户名。 Analysis Services 服务器向 Windows Active Directory 域控制器 (DC) 传递有效用户名。 接着,Active Directory DC 在本地帐户上确认有效用户名是有效 UPN,并将该用户的 Windows 用户名返回到 Analysis Services 服务器。

不能在未加入域的 Analysis Services 服务器上使用 EffectiveUserName。 为避免发生登录错误,Analysis Services 服务器必须加入域。

如何辨别我的 UPN?

你可能不知道你的 UPN 是什么,而且你有可能不是域管理员。 你可以从工作站使用以下命令找出你的帐户的 UPN。

whoami /upn

结果将类似于电子邮件地址,但是这是位于本地域帐户上的 UPN。 如果你将 Analysis Services 数据源用于实时连接,它必须与从网关传递到 EffectiveUserName 的用户名匹配。

映射 Analysis Services 数据源的用户名

Power BI 允许映射 Analysis Services 数据源的用户名。 你可以配置规则,以便将登录 Power BI 时使用的用户名映射到为 Analysis Services 连接上的 EffectiveUserName 传递的名称。 当 AAD 中的用户名与本地 Active Directory 中的 UPN 不匹配时,映射用户名功能是解决此问题的一种好方法。 例如,如果你的电子邮件地址是 nancy@contoso.onmicrsoft.com,你可以将其映射到 nancy@contoso.com,并且该值将被传递到网关。 你可以了解有关如何映射用户名的详细信息。

将本地 Active Directory 与 Azure Active Directory 同步

如果打算使用 Analysis Services 实时连接,本地 Active Directory 帐户就要与 Azure Active Directory 匹配。 因为帐户之间的 UPN 必须匹配。

云服务只知道 Azure Active Directory 中的帐户。 不管你是在本地 Active Directory 中添加了一个帐户,还是该帐户在 AAD 中不存在或者无法使用,都没有关系。 你可以通过多种不同的方式将本地 Active Directory 帐户与 Azure Active Directory 匹配。

  1. 可以将帐户手动添加到 Azure Active Directory 中。

    可以在 Azure 门户或 Office 365 管理门户中创建一个帐户,帐户名称与本地 Active Directory 帐户的 UPN 匹配。

  2. 你可以使用 Azure AD Connect 工具将本地帐户同步到 Azure Active Directory 租户。

    Azure AD Connect 工具提供多个目录和密码同步选项。 如果你不是租户管理员或本地域管理员,则需要联系 IT 管理员对其进行配置。

  3. 可以配置 Active Directory 联合身份验证服务 (ADFS)。

    可以使用 Azure AD Connect 工具将 ADFS 服务器关联到 AAD 租户。 ADFS 会使用上述目录同步,但允许使用单一登录 (SSO) 体验。 例如,如果你在工作网络中,则当你登录某个云服务时,系统可能不会提示你输入用户名或密码。 你需要与 IT 管理员讨论你的组织是否可以使用该服务。

使用 Azure AD Connect 可确保 AAD 与本地 Active Directory 之间的 UPN 匹配。

Note:

使用 Azure AD Connect 工具同步帐户时,将在你的 AAD 租户内创建新帐户。

现在,这就网关起作用的地方

网关充当云和本地服务器之间的桥梁。 Azure 服务总线可保护云和网关之间的数据传输。 服务总线通过网关上的出站连接在云和本地服务器之间创建一条安全通道。 你不需要在本地防火墙上打开任何入站连接。

如果有 Analysis Services 数据源,你需要在加入到与 Analysis Services 服务器位于同一个林/域的计算机上安装网关。

网关离服务器越近,连接速度就越快。 如果可以在数据源所在的同一服务器上获取网关,最好避免网关和服务器之间的网络延迟。

接下来该怎么做?

安装网关后,需要为该网关创建数据源。 可以在“管理网关”屏幕中添加数据源。 有关详细信息,请参阅与管理数据源相关的文章。

管理数据源 - Analysis Services
管理数据源 - SAP HANA
管理数据源 - SQL Server
管理数据源 - Oracle
管理数据源 - 导入/计划刷新

这时事情可能会出错

有时,安装网关会失败。 或者,也许网关似乎已正常安装,但该服务仍无法使用它。 在许多情况下,是很简单的原因,如网关用于登录到数据源的凭据的密码。

在其他情况下,用户登录所使用的电子邮件地址的类型可能有问题或者 Analysis Services 不能解析有效用户名。 如果你的多个域彼此之间存在信任关系,并且网关在一个域,而 Analysis Services 在另一个域,这有时就会导致一些问题。

我们没有在这里详细讨论如何排查网关问题,而是将一系列的故障排除步骤放到另一篇文章中,即本地数据网关故障排除。 但愿不会有任何问题。 但如果出现问题,了解所有这些的工作原理和学习故障排除文章都应有所帮助。

登录帐户

用户将使用工作或学校帐户登录。 这是你的组织帐户。 如果你注册了 Office 365 产品/服务,但没有提供实际的工作电子邮件,则可能类似于 nancy@contoso.onmicrosoft.com。 你在云服务中的帐户存储于 Azure Active Directory (AAD) 中的租户内。 在大多数情况下,你的 AAD 帐户的 UPN 将与电子邮件地址匹配。

Windows 服务帐户

本地数据网关配置为使用 NT SERVICE\PBIEgwService 作为 Windows 服务登录凭据。 默认情况下,它有权作为服务登录。 这位于正在安装网关的计算机的上下文中。

Note:

如果选择了个人模式,则需单独配置 Windows 服务帐户。

这不是用于连接到本地数据源的帐户。 也不是登录到云服务的工作或学校帐户。

如果你由于身份验证遇到有关代理服务器的问题,你可能需要将 Windows 服务帐户更改为域用户或托管服务帐户。 可以在代理配置 中了解如何更改帐户。

端口

网关将创建与 Azure 服务总线的出站连接。 它可在以下出站端口上进行通信:TCP 443(默认)、5671、5672、9350 至 9354。 网关不需要入站端口。 了解详细信息

建议你将防火墙中数据区域的 IP 地址列入白名单。 可以下载 Microsoft Azure 数据中心 IP 列表。 此列表每周更新。 网关使用 IP 地址以及完全限定的域名 (FQDN) 与 Azure 服务总线进行通信。 如果使用 HTTPS 强制网关进行通信,则网关将仅使用 FQDN,如果使用 IP 地址则不会进行通信。

Note:

Azure 数据中心 IP 列表中的 IP 地址以 CIDR 表示法列出。 例如,10.0.0.0/24 并不意味着 10.0.0.0 至 10.0.0.24。 了解有关 CIDR 表示法的详细信息。

下面是网关使用的完全限定的域名的列表。

域名 出站端口 说明
*.download.microsoft.com 80 用于下载安装程序的 HTTP。
*.powerbi.com 443 HTTPS
*.analysis.windows.net 443 HTTPS
*.login.windows.net 443 HTTPS
*.servicebus.windows.net 5671-5672 高级消息队列协议 (AMQP)
*.servicebus.windows.net 443, 9350-9354 基于 TCP 的服务总线中继侦听程序(要求使用端口 443 来获取访问控制令牌)
*.frontend.clouddatahub.net 443 HTTPS
*.core.windows.net 443 HTTPS
login.microsoftonline.com 443 HTTPS
*.msftncsi.com 443 当 Power BI 服务无法访问网关时,用于测试 Internet 连接。
*.microsoftonline-p.com 443 用于根据配置进行身份验证。
Note:

访问 visualstudio.com 或 visualstudioonline.com 的流量用于应用见解,而非网关作业所需。

强制 HTTPS 与 Azure 服务总线通信

可以使用 HTTPS 替代直接 TCP,以强制网关与 Azure 服务总线通信。 这可能会对性能产生影响。 若要执行此操作,请通过将值从 AutoDetect 更改为 Https 来修改 Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config 文件,如紧接本段后面的代码片段中所示。 默认情况下,此文件位于 C:\Program Files\On-premises data gateway

<setting name="ServiceBusSystemConnectivityModeString" serializeAs="String">
    <value>Https</value>
</setting>

或者,从 2017 年 3 月版本开始,用户可以使用网关用户界面来强制网关采用此行为。 在网关用户界面中,选择“网络”,然后将“Azure 服务总线连接模式”切换至“启用”。

更改后,在选择“应用”(该按钮仅在做出更改时出现)后,网关 Windows 服务 将自动重启,从而使更改生效。

可以通过选择“服务设置”,然后选择“立即重启”从用户界面对话框中重启网关 Windows 服务 以供将来参考之用。

高可用性

网关路线图中拥有高可用性选项。 请继续关注更多的更新。

如何重启网关

网关作为一项 Windows 服务运行。 像任何 Windows 服务一样,你可以启动和停止它。 有多种方法可以执行此操作。 下面是你可以如何从命令提示符执行此操作。

  1. 在运行网关的计算机上,启动管理员命令提示符。

  2. 使用以下命令停止服务。

    net stop PBIEgwService

  3. 使用以下命令启动服务。

    net start PBIEgwService

另请参阅

本地数据网关故障排除
Azure 服务总线
Azure AD Connect
更多问题? 尝试参与 Power BI 社区