You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:45:18