使用条件访问控制管理风险

关键概念 — AD FS 中的条件访问控制

AD FS 的总体功能是颁发一个包含声明集的访问令牌。 AD FS 接受哪些声明,然后发布哪些声明,相关决定是由声明规则控制的。

AD FS 中的访问控制是使用颁发授权声明规则实现的,这些规则用于发布许可或拒绝声明,而这些声明将确定是否允许一个用户或一组用户访问受 AD FS 保护的资源。 只能在信赖方信任上设置授权规则。

规则选项 规则逻辑
允许所有用户 如果传入声明类型等于任何声明类型并且值等于任何值,则发出值等于“允许”的声明
允许具有此传入声明的用户访问 如果传入声明类型等于指定的声明类型并且值等于指定的声明值,则发出值等于“允许”的声明
拒绝具有此传入声明的用户访问 如果传入声明类型等于指定的声明类型并且值等于指定的声明值,则发出值等于“拒绝”的声明

有关这些规则选项和逻辑的详细信息,请参阅何时使用授权声明规则

在 Windows Server 2012 R2 的 AD FS 中,访问控制通过用户、设备、位置和身份验证数据等多种因素得到增强。 这是通过提高授权声明规则所用的声明类型的多样性来实现的。 换而言之,在 Windows Server 2012 R2 的 AD FS 中,可以根据用户标识或组成员身份、网络位置、设备(是否加入工作区,有关详细信息,请参阅从任何设备加入工作区,以便实现 SSO 和跨公司应用程序的无缝第二重身份验证),以及身份验证状态(是否执行了多重身份验证 (MFA))来强制执行条件访问控制。

Windows Server 2012 R2 中 AD FS 内的条件访问控制具有以下几个优点:

  • 灵活、明确的按应用程序授权策略,凭此可以基于用户、设备、网络位置和身份验证状态允许或拒绝访问

  • 为信赖方应用程序创建颁发授权规则

  • 针对常见的条件访问控制方案提供丰富的 UI 体验

  • 针对高级条件访问控制方案提供丰富的声明语言和 Windows PowerShell 支持

  • 自定义的(按照信赖方应用)“拒绝访问”消息。 有关详细信息,请参阅自定义 AD FS 登录页。 由于能够自定义这些消息,你可以解释为何用户被拒绝访问,并尽可能协助进行自助式补救,例如,提示用户将其设备加入工作区。 有关详细信息,请参阅 Join to Workplace from Any Device for SSO and Seamless Second Factor Authentication Across Company Applications

下表包含 Windows Server 2012 R2 中 AD FS 内提供的用于实现条件访问控制的所有声明类型。

声明类型 说明
电子邮件地址 用户的电子邮件地址。
用户的给定名称。
名称 用户的唯一名称。
UPN 用户的用户主体名称 (UPN)。
公用名 用户的公用名。
AD FS 1.x 电子邮件地址 与 AD FS 1.1 或 AD FS 1.0 互操作时使用的用户电子邮件地址。
用户所属的组。
AD FS 1.x UPN 与 AD FS 1.1 或 AD FS 1.0 互操作时使用的用户 UPN。
角色 用户具有的角色。
Surname 用户的姓氏。
PPID 用户的专用标识符。
名称 ID 用户的 SAML 名称标识符。
身份验证时间戳 用于显示用户进行身份验证的日期和时间。
身份验证方法 对用户进行身份验证时使用的方法。
“仅拒绝”组 SID 用户的“仅拒绝”组 SID。
“仅拒绝”主 SID 用户的“仅拒绝”主 SID。
“仅拒绝”主组 SID 用户的“仅拒绝”主组 SID。
组 SID 用户的组 SID。
主组 SID 用户的主组 SID。
主 SID 用户的主 SID。
Windows 帐户名 用户的域帐户名,格式为“域\用户”。
为注册用户 用户已注册,可以使用此设备。
设备标识符 设备的标识符。
Device Registration 标识符 Device Registration 的标识符。
Device Registration 显示名称 Device Registration 的显示名称。
设备 OS 类型 设备的操作系统类型。
设备 OS 版本 设备的操作系统版本。
为托管设备 设备由管理服务管理。
转发的客户端 IP 用户的 IP 地址。
客户端应用程序 客户端应用程序的类型。
客户端用户代理 客户端访问应用程序时使用的设备类型。
客户端 IP 客户端的 IP 地址。
终结点路径 终结点绝对路径,可用于确定主动客户端与被动客户端。
代理 传递请求的联合服务器代理的 DNS 名称。
应用程序标识符 信赖方的标识符。
应用程序策略 证书的应用程序策略。
授权密钥标识符 为已颁发证书签名的证书的授权密钥标识符扩展。
基本约束 证书的基本约束之一。
增强型密钥用法 描述证书的增强密钥用法之一。
颁发者 颁发此 X.509 证书的证书颁发机构的名称。
颁发者名称 证书颁发者的可分辨名称。
密钥用法 证书的密钥用法之一。
不晚于 以本地时间表示的证书有效截止日期。
不早于 以本地时间表示的证书生效日期。
证书策略 颁发证书所依据的策略。
公钥 证书的公钥。
证书原始数据 证书的原始数据。
使用者可选名称 证书的备用名称之一。
序列号 证书的序列号。
签名算法 用于创建证书签名的算法。
使用者 证书中的使用者。
使用者密钥标识符 证书的使用者密钥标识符。
使用者名称 证书中的使用者可分辨名称。
V2 模板名称 颁发或续订证书时使用的版本 2 证书模板的名称。 这是一个特定于 Microsoft 的值。
V1 模板名称 颁发或续订证书时使用的版本 1 证书模板的名称。 这是一个特定于 Microsoft 的值。
Thumbprint 证书的指纹。
X.509 版本 证书的 X.509 格式版本。
企业网络内部 用于指明请求是否从公司网络中发出。
密码过期时间 用于显示密码到期时间。
密码到期天数 用于显示距密码到期的天数。
更新密码 URL 用于显示更新密码服务的 Web 地址。
身份验证方法引用 用于指示用户身份验证所用的所有身份验证方法。

