如何覆盖Azure订阅级角色继承,限制存储账户仅对Group1可见访问?
解决Azure特定存储账户权限继承覆盖问题
要实现仅允许Group1访问testhrweuo1存储账户、阻止Group2和Group3的需求,核心是利用Azure RBAC的**拒绝分配(Deny Assignment)**机制——拒绝分配的优先级高于任何继承的允许角色分配,能直接覆盖订阅级的权限设置,且无需修改原有订阅级配置(避免影响RG内其他资源)。
操作方法
方法一:通过Azure Portal配置
- 登录Azure Portal,定位到目标存储账户
testhrweuo1 - 进入该账户的**访问控制(IAM)**页面
- 切换至拒绝分配标签页,点击添加拒绝分配
- 基本信息:填写拒绝分配名称(例如
Deny-Group2-Group3-Access-to-testhrweuo1),描述按需补充 - 角色选择:根据订阅级给三个组分配的角色(比如「参与者」「读者」),选择对应的角色进行拒绝;若要彻底禁止所有操作,可选择覆盖范围更广的拒绝类角色
- 主体选择:搜索并添加Group2、Group3两个AD组
- 确认配置后保存
方法二:通过Azure CLI配置
- 获取存储账户的资源ID:
storage_id=$(az storage account show --name testhrweuo1 --resource-group <你的资源组名称> --query id -o tsv)
- 获取Group2和Group3的对象ID:
group2_id=$(az ad group show --group Group2 --query id -o tsv) group3_id=$(az ad group show --group Group3 --query id -o tsv)
- 为两个组添加拒绝分配(以拒绝「参与者」角色为例,若订阅级还分配了「读者」,需重复执行对应命令):
# 拒绝Group2的参与者权限 az role assignment create --assignee $group2_id --role "参与者" --scope $storage_id --deny # 拒绝Group3的参与者权限 az role assignment create --assignee $group3_id --role "参与者" --scope $storage_id --deny # 若需拒绝读者权限,追加以下命令 az role assignment create --assignee $group2_id --role "读者" --scope $storage_id --deny az role assignment create --assignee $group3_id --role "读者" --scope $storage_id --deny
验证配置
用Group2或Group3的成员账号登录Azure Portal,尝试访问testhrweuo1存储账户,此时应无法看到该资源或执行任何操作;用Group1成员账号登录则正常访问。
内容的提问来源于stack exchange,提问作者play_something_good
相关产品推荐
相关产品推荐

