如何通过Azure Policy强制启用Azure Active Directory日志记录?
通过Azure Policy强制启用Azure AD日志记录的实现方案
Azure AD的审核日志、登录日志默认自动生成,但默认保留期有限(审核日志90天,登录日志30天)。要满足合规或长期留存需求,需强制将日志导出到Azure存储账户、Log Analytics工作区或事件中心——这正是Azure Policy可以管控的核心点,以下是具体实现步骤:
1. 明确管控目标
Azure Policy无法直接启用日志生成(默认已开启),核心管控点是强制配置日志导出规则,确保日志持续流向指定存储/分析服务,避免手动配置遗漏。
2. 创建自定义Azure Policy定义
Azure没有内置针对Azure AD日志导出的策略,需自定义。以下是针对Log Analytics工作区的示例(可修改模板适配存储账户/事件中心):
策略JSON代码
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.AzureActiveDirectory/directoryAuditLogs" }, { "count": { "field": "Microsoft.AzureActiveDirectory/directoryAuditLogs/logAnalyticsDestination", "where": { "field": "Microsoft.AzureActiveDirectory/directoryAuditLogs/logAnalyticsDestination/workspaceId", "notEquals": "" } }, "equals": 0 } ] }, "then": { "effect": "deployIfNotExists", "details": { "type": "Microsoft.AzureActiveDirectory/directoryAuditLogs", "roleDefinitionIds": [ "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c" ], "existenceCondition": { "count": { "field": "Microsoft.AzureActiveDirectory/directoryAuditLogs/logAnalyticsDestination", "where": { "field": "Microsoft.AzureActiveDirectory/directoryAuditLogs/logAnalyticsDestination/workspaceId", "notEquals": "" } }, "greaterThan": 0 }, "deployment": { "properties": { "mode": "incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceId": { "type": "string" }, "tenantId": { "type": "string" } }, "resources": [ { "apiVersion": "2017-04-01", "name": "auditLogs", "type": "Microsoft.AzureActiveDirectory/directoryAuditLogs", "properties": { "logAnalyticsDestination": { "workspaceId": "[parameters('workspaceId')]", "tenantId": "[parameters('tenantId')]" } } } ] }, "parameters": { "workspaceId": { "value": "/subscriptions/{你的订阅ID}/resourceGroups/{资源组名}/providers/Microsoft.OperationalInsights/workspaces/{工作区名}" }, "tenantId": { "value": "[subscription().tenantId]" } } } } } } }, "parameters": {} }
3. 部署与分配策略
- 登录Azure门户,进入「Policy」服务,点击「定义」→「自定义定义」→「添加」,粘贴上述JSON并替换占位符
- 将策略分配到租户范围(因为Azure AD日志设置是租户级的),确保分配账户拥有全局管理员或策略管理员权限
4. 验证与适配
- 等待30分钟左右的策略评估周期,进入Azure AD的「日志设置」页面,确认审核/登录日志已自动导出到指定目标
- 若需适配存储账户,将模板中的
logAnalyticsDestination替换为storageAccountDestination,并配置存储账户ID和密钥;适配事件中心则替换为eventHubDestination,配置事件中心命名空间ID和名称
关键注意事项
- Azure AD日志导出为租户级配置,策略必须分配到租户或包含租户的管理组
- 部署策略的账户需具备Azure AD全局管理员权限,否则无法修改日志导出设置
- 可针对审核日志、登录日志分别创建策略,或在一个模板中同时配置两种日志的导出
内容的提问来源于stack exchange,提问作者umer.
相关产品推荐
相关产品推荐

