如何通过自动化在Azure AD中批量创建安全组与访问包
AAD 批量自动创建安全组与访问包实现方案
完全可以通过PowerShell配合Microsoft Graph API实现全流程自动化,匹配你通过CSV预定义配置、遵循统一命名规则批量创建资源的需求,不需要手动逐个在控制台操作。
整体流程
- 提前在CSV文件中按固定字段定义所有团队、角色、组、访问包的配置信息
- 自动化脚本读取配置后先做规则校验,确认命名符合规范、必填字段无缺失
- 按依赖顺序先创建对应安全组,拿到组ID后再创建关联的访问包,自动绑定权限、审批规则、有效期等配置
- 执行完成后生成结果日志,标记每个条目的创建状态、失败原因,方便核对排查
落地步骤
1. 制作标准化配置模板
优先用CSV格式存储配置,脚本读取更简单,不需要额外依赖处理Excel的组件。必填字段参考:
- 团队名称、角色名称、安全组描述、访问包所属目录、审批规则、访问有效期
- 安全组、访问包的名称不需要手动填全,脚本会按你定的统一命名规则自动拼接,比如固定前缀
Sec_<团队名>_<角色名>作为安全组名
配置文件示例:
TeamName,RoleName,GroupDescription,AccessPackageCatalog,AccessPolicyType,ExpireDays 研发一部,后端开发,研发一部后端开发资源访问组,研发资源目录,直属经理审批,90 市场部,活动运营,市场部活动运营资源访问组,市场资源目录,部门负责人审批,180
2. 前置权限准备
- 在AAD中注册一个专用应用,或者用有对应权限的管理员账号,分配两个最小必要权限:
Group.Create.All、EntitlementManagement.ReadWrite.All,不要分配多余权限 - 在脚本执行环境安装Microsoft Graph PowerShell模块,提前完成身份认证配置
3. 核心脚本逻辑
核心代码参考,可根据自己的命名规则、审批策略调整:
# 连接Microsoft Graph接口 Connect-MgGraph -Scopes "Group.Create.All","EntitlementManagement.ReadWrite.All" # 读取本地CSV配置 $configItems = Import-Csv -Path "./access_package_batch_config.csv" foreach($item in $configItems){ # 按统一规则拼接安全组名称 $groupDisplayName = "Sec_$($item.TeamName)_$($item.RoleName)" # 先查询组是否已存在,避免重复创建 $existedGroup = Get-MgGroup -Filter "displayName eq '$groupDisplayName'" if(-not $existedGroup){ # 创建安全组 $createdGroup = New-MgGroup -DisplayName $groupDisplayName ` -Description $item.GroupDescription ` -SecurityEnabled:$true ` -MailEnabled:$false ` -MailNickname ($groupDisplayName -replace '\s','') $targetGroupId = $createdGroup.Id }else{ $targetGroupId = $existedGroup.Id } # 后续逻辑补充:查询对应访问包目录ID、创建访问包、将新建安全组绑定为访问包的资源角色、配置审批流程和有效期 # ...... }
4. 无人值守作业配置
- 要实现完全自动化,可以把脚本部署到Azure Automation账号下配置定时触发,每次只需要把更新好的CSV上传到指定的存储位置,任务到点自动执行
- 脚本里加异常捕获逻辑,单条配置创建失败不会中断整个批量任务,所有错误都会记录到日志里
- 每次执行完成后自动导出结果报表,清晰展示每个资源的创建结果
注意:首次运行先拿3-5条测试配置在非生产环境验证,确认命名规则、权限绑定、审批策略都符合预期后,再跑全量生产数据,避免误创建资源。
内容的提问来源于stack exchange,提问作者AskMe
相关产品推荐
相关产品推荐

