Azure自定义角色实现RBAC
阅读原文时间:2023年07月15日阅读:1

简要说明:

当前Azure Portal上只能针对订阅或具体某一资源,实现访问控制,也就是对某一具体资源实现访问/使用/删除,但无法实现创建。例如:当前的需求为,新添加用户只具有对CDN服务的管理使用(包括创建/访问/使用/删除),无法对除CDN外的资源进行管理使用。使用当前Portal的设置,已经无法实现该需求,需要使用自定义角色实现该需求,详细操作过程见下

准备条件:

AzureSubscriptionID:1ce573c5-2d64-493b-87cc-******

已创建的一个资源组:hlmltsrgn1

在AAD下新添加一个用户:hlmlts@******.onmschina.cn

详情操作:

1.在AAD下新建一个用户,hlmlts@******.onmschina.cn

2.新建一个资源组,hlmltsrgn1

3.获取已有角色,发现没有CDN管理相关的角色

4.使用Azure Powershell,登陆ARM模式,命令:Add-AzureRmAccount -EnvironmentName AzureChinaCloud,设置指定的订阅为即将操作的订阅,命令:Select-AzureRmSubscription -SubscriptionId "******"

5.使用如下Azure Powershell命令创建"CDN Contributor","$subscriptionid"及"$resourceGroupsName"参数需要根据自己的环境进行替换

$subscriptionid = "1ce573c5-2d64-493b-87cc-******"
$resourceGroupsName = "hlmltsrgn1"
$role = Get-AzureRmRoleDefinition -Name "Contributor"
$role.Id = $null
$role.Name = "CDN Contributor"
$role.Description = "Let you view and configure CDN resources only"
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/"+$subscriptionid+"/resourceGroups/"+$resourceGroupsName)
$role.NotActions.Clear()
$role.NotActions.Add("Microsoft.ApiManagement/*")
$role.NotActions.Add("Microsoft.AnalysisServices/*")
$role.NotActions.Add("Microsoft.Authorization/*/Delete")
$role.NotActions.Add("Microsoft.Authorization/*/Write")
$role.NotActions.Add("Microsoft.Authorization/elevateAccess/Action")
$role.NotActions.Add("Microsoft.Automation/*")
$role.NotActions.Add("Microsoft.AzureStack/*")
$role.NotActions.Add("Microsoft.Batch/*")
$role.NotActions.Add("Microsoft.Cache/*")
$role.NotActions.Add("Microsoft.ClassicInfrastructureMigrate/*")
$role.NotActions.Add("Microsoft.ClassicNetwork/*")
$role.NotActions.Add("Microsoft.ClassicCompute/*")
$role.NotActions.Add("Microsoft.ClassicStorage/*")
$role.NotActions.Add("Microsoft.ClassicSubscription/*")
$role.NotActions.Add("Microsoft.CognitiveServices/*")
$role.NotActions.Add("Microsoft.Compute/*")
$role.NotActions.Add("Microsoft.Devices/*")
$role.NotActions.Add("Microsoft.DocumentDB/*")
$role.NotActions.Add("Microsoft.EventHub/*")
$role.NotActions.Add("Microsoft.Features/*")
$role.NotActions.Add("Microsoft.HDInsight/*")
$role.NotActions.Add("Microsoft.ImportExport/*")
$role.NotActions.Add("Microsoft.Insights/*")
$role.NotActions.Add("Microsoft.KeyVault/*")
$role.NotActions.Add("Microsoft.Media/*")
$role.NotActions.Add("Microsoft.Network/*")
$role.NotActions.Add("Microsoft.NotificationHubs/*")
$role.NotActions.Add("Microsoft.PowerBI/*")
$role.NotActions.Add("Microsoft.RecoveryServices/*")
$role.NotActions.Add("Microsoft.Relay/*")
$role.NotActions.Add("Microsoft.Resources/subscriptions/resourceGroups/delete")
$role.NotActions.Add("Microsoft.Scheduler/*")
$role.NotActions.Add("Microsoft.ServiceBus/*")
$role.NotActions.Add("Microsoft.ServiceFabric/*")
$role.NotActions.Add("Microsoft.Sql/*")
$role.NotActions.Add("Microsoft.Storage/*")
$role.NotActions.Add("Microsoft.StreamAnalytics/*")
$role.NotActions.Add("Microsoft.Web/*")
New-AzureRmRoleDefinition -Role $role

6.运行以上Azure Powershell命令后,角色下多出了"CDN Contributor"

7.针对已建资源组设置新添加用户为“CDN Contributor”角色

8.使用新用户登陆Portal,进行测试验证

a.只能看到之前指定的资源组“hlmltsrgn1”,尝试创建资源组,失败

b.尝试在已有资源组下创建虚拟机,失败

c.尝试在已有资源组下创建存储账号,失败

d.尝试在已有资源组下创建虚拟机网络,失败

e.尝试在已有资源组下创建CDN Profiles,成功

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章