条件访问:设备筛选器

管理员创建条件访问策略时,经常需要将其环境中的特定设备指定为目标或者排除这些设备。 利用设备的条件筛选器,管理员能够将特定设备指定为目标。 管理员可以在条件访问策略中使用设备筛选器支持的运算符和属性和其他可用分配条件。

在条件访问策略条件中创建设备筛选器

常见方案

现在,组织可以使用设备筛选器条件实现多种方案。 以下方案提供了有关如何使用此新条件的示例。

  • 限制对特权资源的访问。 在此示例中,假设你想允许以下用户访问 Azure 服务管理 API:
    • 已获得特权角色
    • 已完成多重身份验证。
    • 位于特权或安全管理工作站的设备上并被证明合规。
    • 对于此方案,组织需创建两个条件访问策略:
      • 策略 1:具有管理员角色的所有用户都可以访问 Windows Azure 服务管理 API 云应用,并将“访问控制”设为“授予访问权限”,但要求进行多重身份验证,并要求将设备标记为合规。
      • 策略 2:具有管理员角色的所有用户都可以访问 Windows Azure 服务管理 API 云应用(但不包括使用规则表达式“device.extensionAttribute1 equals SAW”筛选出的设备),并将“访问控制”设为“阻止”。 了解如何更新 Microsoft Entra 设备对象上的 extensionAttributes
  • 阻止通过运行不受支持的操作系统的设备访问组织资源。 对于此示例,假设你想要阻止通过早于 Windows 10 的 Windows OS 版本访问资源。 对于此方案,组织需创建以下条件访问策略:
    • 所有用户,访问所有资源,排除使用规则表达式“device.operatingSystem equals Windows and device.operatingSystemVersion startsWith "10.0"”的设备筛选器,访问控制为“阻止”。
  • 不要求对特定设备上的特定帐户执行多重身份验证。 对于此示例,假设你想要在 Teams 电话或 Surface Hub 设备等特定设备上使用服务帐户时,不要求执行多重身份验证。 对于此方案,组织需创建以下两个条件访问策略:
    • 策略 1:除服务帐户以外的所有用户,访问所有资源,访问控制为“授予访问权限”,但需要执行多重身份验证。
    • 策略 2:选择用户和组,包括仅包含服务帐户的组,访问所有资源,排除使用规则表达式“device.extensionAttribute2 not equals TeamsPhoneDevice”的设备筛选器,访问控制为“阻止”。

注意

Microsoft Entra ID 使用设备身份验证来评估设备筛选器规则。 对于使用 Microsoft Entra ID 注销的设备,所有设备属性都会被视为 null 值,并且无法确定设备属性,因为设备不存在于目录中。 若要以未注册设备的策略为目标,最佳方法是使用负运算符,因为配置的筛选器规则将适用。 如果要使用正运算符,则筛选器规则仅在目录中存在设备且配置的规则与设备上的属性匹配时才适用。

创建条件访问策略

创建条件访问策略时,设备筛选器是可选控件。

以下步骤可帮助你创建两个条件访问策略,以支持常见方案中所述的第一种方案。

策略 1:具有管理员角色的所有用户都可以访问 Windows Azure 服务管理 API 云应用,并将“访问控制”设为“授予访问权限”,但要求进行多重身份验证,并要求将设备标记为合规。

  1. 最低以条件访问管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“保护”>“条件访问”>“策略”。
  3. 选择“新策略”
  4. 为策略指定名称。 建议组织为其策略的名称创建有意义的标准。
  5. 在“分配”下,选择“用户或工作负载标识” 。
    1. 在“包括”下,选择“目录角色”,然后选择名称中包含管理员字样的所有角色

      警告

      条件访问策略支持内置角色。 不会为其他角色类型(包括管理单元范围自定义角色)强制实施条件访问策略。

    2. 在“排除”下选择“用户和组”,然后选择组织的紧急访问帐户或不受限帐户。

    3. 选择“完成”。

  6. 在“目标资源”>“资源(旧称云应用)”>“包括”>“选择资源”下,选择“Azure 服务管理 API”,然后选择“选择”。
  7. 在“访问控制”>“授予”下,依次选择“授予访问权限”、“需要多重身份验证”、“要求设备标记为合规”、“选择”。
  8. 确认设置,然后将“启用策略”设置为“打开”。
  9. 选择“创建” ,以便创建启用策略所需的项目。