使用条件访问控制管理风险

你可以使用提供的设置,通过实施条件访问控制以多种方法来管理风险。

常见方案

例如,想象一下这样一种简单的方案:根据用户的组成员身份数据,对特定应用程序(信赖方信任)实现条件访问控制。 换而言之,你可以在联合服务器上设置一个颁发授权规则,允许属于 AD 域中特定组的用户访问受 AD FS 保护的特定应用程序。 Walkthrough Guide: Manage Risk with Conditional Access Control中介绍了有关实施此方案的详细分步说明(使用 UI 和 Windows PowerShell)。 若要完成本演练中的步骤,需要设置实验室环境并按照为 Windows Server 2012 R2 中的 AD FS 设置实验室环境中的步骤操作。

高级方案

在 Windows Server 2012 R2 中的 AD FS 内实现条件访问控制的其他示例包括:

  • 仅当使用 MFA 验证此用户的标识后才允许访问受 AD FS 保护的应用程序

    可以使用以下代码:

    @RuleTemplate = "Authorization"
    @RuleName = "PermitAccessWithMFA"
    c:[Type == "https://schemas.microsoft.com/claims/authnmethodsreferences", Value =~ "^(?i)https://schemas\.microsoft\.com/claims/multipleauthn$"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");
    
    
  • 仅当访问请求来自已注册到用户且已加入工作区的设备时,才允许访问受 AD FS 保护的应用程序

    可以使用以下代码:

    @RuleTemplate = "Authorization"
    @RuleName = "PermitAccessFromRegisteredWorkplaceJoinedDevice"
    c:[Type == "https://schemas.microsoft.com/2012/01/devicecontext/claims/isregistereduser", Value =~ "^(?i)true$"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");
    
    
  • 仅当访问请求来自已注册到用户且已加入工作区的设备,并且该用户的标识已使用 MFA 进行验证时,才允许访问受 AD FS 保护的应用程序

    可以使用以下代码

    @RuleTemplate = "Authorization"
    @RuleName = "RequireMFAOnRegisteredWorkplaceJoinedDevice"
    c1:[Type == "https://schemas.microsoft.com/claims/authnmethodsreferences", Value =~ "^(?i)http://schemas\.microsoft\.com/claims/multipleauthn$"] &&
    c2:[Type == "https://schemas.microsoft.com/2012/01/devicecontext/claims/isregistereduser", Value =~ "^(?i)true$"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");
    
    
  • 仅当访问请求来自其标识已使用 MFA 进行验证的用户时,才允许对 AD FS 保护的应用程序进行 Extranet 访问。

    可以使用以下代码:

    @RuleTemplate = "Authorization"
    @RuleName = "RequireMFAForExtranetAccess"
    c1:[Type == "https://schemas.microsoft.com/claims/authnmethodsreferences", Value =~ "^(?i)http://schemas\.microsoft\.com/claims/multipleauthn$"] &&
    c2:[Type == "https://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", Value =~ "^(?i)false$"] => issue(Type = "https://schemas.microsoft.com/authorization/claims/permit", Value = "PermitUsersWithClaim");
    
    

另请参阅

演练指南:使用条件访问控制来管理风险为 Windows Server 2012 R2 中的 AD FS 设置实验室环境