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

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

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

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

Entra ID>监控和健康>诊断设置>编辑设置下查找这些选项。 如果没有诊断设置,请按照“创建诊断设置”一文中的说明将 平台日志和指标发送到不同的目标 以创建一个。

使用审核日志

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

  2. 浏览到 Entra ID>监视和运行状况>审核日志

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

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

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

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

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

使用 Log Analytics

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

Log Analytics 查询有关条件访问策略更新,显示新旧值的位置

启用后,在Entra ID>监视和运行状况>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"
}

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