如何监控Active Directory App Registration的Secret过期情况?
Azure AD应用注册密钥过期监控方案
内置监控方案(零开发成本)
- 直接使用Azure Monitor针对租户的Activity Log配置告警规则,覆盖所有应用注册的密钥即将到期、已过期事件,可自定义提前告警周期,常见配置为提前30天、15天、7天三级告警
- 告警通知可对接邮件、企业IM、运维告警平台、自动化脚本触发等渠道,无需额外部署服务即可覆盖全租户的密钥到期监控需求
自定义巡检方案(灵活适配运维流程)
可通过Microsoft Graph PowerShell模块批量拉取所有应用注册的密钥到期信息,按需筛选即将到期的密钥,示例代码如下:
# 首次运行需安装依赖模块 Install-Module Microsoft.Graph.Applications -Force # 连接Graph API,授予应用读权限 Connect-MgGraph -Scopes "Application.Read.All" # 拉取所有应用注册,筛选30天内到期的密钥 Get-MgApplication -All | ForEach-Object { $currentApp = $_ $_.PasswordCredentials | Where-Object { $_.EndDateTime -lt (Get-Date).AddDays(30) } | Select-Object ` @{Name="应用名称";Expression={$currentApp.DisplayName}}, @{Name="应用ID";Expression={$currentApp.AppId}}, @{Name="密钥ID";Expression={$_.KeyId}}, @{Name="到期时间";Expression={$_.EndDateTime.ToString("yyyy-MM-dd")}}, @{Name="剩余有效天数";Expression={($_.EndDateTime - (Get-Date)).Days}} } | Format-Table -AutoSize
- 可将上述脚本配置为Azure自动化 runbook 或者本地定时任务,每日巡检后将到期密钥清单发送给对应应用负责人,同步触发密钥轮换流程
- 支持自定义筛选规则,可针对高优先级应用单独配置更提前的告警周期
企业级管控优化建议
- 租户层面配置应用注册策略,强制所有密钥的最大有效期不超过2年,避免存在长期未轮换的高风险密钥
- 将应用注册信息和内部CMDB绑定,关联应用负责人信息,到期时自动生成运维工单推进密钥轮换,避免出现无人跟进的情况
注意事项
巡检使用的高权限账号优先采用托管身份、密钥 vault 存储凭据的方式认证,禁止硬编码凭据到脚本或配置文件中
新密钥上线验证通过后请及时删除过期旧密钥,避免遗留无效凭据引发安全风险
内容的提问来源于stack exchange,提问作者David GROSPELIER
相关产品推荐
相关产品推荐

