用于工作负载标识的条件访问
条件访问策略历来仅适用于访问 SharePoint Online 等应用和服务的用户。 我们现在将扩展对那些要应用于组织拥有的服务主体的条件访问策略的支持。 我们将此功能称为工作负载标识的条件访问。
工作负载标识是允许应用程序或服务主体访问资源(有时在用户上下文中)的标识。 这些工作负载标识与传统用户帐户不同,因为它们:
- 无法执行多重身份验证。
- 通常没有正式的生命周期过程。
- 需要将其凭据或机密存储在某处。
这些差异使得工作负载标识更难管理,并使它们面临更高的泄露风险。
重要
要创建或修改范围限定为服务主体的条件访问策略,则需要工作负载标识高级许可证。 在没有适当许可证的目录中,工作负载标识的现有条件访问策略将继续运行,但无法修改。 有关详细信息,请参阅 Microsoft Entra 工作负载 ID。
注意
策略可应用于已在租户中注册的单租户服务主体。 第三方 SaaS 和多租户应用超出了范围。 策略未涵盖托管标识。
用于工作负载标识的条件访问支持通过以下方式阻止服务主体:
- 从已知公共 IP 范围之外。
- 根据 Microsoft Entra ID 保护检测到的风险。
- 与身份验证上下文结合使用。
实现
创建基于位置的条件访问策略
创建适用于服务主体的基于位置的条件访问策略。
- 最低以条件访问管理员身份登录到 Microsoft Entra 管理中心。
- 浏览到“保护”>“条件访问”>“策略”。
- 选择“新策略” 。
- 为策略指定名称。 建议组织为其策略的名称创建有意义的标准。
- 在“分配”下,选择“用户或工作负载标识” 。
- 在“此策略适用于哪些内容?”下,选择“工作负载标识”。
- 在“包括”下,选中“选择服务主体”,然后从列表中选择相应的服务主体 。
- 在目标资源资源>(前云应用)>包括下,选择“所有资源”(以前为“所有云应用”)。 该策略仅在服务主体请求令牌时适用。
- 在“条件”>“位置”下,包括“任何位置”,并排除要允许访问的“选定位置” 。
- 在“授权”下,“阻止访问”是唯一可用的选项 。 当令牌请求来自允许范围之外时,将阻止访问。
- 策略可以保存在“仅限报告”模式下,允许管理员估计效果,或者通过将策略设为“启用”来强制执行策略 。
- 选择“创建”以完成策略。
创建基于风险的条件访问策略
创建适用于服务主体的基于风险的条件访问策略。
- 最低以条件访问管理员身份登录到 Microsoft Entra 管理中心。
- 浏览到“保护”>“条件访问”>“策略”。
- 选择“新策略” 。
- 为策略指定名称。 建议组织为其策略的名称创建有意义的标准。
- 在“分配”下,选择“用户或工作负载标识” 。
- 在“此策略适用于哪些内容?”下,选择“工作负载标识”。
- 在“包括”下,选中“选择服务主体”,然后从列表中选择相应的服务主体 。
- 在目标资源资源>(前云应用)>包括下,选择“所有资源”(以前为“所有云应用”)。 该策略仅在服务主体请求令牌时适用。
- 在“条件”>“服务主体风险”下
- 将“配置”切换设置为“是”。
- 选择希望此策略触发的风险级别。
- 选择“完成”。
- 在“授权”下,“阻止访问”是唯一可用的选项 。 当发生指定级别的风险时,将阻止访问。
- 策略可以保存在“仅限报告”模式下,允许管理员估计效果,或者通过将策略设为“启用”来强制执行策略 。
- 选择“创建”以完成策略。
回退
如果要回滚此功能,可以删除或禁用任何创建的策略。
登录日志
登录日志用于查看如何对服务主体强制执行策略,或在使用仅限报告模式时策略的预期影响。
- 浏览到“标识”>“监视和运行状况”>“登录日志”>“服务主体登录”。
- 选择日志条目,然后选择“条件访问”选项卡以查看评估信息。
条件访问阻止服务主体时的失败原因:“访问因条件访问策略而被阻止。”
“仅报表”模式
若要查看基于位置的策略的结果,请参阅“登录报告”中事件的“仅限报告”选项卡,或使用“条件访问见解和报告”工作簿。
若要查看基于风险的策略的结果,请参阅“登录报告”中事件的“仅限报告”选项卡。
参考
查找 objectID
可以从 Microsoft Entra 企业应用程序获取服务主体的 objectID。 无法使用 Microsoft Entra ID 应用注册中的对象 ID。 此标识符是应用注册的对象 ID,而不是服务主体的对象 ID。
- 浏览到“标识”>“应用程序”>“企业应用程序”,找到你注册的应用程序。
- 从“概述”选项卡中,复制应用程序的“对象 ID” 。 此标识符是服务主体的唯一标识符,由条件访问策略用于查找调用应用。
Microsoft Graph
使用 Microsoft Graph beta 版终结点的基于位置的配置的示例 JSON。
{
"displayName": "Name",
"state": "enabled OR disabled OR enabledForReportingButNotEnforced",
"conditions": {
"applications": {
"includeApplications": [
"All"
]
},
"clientApplications": {
"includeServicePrincipals": [
"[Service principal Object ID] OR ServicePrincipalsInMyTenant"
],
"excludeServicePrincipals": [
"[Service principal Object ID]"
]
},
"locations": {
"includeLocations": [
"All"
],
"excludeLocations": [
"[Named location ID] OR AllTrusted"
]
}
},
"grantControls": {
"operator": "and",
"builtInControls": [
"block"
]
}
}