使用审核日志排查条件访问策略更改问题

在排查环境中发生条件访问策略更改的原因和方式时,Microsoft Entra 审核日志是非常有价值的信息来源。

审核日志数据默认只会保留 30 天,此期限对于每家组织而言可能不够长。 组织可以通过更改 Microsoft Entra ID 中的诊断设置,将数据存储更长的时间:

  • 将数据发送到 Log Analytics 工作区
  • 将数据存档到存储帐户
  • 将数据流式传输到事件中心
  • 将数据发送到合作伙伴解决方案

在“标识”>“监视和运行状况”>“诊断设置”>“编辑设置”下找到这些选项。 如果你没有诊断设置,请按照创建诊断设置以将平台日志和指标发送到不同的目标一文中的说明创建诊断设置。

使用审核日志

  1. 至少以报告读取者身份登录到 Microsoft Entra 管理中心

  2. 浏览到“标识”>“监视和运行状况”>“审核日志”。

  3. 选择要查询的日期范围。

  4. 在“服务”筛选器中,选择“条件访问”,然后选择“应用”按钮。

    默认情况下,审核日志显示所有活动。 打开“活动”筛选器以缩小活动范围。 有关条件访问的审核日志活动的完整列表,请参阅审核日志活动

  5. 选择一行可查看详细信息。 “修改的属性”选项卡列出了所选审核活动的已修改 JSON 值。

显示条件访问策略的新旧 JSON 值的审核日志条目

使用 Log Analytics

通过 Log Analytics,组织可以使用内置查询或自定义创建的 Kusto 查询来查询数据。有关详细信息,请参阅 Azure Monitor 中的日志查询入门

用于获取条件访问策略更新的 Log Analytics 查询,其中显示了新值和旧值位置

启用后,在“标识”>“监视和运行状况”>“Log Analytics”中找到对 Log Analytics 的访问权限。 条件访问管理员最感兴趣的表是 AuditLogs。

AuditLogs 
| where OperationName == "Update Conditional Access policy"

在“TargetResources”>“modifiedProperties”下可以找到更改 。

读取值

审核日志和 Log Analytics 中的旧值和新值采用 JSON 格式。 比较这两个值即可查看策略的更改。

旧策略示例:

{
    "conditions": {
        "applications": {
            "applicationFilter": null,
            "excludeApplications": [
            ],
            "includeApplications": [
                "797f4846-ba00-4fd7-ba43-dac1f8f63013"
            ],
            "includeAuthenticationContextClassReferences": [
            ],
            "includeUserActions": [
            ]
        },
        "clientAppTypes": [
            "browser",
            "mobileAppsAndDesktopClients"
        ],
        "servicePrincipalRiskLevels": [
        ],
        "signInRiskLevels": [
        ],
        "userRiskLevels": [
        ],
        "users": {
            "excludeGroups": [
                "eedad040-3722-4bcb-bde5-bc7c857f4983"
            ],
            "excludeRoles": [
            ],
            "excludeUsers": [
            ],
            "includeGroups": [
            ],
            "includeRoles": [
            ],
            "includeUsers": [
                "All"
            ]
        }
    },
    "displayName": "Common Policy - Require MFA for Azure management",
    "grantControls": {
        "builtInControls": [
            "mfa"
        ],
        "customAuthenticationFactors": [
        ],
        "operator": "OR",
        "termsOfUse": [
            "a0d3eb5b-6cbe-472b-a960-0baacbd02b51"
        ]
    },
    "id": "334e26e9-9622-4e0a-a424-102ed4b185b3",
    "modifiedDateTime": "2021-08-09T17:52:40.781994+00:00",
    "state": "enabled"
}

已更新的策略示例:

{
    "conditions": {
        "applications": {
            "applicationFilter": null,
            "excludeApplications": [
            ],
            "includeApplications": [
                "797f4846-ba00-4fd7-ba43-dac1f8f63013"
            ],
            "includeAuthenticationContextClassReferences": [
            ],
            "includeUserActions": [
            ]
        },
        "clientAppTypes": [
            "browser",
            "mobileAppsAndDesktopClients"
        ],
        "servicePrincipalRiskLevels": [
        ],
        "signInRiskLevels": [
        ],
        "userRiskLevels": [
        ],
        "users": {
            "excludeGroups": [
                "eedad040-3722-4bcb-bde5-bc7c857f4983"
            ],
            "excludeRoles": [
            ],
            "excludeUsers": [
            ],
            "includeGroups": [
            ],
            "includeRoles": [
            ],
            "includeUsers": [
                "All"
            ]
        }
    },
    "displayName": "Common Policy - Require MFA for Azure management",
    "grantControls": {
        "builtInControls": [
            "mfa"
        ],
        "customAuthenticationFactors": [
        ],
        "operator": "OR",
        "termsOfUse": [
        ]
    },
    "id": "334e26e9-9622-4e0a-a424-102ed4b185b3",
    "modifiedDateTime": "2021-08-09T17:52:54.9739405+00:00",
    "state": "enabled"
}

在前一个示例中,已更新的策略未在权限授予控制机制中包括使用条款。