基于角色的访问控制(RBAC)是在Azure资源管理器基础上构建的授权系统,针对Azure中的资源提供精细的访问权限管理。RBAC提供了内置角色和可以满足特定需求的自定义角色。在创建自定义角色时,需要为该角色指定一个可分配范围,包括特定的订阅或资源组。当您添加了新的订阅或资源组后,可能希望将该自定义角色的可分配范围扩展至新的订阅或资源组内。如果您尝试在新的订阅下创建配置完全相同的自定义角色,会收到如下报错:
"New-AzureRmRoleDefinition:A role definition cannot be updated with a name that already exists."
这是因为自定义角色信息存储在Azure Active Directory(Azure AD)目录中,即使是同一个Azure AD目录中的不同订阅也不允许出现重名的自定义角色。
当然,您可以使用一个新的自定义角色名称来避免这个报错。为了提供更好的管理体验,是否可以更新已有的自定义角色的可分配范围呢?答案是肯定的。请准备好PowerShell的环境跟我们一起来试试吧。
1.登录到Azure并切换至相应的订阅下(请替换为您的订阅ID):
PowerShell
Login-AzureRmAccount-EnvironmentName AzureChinaCloud
$subscriptionid="00000000-0000-0000-0000-000000000000"
Select-AzureRmSubscription-SubscriptionId$subscriptionid
2.查看相应自定义角色的配置,输出中的AssignableScopes便是当前的可分配范围:
PowerShell
$role=Get-AzureRmRoleDefinition-Name"ROLE_DEFINITION_NAME"
$role
3.在AssignableScopes部分添加更多的订阅ID或资源组,可多次重复此步骤以加入所有需要的订阅ID或资源组:
PowerShell
$role.AssignableScopes.Add("/subscriptions/11111111-1111-1111-1111-111111111111")
4.更新自定义角色配置:
PowerShell
Set-AzureRmRoleDefinition-Role$role
等待至新配置生效后,便可以在新的范围内使用该自定义角色了。
本文内容来自于Microsoft Azure,本站不拥有所有权,不承担相关法律责任。文章内容系作者个人观点,不代表快出海对观点赞同或支持。如有侵权,请联系管理员(hj@kchuhai.com)删除!