最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
通过 PowerShell 执行 AD 域账户生命周期审计
时间:2026-07-11 09:15:45 编辑:袖梨 来源:一聚教程网
PowerShell是审计AD域账户生命周期最高效工具,需围绕创建—启用—禁用—删除四阶段设计检查逻辑,结合时间戳、属性变更和组成员关系交叉验证。
powershell 是审计 ad 域账户生命周期最高效、可复用的工具。关键不在于命令多复杂,而在于围绕“创建—启用—禁用—删除”四个阶段设计可落地的检查逻辑,并结合时间戳、属性变更和组成员关系做交叉验证。
查账户创建与首次登录时间
新建账户常被忽略初始安全配置,比如未强制改密、未加入必要安全组。可通过 Get-ADUser 提取 Created 和 LastLogonDate 属性比对:
- 若
Created近期但LastLogonDate为空或远早于创建时间,可能是测试账号未启用,或已失效 - 筛选 7 天内创建但未登录的账户:
Get-ADUser -Filter {Created -ge (Get-Date).AddDays(-7)} -Properties Created,LastLogonDate | Where-Object {$_.LastLogonDate -eq $null} - 注意:
LastLogonDate是近似值(基于复制延迟),如需精确登录记录,应查域控事件日志 ID 4624
识别长期未用但仍启用的账户
启用却半年以上无登录的账户是高风险点,可能被遗忘或滥用。重点看 LastLogonDate 和 Enabled 状态组合:
- 导出所有启用中且最后登录超 180 天的用户:
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate,WhenChanged | Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-180) -and $_.LastLogonDate -ne $null} - 补充检查
WhenChanged:若该时间远晚于LastLogonDate,说明账户属性近期被修改过(如密码重置、OU 移动),需人工确认是否合理 - 排除服务账户:用
ServicePrincipalName属性过滤,避免误判
追踪禁用账户的处置合规性
禁用 ≠ 安全。很多组织禁用后长期搁置,既占 OU 空间又影响策略继承。应关注禁用动作是否附带标准化操作:
- 查禁用时间:
Get-ADUser -Filter {Enabled -eq $false} -Properties Enabled,Modified,Description | Select Name,Modified,Description - 检查
Description或Info字段是否含禁用原因(如“离职-202405”、“试用期结束”),这是审计追溯的关键证据 - 统计禁用超 90 天仍未删除的账户,推动清理流程;可配合
Move-ADObject自动归档到专用 OU(如 “Disabled_Users_Archive”)
验证删除操作是否彻底
AD 中“删除”分软删(移到“已删除对象”容器)和硬删(元数据清除)。审计重点是确保敏感账户不留痕迹:
- 查软删对象(需开启回收站并有权限):
Get-ADObject -SearchBase "CN=Deleted Objects,DC=contoso,DC=com" -LDAPFilter "(objectClass=user)" -IncludeDeletedObjects -Properties whenChanged,IsDeleted - 确认
IsDeleted为True,且whenChanged在预期时间范围内 - 硬删后无法恢复,故生产环境建议统一走软删+保留期策略(如默认保留 180 天),并通过脚本定期清理过期软删项
不复杂但容易忽略:把上述逻辑封装成每日定时任务,输出 CSV 并邮件摘要,比手动跑命令更能守住账户生命周期防线。