使用AZ CLI基于AD组分配指定Azure角色的bash脚本实现方法咨询
基于Azure AD组的批量角色分配Bash脚本实现方案
前置依赖
- 执行环境已安装Azure CLI,版本 >= 2.37.0
- 执行账号已授予所有者或用户访问管理员权限,具备角色分配操作权限
- 已提前确认目标Azure AD组存在、预设角色名称/ID对应正确
完整实现脚本
#!/bin/bash # 自定义配置项,按需修改 AD_GROUP_NAME="目标AD组名称" # 分配作用域:订阅级示例,资源组级可改为/subscriptions/订阅ID/resourceGroups/资源组名称 TARGET_SCOPE="/subscriptions/你的目标订阅ID" # 预设角色集合,可按实际需求增减条目 ROLE_LIST=( "Virtual Machine Contributor" "Storage Blob Data Contributor" "Reader" ) # 1. 获取AD组对象ID GROUP_ID=$(az ad group show --group "$AD_GROUP_NAME" --query id -o tsv) if [ -z "$GROUP_ID" ]; then echo "错误:未找到名称为 $AD_GROUP_NAME 的Azure AD组" exit 1 fi echo "已定位目标AD组,对象ID:$GROUP_ID" # 2. 遍历角色列表完成分配 for ROLE in "${ROLE_LIST[@]}" do echo "正在处理角色分配:$ROLE" # 执行分配逻辑,已存在的分配会自动跳过不报错 az role assignment create \ --assignee-object-id "$GROUP_ID" \ --assignee-principal-type "Group" \ --role "$ROLE" \ --scope "$TARGET_SCOPE" \ --only-show-errors if [ $? -eq 0 ]; then echo "角色 $ROLE 分配成功/已存在" else echo "警告:角色 $ROLE 分配失败,请检查角色名称、权限配置是否正确" fi done echo "全量角色分配任务执行完成"
使用注意事项
- 脚本执行前先运行
az login完成Azure账号认证,自动化场景可使用服务主体实现非交互登录 - 自定义角色建议替换为角色唯一ID,避免重名冲突
- 如需清理多余分配,可调用
az role assignment delete命令对应调整逻辑
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

