zoukankan      html  css  js  c++  java
  • Azure自定义角色实现RBAC

    简要说明:

    当前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,成功

     

  • 相关阅读:
    装饰者模式
    代理模式
    享元模式
    模板模式
    命令模式
    建造者模式
    单例模式
    观察者模式
    迭代器模式
    访问者模式
  • 原文地址:https://www.cnblogs.com/stonehe/p/8581479.html
Copyright © 2011-2022 走看看