策略 2:具有管理员角色的所有用户都可以访问 Windows Azure 服务管理 API 云应用(但不包括使用规则表达式“device.extensionAttribute1 equals SAW”筛选出的设备),并将“访问控制”设为“阻止”。

  1. 选择“新策略”
  2. 为策略指定名称。 建议组织为其策略的名称创建有意义的标准。
  3. 在“分配”下,选择“用户或工作负载标识” 。
    1. 在“包括”下,选择“目录角色”,然后选择名称中包含管理员字样的所有角色

      警告

      条件访问策略支持内置角色。 不会为其他角色类型(包括管理单元范围自定义角色)强制实施条件访问策略。

    2. 在“排除”下选择“用户和组”,然后选择组织的紧急访问帐户或不受限帐户。

    3. 选择“完成”。

  4. 在“目标资源”>“资源(旧称云应用)”>“包括”>“选择资源”下,选择“Azure 服务管理 API”,然后选择“选择”。
  5. 在“条件”下,选择“设备筛选器 。
    1. 将“配置”切换为“是” 。
    2. 将“与规则匹配的设备”设置为“从策略中排除筛选的设备” 。
    3. 将属性设置为 ExtensionAttribute1,将运算符设置为 Equals,将值设置为 SAW
    4. 选择“完成”。
  6. 在“访问控制”>“授权”下,选择“阻止访问”,然后选择“选择”。
  7. 确认设置,然后将“启用策略”设置为“打开”。
  8. 选择“创建” ,以便创建启用策略所需的项目。

警告

要求使用合规设备的策略在策略评估过程中可能会提示用户在 Mac、iOS 和 Android 上选择设备证书,即使未强制执行设备合规性也是这样。 在使设备符合要求之前,这些提示可能会重复出现。

设置属性值

可以通过 Microsoft Graph API 设置扩展属性。 有关设置设备属性的详细信息,请参阅更新设备一文。

设备筛选器 Graph API

设备筛选器 API 在 Microsoft Graph v1.0 终结点中提供,可以使用终结点 https://graph.microsoft.com/v1.0/identity/conditionalaccess/policies/ 访问它。 可以在创建新的条件访问策略时配置设备筛选器,也可以更新现有策略以配置设备筛选器条件。 若要更新现有策略,可以通过追加现有策略的策略 ID 并执行以下请求正文,针对 Microsoft Graph v1.0 终结点执行 patch 调用。 此处的示例演示如何配置设备筛选器条件,其中排除了未标记为 SAW 设备的设备。 规则语法可以包含多个单一表达式。 要详细了解语法,请参阅 Microsoft Entra ID 中组的动态成员资格组规则

{
    "conditions": {
        "devices": {
            "deviceFilter": {
                "mode": "exclude",
                "rule": "device.extensionAttribute1 -ne \"SAW\""
            }
        }
    }
}

筛选器支持的运算符和设备属性

以下设备特性可用于条件访问中的设备筛选器条件。

注意

Microsoft Entra ID 使用设备身份验证来评估设备筛选器规则。 对于使用 Microsoft Entra ID 注销的设备,所有设备属性都会被视为 null 值,并且无法确定设备属性,因为设备不存在于目录中。 若要以未注册设备的策略为目标,最佳方法是使用负运算符,因为配置的筛选器规则将适用。 如果要使用正运算符,则筛选器规则仅在目录中存在设备且配置的规则与设备上的属性匹配时才适用。

