简要说明:
当前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,成功