限制租户访问权限
重视安全的大型组织都希望迁移到 Microsoft 365 等云服务,但需要知道,其用户只能访问已批准的资源。 在传统上,公司在想要管理访问权限时,会限制域名或 IP 地址。 如果服务型软件 (SaaS) 应用在公有云中托管并在类似于 outlook.office.com
和 login.microsoftonline.com
的共享域名中运行,则这种做法会失败。 阻止这些地址会导致用户完全无法访问 Web 上的 Outlook,而不只是将他们能够访问的内容局限于批准的标识和资源。
为了解决这个难题,Microsoft Entra 解决方案推出了一项称作“租户限制”的功能。 借助租户限制,组织可以根据应用程序用于单一登录的 Microsoft Entra 租户来控制对 SaaS 云应用程序的访问。 例如,你可能希望允许用户访问你所在组织的 Microsoft 365 应用程序,同时阻止他们访问其他组织中这些应用程序的实例。
借助租户限制,组织可以指定其网络上的用户有权访问的租户列表。 Microsoft Entra ID 只向这些允许的租户授予访问权限 - 所有其他租户都会遭阻止,即使用户是其中的来宾也是一样。
本文将重点介绍 Microsoft 365 的租户限制,但该功能可防止所有应用将用户发送到 Microsoft Entra ID 进行单一登录。 如果使用 SaaS 应用程序的 Microsoft Entra 租户与 Microsoft 365 使用的租户不同,请确保允许所有必需的租户 (例如,在 B2B 协作方案中)。 有关 SaaS 云应用的详细信息,请参阅 Active Directory 市场。
租户限制功能现在也支持阻止使用所有 Microsoft 使用者应用程序(MSA 应用),例如 OneDrive、Hotmail 和 Xbox.com。 此功能将对 login.live.com
终结点使用单独的标头,请参阅本文末尾部分了解详细信息。
工作原理
总体解决方案由以下组件构成:
Microsoft Entra ID:如果存在
Restrict-Access-To-Tenants: <permitted tenant list>
标头,Microsoft Entra 只为允许的租户颁发安全令牌。本地代理服务器基础结构:此基础结构是能够进行传输层安全性 (TLS) 检查的代理设备。 必须将代理配置为在发往 Microsoft Entra ID 的流量中插入包含允许租户列表的标头。
客户端软件:为了支持租户限制,客户端软件必须直接从 Microsoft Entra ID 请求令牌,使代理基础结构能够截获流量。 基于浏览器的 Microsoft 365 应用程序目前支持租户限制,使用 OAuth 2.0 等新式身份验证的 Office 客户端也支持租户限制。
新式身份验证:云服务必须使用新式身份验证来使用租户限制,阻止对所有不允许租户的访问。 必须将 Microsoft 365 云服务配置为默认使用新式身份验证协议。 有关 Microsoft 365 对新式身份验证支持的最新信息,请参阅更新的 Office 365 新式身份验证。
下图演示了大致的流量流。 租户限制仅要求针对发往 Microsoft Entra ID 的流量执行 TLS 检查,对于发往 Microsoft 365 云服务的流量,不需要执行此检查。 这种区别很重要,因为 Microsoft Entra ID 的身份验证流量通常比 SaaS 应用程序(如 Exchange Online 和 SharePoint Online)的流量要小得多。
设置租户限制
需要完成两个步骤才能开始使用租户限制。 首选,确保客户端能够连接到正确的地址。 其次,配置代理基础结构。
URL 和 IP 地址
要使用租户限制,客户端必须能够连接到以下 Microsoft Entra URL 进行身份验证:
- login.microsoftonline.com
- login.microsoft.com
- login.windows.net
此外,要访问 Office 365,客户端还必须能够连接到 Office 365 URL 和 IP 地址范围中定义的完全限定域名 (FQDN)、URL 和 IP 地址。
代理配置和要求
需要完成以下配置,以便通过代理基础结构启用租户限制。 本指南的内容是通用的,有关具体的实施步骤,请参阅代理供应商的文档。
先决条件
代理必须能够使用 FQDN/URL 执行 TLS 截获、HTTP 标头插入和目标筛选。
客户端必须信任代理提供的用于 TLS 通信的证书链。 例如,如果使用了来自内部公钥基础结构 (PKI) 的证书,则必须信任内部根证书颁发机构颁发的证书。
使用租户限制需要 Microsoft Entra ID P1 或 P2 许可证。
配置
对于每个到 login.microsoftonline.com
、login.microsoft.com
、login.windows.net
的传出请求,请插入两个 HTTP 标头:Restrict-Access-To-Tenants 和 Restrict-Access-Context。
注意
不要在代理配置的 *.login.microsoftonline.com
下包含子域。 这样做会加入 device.login.microsoftonline.com
,并会干扰设备注册和基于设备的条件访问方案中使用的客户端证书身份验证。 将代理服务器配置为从 TLS break-and-inspect 和标头注入中排除 device.login.microsoftonline.com
和 enterpriseregistration.windows.net
。
这些标头应包含以下元素:
对于 Restrict-Access-To-Tenants,应使用 <允许租户列表> 的值,即希望允许用户访问的租户的逗号分隔列表。 可使用已注册到租户的任何域来识别此列表中的租户以及目录 ID 本身。 以描述租户的所有三种方式为例,允许 Contoso、Fabrikam 和 Microsoft 的名称/值对如下所示:
Restrict-Access-To-Tenants: contoso.com,fabrikam.onmicrosoft.com,aaaabbbb-0000-cccc-1111-dddd2222eeee
对于 Restrict-Access-Context,应使用单个目录 ID 的值,用于声明哪个租户将要设置租户限制。 例如,要将 Contoso 声明为设置租户限制策略的租户,名称/值对如下所示:
Restrict-Access-Context: bbbbcccc-1111-dddd-2222-eeee3333ffff
。 在此处,必须使用自己的目录 ID 才能获取这些身份验证的日志。 如果使用任何不属于自己的目录 ID,这些登录日志将*显示在其他人的租户中,并且会删除所有个人信息。 有关详细信息,请参阅管理体验。
若要查找目录 ID:
- 至少以全局读者身份登录到 Microsoft Entra 管理中心。
- 浏览到“标识”>“概述”>“概述”。
- 复制“租户 ID”值。
要验证目录 ID 或域名是否引用了同一个租户,请使用该 ID 或域代替此 URL 中的<租户>:https://login.microsoftonline.com/<tenant>/v2.0/.well-known/openid-configuration
。 如果域和 ID 的结果相同,则指同一租户。
为了防止用户插入其自己的包含未批准租户的 HTTP 标头,代理需要替换 Restrict-Access-To-Tenants 标头(如果传入的请求中已提供此标头)。
客户端必须被强制对所有到 login.microsoftonline.com
、login.microsoft.com
、login.windows.net
的请求使用代理。 例如,如果使用 PAC 文件来指示客户端使用代理,则不应该允许最终用户编辑或禁用这些 PAC 文件。
用户体验
本部分介绍最终用户和管理员的体验。
最终用户体验
例如,某个用户身处 Contoso 网络,但该用户正在尝试访问 Fabrikam 的某个共享 SaaS 应用程序的实例(如 Outlook Online)。 如果 Fabrikam 不是 Contoso 实例的受允许租户,该用户将看访问拒绝消息。 这条拒绝消息表明用户正在尝试访问组织内部 IT 部门未批准的资源。
管理员体验
虽然在企业代理基础结构上配置租户限制,但管理员可以直接访问 Microsoft Entra 管理中心中的租户限制报告。 查看报告:
- 至少以全局读者身份登录到 Microsoft Entra 管理中心。
- 浏览到“标识”>“概述”>“租户限制”。
Restricted-Access-Context 租户的管理员可以使用此报告来查看由于租户限制策略而被阻止的登录,包括使用的标识和目标目录 ID。 如果设置限制的租户是登录的用户租户或资源租户,则会包含登录。
当 Restricted-Access-Context 租户之外的其他租户中的用户登录时,该报告可能包含有限的信息,例如目标目录 ID。 在这种情况下,用户身份信息(例如,名称和用户主体名称)将被过滤,以保护其他租户中的用户数据(例如根据需要使用 "{PII Removed}@domain.com" or 00000000-0000-0000-0000-000000000000
代替用户名和对象 ID)。
与 Microsoft Entra 管理中心中的其他报表一样,可以使用筛选器来指定报表的范围。 可以根据特定的时间间隔、用户、应用程序、客户端或状态进行筛选。 如果选择“列”按钮,则可以选择通过任意组合以下字段来显示数据:
- 用户 - 此字段可以删除个人数据,其值设为
00000000-0000-0000-0000-000000000000
。 - 应用程序
- Status
- Date
- 日期 (UTC) - 其中 UTC 是协调世界时
- IP 地址
- 客户端
- 用户名 - 此字段可以删除个人数据,其值设为
{PII Removed}@domain.com
- 位置
- 目标租户 ID
Microsoft 365 支持
Microsoft 365 应用程序必须满足两个条件才能完全支持租户限制:
- 使用的客户端支持新式身份验证。
- 已启用新式身份验证作为云服务的默认身份验证协议。
有关哪些 Office 客户端目前支持新式身份验证的最新信息,请参阅更新的 Office 365 新式身份验证。 该页面还包含有关如何在特定的 Exchange Online 和 Skype for Business Online 租户中启用新式身份验证的说明文档链接。 SharePoint Online 已默认启用新式身份验证。 Teams 仅支持新式身份验证,不支持旧式身份验证,因此免验证不适用于 Teams。
Microsoft 365 基于浏览器的应用程序(如 Office 门户、Yammer、SharePoint 网站、Outlook 网页版)目前支持租户限制。 胖客户端(Outlook、Skype for Business、Word、Excel、PowerPoint 等)仅在使用新式身份验证时才可强制实施租户限制。
支持新式身份验证的 Outlook 和 Skype for Business 客户端仍可针对未启用新式身份验证的租户使用旧版协议,从而有效绕过租户限制。 租户限制可能会阻止使用旧式协议的应用程序(如果它们在身份验证期间联系 login.microsoftonline.com
、login.microsoft.com
或 login.windows.net
)。
对于 Windows 上的 Outlook,客户可能选择实施限制来阻止最终用户将未经批准的邮件帐户添加到其配置文件。 有关示例,请参阅阻止添加非默认 Exchange 帐户组策略设置。
Azure RMS 和 Office 邮件加密不兼容
Azure Rights Management Service (Azure RMS) 和 Office 邮件加密功能与租户限制不兼容。 这些功能依赖于将用户登录到其他租户,才能获取加密文档的解密密钥。 由于租户限制会阻止访问其他租户,因此无法访问从不受信任的租户发送给用户的加密邮件和文档。
测试
在整个组织中实施租户限制之前如果想要试用,可采取两种做法:使用 Fiddler 等工具基于主机实施租户限制,或者分阶段推出代理设置。
基于主机的实施方法所用的 Fiddler
Fiddler 是一个免费 Web 调试代理,可用于捕获和修改 HTTP/HTTPS 流量,包括插入 HTTP 标头。 要配置 Fiddler 来测试租户限制,请执行以下步骤:
根据 Fiddler 的帮助文档,配置 Fiddler 来解密 HTTPS 流量。
配置 Fiddler,使用自定义规则插入 Restrict-Access-To-Tenants 和 Restrict-Access-Context 标头:
在 Fiddler Web 调试器工具中选择“规则”菜单,并选择“自定义规则...”以打开 CustomRules 文件。
在
OnBeforeRequest
函数中添加以下行。 将 <租户标识符列表> 替换为已注册到租户的域(例如contoso.onmicrosoft.com
)。 将<目录 ID> 替换为租户的 Microsoft Entra GUID 标识符。 必须包含正确的 GUID 标识符,租户中才能显示日志。
// Allows access to the listed tenants. if ( oSession.HostnameIs("login.microsoftonline.com") || oSession.HostnameIs("login.microsoft.com") || oSession.HostnameIs("login.windows.net") ) { oSession.oRequest["Restrict-Access-To-Tenants"] = "<List of tenant identifiers>"; oSession.oRequest["Restrict-Access-Context"] = "<Your directory ID>"; } // Blocks access to consumer apps if ( oSession.HostnameIs("login.live.com") ) { oSession.oRequest["sec-Restrict-Tenant-Access-Policy"] = "restrict-msa"; }
如果需要允许多个租户,请使用逗号分隔租户名称。 例如:
oSession.oRequest["Restrict-Access-To-Tenants"] = "contoso.onmicrosoft.com,fabrikam.onmicrosoft.com";
保存并关闭 CustomRules 文件。
配置 Fiddler 后,可转到“文件”菜单并选择“捕获流量”来捕获流量。
分阶段部署代理设置
根据代理基础结构的功能,有时可以分阶段向用户部署设置。 有关注意事项,请参阅以下高级选项:
- 使用 PAC 文件将测试用户指向测试代理基础结构,普通用户可继续使用生产代理基础结构。
- 某些代理服务器可以使用组来支持不同的配置。
有关具体细节,请参阅代理服务器文档。
阻止使用者应用程序
Microsoft 提供的同时支持使用者帐户和组织帐户(如 OneDrive)的应用程序有时可以托管在同一 URL 上。 这意味着,因工作目的必须访问该 URL 的用户也可以因个人用途而访问该 URL。 根据操作准则,可能不允许使用此选项。
有些组织尝试通过阻止 login.live.com
来阻止个人帐户进行身份验证,由此修复此问题。 这种修复方法有几个缺点:
- 阻止
login.live.com
会阻止在 B2B 来宾方案中使用个人帐户,从而侵扰访客和协作。 - Autopilot 要求使用
login.live.com
进行部署。 当login.live.com
被阻止时,Intune 和 Autopilot 方案可能会失败。 - 依赖于 login.live.com 服务获取设备 ID 进行的组织遥测和 Windows 更新会停止工作。
使用者应用的配置
当 Restrict-Access-To-Tenants
标头充当允许列表时,Microsoft 帐户 (MSA) 块将作为拒绝信号,告诉 Microsoft 帐户平台不允许用户登录到使用者应用程序。 若要发送此信号,sec-Restrict-Tenant-Access-Policy
标头会注入到使用本文代理配置和需求一节中所介绍的相同企业代理或防火墙访问 login.live.com
的流量。 此标头的值必须为 restrict-msa
。 如果该标头存在且使用者应用尝试直接登录用户,登录将被阻止。
目前,由于 login.live.com 与 Microsoft Entra ID 分开托管,管理日志中不显示对使用者应用程序的身份验证。
标头阻止和不会阻止的项目
restrict-msa
策略会阻止使用使用者应用程序,但允许通过多种其他类型的流量和身份验证:
- 面向设备的无用户流量。 此选项包括面向 Autopilot、Windows 更新和组织遥测的流量。
- 使用者帐户的 B2B 身份验证。 受邀与租户协作的 Microsoft 帐户的用户将通过身份验证登录 login.live.com,以便访问资源租户。
- 此访问权限由
Restrict-Access-To-Tenants
标头进行控制,以允许或拒绝对该资源租户的访问。
- 此访问权限由
- 许多 Azure 应用和 Office.com 都使用“传递”身份验证,对此应用使用 Microsoft Entra ID 在使用者上下文中登录使用者用户。
- 此访问权限也由
Restrict-Access-To-Tenants
标头进行控制,以允许或拒绝对该特殊“传递”租户 (f8cdef31-a31e-4b4a-93e4-5f571e91255a
) 的访问。 如果此租户不在允许域的Restrict-Access-To-Tenants
列表中,Microsoft Entra ID 将阻止使用者帐户登录到这些应用。
- 此访问权限也由
不支持 TLS 中断和检查的平台
租户限制取决于 HTTPS 标头中允许的租户列表的注入。 此信赖项要求传输层安全性检查 (TLSI) 中断并检查流量。 对于客户端无法中断和检查流量以添加标头的环境,租户限制不起作用。
以 Android 7.0 及更高版本为例。 Android 更改了处理受信任的证书颁发机构 (CA) 的方式,以便为安全应用流量提供更安全的默认值。 有关详细信息,请参阅对 Android Nougat 中受信任的证书颁发机构的更改。
根据 Google 提供的建议,Microsoft 客户端应用默认忽略用户证书。 此策略使此类应用无法处理租户限制,因为网络代理使用的证书安装在客户端应用不信任的用户证书存储中。
对于无法中断和检查流量以将租户限制参数添加到标头的此类环境,Microsoft Entra ID 的其他功能可以提供保护。 以下列表提供了有关此 Microsoft Entra 功能的详细信息。
- 条件访问:仅允许使用托管/合规的设备
- 条件访问:管理来宾/外部用户的访问权限
- B2B 协作:通过“Restrict-Access-To-Tenants”参数中列出的相同租户的跨租户访问限制出站规则
- B2B 协作:将 B2B 用户的邀请限制为“Restrict-Access-To-Tenants”参数中列出的相同域
- 应用程序管理:限制用户同意应用程序的方式
- Intune:通过 Intune 应用策略,以将托管应用的使用限制为仅注册了设备的帐户的 UPN - 查看“仅允许应用中配置的组织帐户”子标题下的部分。
但是,某些特定方案只能使用租户限制进行涵盖。
后续步骤
- 阅读 Updated Office 365 modern authentication(更新的 Office 365 新式身份验证)
- 查看 Office 365 URL 和 IP 地址范围