支持的设备特性 支持的运算符 支持的值 示例
deviceId Equals、NotEquals、In、NotIn GUID 形式的有效 deviceId (device.deviceid -eq "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb")
displayName Equals、NotEquals、StartsWith、NotStartsWith、EndsWith、NotEndsWith、Contains、NotContains、In、NotIn 任意字符串 (device.displayName -contains "ABC")
deviceOwnership Equals、NotEquals 对于自带设备,支持的值是“Personal”;对于公司拥有的设备,支持的值是“Company” (device.deviceOwnership -eq "Company")
isCompliant Equals、NotEquals 对于合规设备,支持的值是“True”,对于不合规设备,支持的值是“False” (device.isCompliant -eq "True")
制造商 Equals、NotEquals、StartsWith、NotStartsWith、EndsWith、NotEndsWith、Contains、NotContains、In、NotIn 任意字符串 (device.manufacturer -startsWith "Microsoft")
mdmAppId Equals、NotEquals、In、NotIn 有效的 MDM 应用程序 ID (device.mdmAppId -in ["00001111-aaaa-2222-bbbb-3333cccc4444"])
模型 Equals、NotEquals、StartsWith、NotStartsWith、EndsWith、NotEndsWith、Contains、NotContains、In、NotIn 任意字符串 (device.model -notContains "Surface")
operatingSystem Equals、NotEquals、StartsWith、NotStartsWith、EndsWith、NotEndsWith、Contains、NotContains、In、NotIn 有效的操作系统(如 Windows、iOS 或 Android) (device.operatingSystem -eq "Windows")
operatingSystemVersion Equals、NotEquals、StartsWith、NotStartsWith、EndsWith、NotEndsWith、Contains、NotContains、In、NotIn 有效的操作系统版本(如 6.1 表示 Windows 7、6.2 表示 Windows 8,或 10.0 表示 Windows 10 和 Windows 11) (device.operatingSystemVersion -in ["10.0.18363", "10.0.19041", "10.0.19042", "10.0.22000"])
physicalIds Contains、NotContains 例如,所有 Windows Autopilot 设备都在设备 physicalIds 属性中存储 ZTDId(分配给所有导入的 Windows Autopilot 设备的唯一值)。 (device.physicalIds -contains "[ZTDId]:value")
profileType Equals、NotEquals 为设备设置的有效配置文件类型。 支持的值为:RegisteredDevice(默认值)、SecureVM(用于 Azure 中已启用 Microsoft Entra 登录的 Windows VM)、Printer(用于打印机)、Shared(用于共享设备)、IoT(用于 IoT 设备) (device.profileType -eq "Printer")
systemLabels Contains、NotContains 由系统应用于设备的标签的列表。 一些受支持的值为:AzureResource(用于 Azure 中已启用 Microsoft Entra 登录的 Windows VM)、M365Managed(用于通过 Microsoft 托管桌面管理的设备)、MultiUser(用于共享设备) (device.systemLabels - 包含“M365Managed”)
trustType Equals、NotEquals 设备的有效注册状态。 支持的值为:AzureAD(用于已加入 Microsoft Entra 的设备)、ServerAD(用于已加入 Microsoft Entra 混合的设备)、Workplace(用于已注册到 Microsoft Entra 的设备) (device.trustType -eq "ServerAD")
extensionAttribute1-15 Equals、NotEquals、StartsWith、NotStartsWith、EndsWith、NotEndsWith、Contains、NotContains、In、NotIn extensionAttribute1-15 是可供客户用于设备对象的特性。 客户可以使用自定义值更新 extensionAttribute1 到 extensionAttribute15 中的任何一个特性,并在条件访问中的设备筛选器条件内使用这些特性。 可以使用任何字符串值。 (device.extensionAttribute1 -eq "SAW")

注意

生成复杂规则或将过多的单个标识符(如 deviceid)用于设备标识时,请记住“筛选规则的最大长度为 3072 个字符”。

注意

ContainsNotContains 运算符的工作方式因属性类型而异。 对于 operatingSystemmodel 等字符串属性,Contains 运算符指示指定的子字符串是否出现在属性中。 对于 physicalIdssystemLabels 等字符串集合属性,Contains 运算符指示指定的字符串是否与集合中的某个整个字符串匹配。

警告

设备必须是 Microsoft Intune 托管、合规或 Microsoft Entra 混合联接的,然后在条件访问策略评估时,extensionAttributes1-15 中才会提供值。

设备筛选器的策略行为

条件访问中的设备筛选器条件根据 Microsoft Entra ID 中已注册设备的设备特性来评估策略,因此,知道在哪些场合下应用或不应用策略非常重要。 下表说明了配置设备筛选器条件时的行为。

设备筛选器条件 设备注册状态 已应用设备筛选器
使用正运算符(Equals、StartsWith、EndsWith、Contains、In)和任何特性的包含/排除模式 已取消注册设备
使用正运算符(Equals、StartsWith、EndsWith、Contains、In)和除 extensionAttribute1-15 以外的特性的包含/排除模式 已注册设备 是,如果满足条件
使用正运算符(Equals、StartsWith、EndsWith、Contains、In)和包括 extensionAttribute1-15 在内的特性的包含/排除模式 由 Intune 管理的已注册设备 是,如果满足条件
使用正运算符(Equals、StartsWith、EndsWith、Contains、In)和包括 extensionAttribute1-15 在内的特性的包含/排除模式 不由 Intune 管理的已注册设备 是,如果满足条件。 使用 extensionAttributes1-15 时,如果设备合规或已加入 Microsoft Entra 混合,则该策略适用
使用负运算符(NotEquals、NotStartsWith、NotEndsWith、NotContains、NotIn)和任何特性的包含/排除模式 已取消注册设备
使用负运算符(NotEquals、NotStartsWith、NotEndsWith、NotContains、NotIn)和除 extensionAttribute1-15 以外的任何特性的包含/排除模式 已注册设备 是,如果满足条件
使用负运算符(NotEquals、NotStartsWith、NotEndsWith、NotContains、NotIn)和包括 extensionAttribute1-15 在内的任何特性的包含/排除模式 由 Intune 管理的已注册设备 是,如果满足条件
使用负运算符(NotEquals、NotStartsWith、NotEndsWith、NotContains、NotIn)和包括 extensionAttribute1-15 在内的任何特性的包含/排除模式 不由 Intune 管理的已注册设备 是,如果满足条件。 使用 extensionAttributes1-15 时,如果设备合规或已加入 Microsoft Entra 混合,则该策略适用