简要说明:

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

Azure自定义角色实现RBAC的更多相关文章

  1. 在微服务系统开发部署中使用Azure RBAC自定义角色

    Azure的官方文档介绍了如何创建用于Azure基于角色的访问控制的自定义角色(RBAC Role). 我们也可以根据同样的原理把RBAC细粒度资源管理运用于微服务产品的开发部署中.(https:// ...

  2. Sitecore安全性第1部分:自定义角色和权限

    安全性是任何Sitecore构建的重要组成部分.它可确保您的内容作者具有适当级别的访问权限,以管理他们拥有的内容,并授予他们访问不同Sitecore功能的权限. Sitecore附带了许多提供功能访问 ...

  3. Azure基于角色的用户接入控制(RBAC)

    RBAC是Role Based Access Control是基于角色的接入控制的简称.在Azure推出ARM以后,对Azure各种资源的管理粒度已经非常细致,使得RBAC成为可能. 通过RBAC可以 ...

  4. Shiro 自定义角色 认证

    转载,原博文的地址在:https://ailongni.iteye.com/blog/2086022 由于Shiro filterChainDefinitions中 roles默认是and,/** = ...

  5. Openshift 用户,角色和RBAC

    OCP中的权限管理沿用的Kubernetes RBAC机制,授权模式主要取决于下面几个因数 Rules 针对主要对象的操作权限,比如建立Pod Sets of permitted verbs on a ...

  6. ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口

    目录 ① 存储角色/用户所能访问的 API ② 实现 IAuthorizationRequirement 接口 ③ 实现 TokenValidationParameters ④ 生成 Token ⑤ ...

  7. 基于角色访问控制RBAC权限模型的动态资源访问权限管理实现

    RBAC权限模型(Role-Based Access Control) 前面主要介绍了元数据管理和业务数据的处理,通常一个系统都会有多个用户,不同用户具有不同的权限,本文主要介绍基于RBAC动态权限管 ...

  8. Kubernetes角色访问控制RBAC和权限规则(Role+ClusterRole)

    文章转载自:https://blog.csdn.net/BigData_Mining/article/details/88849696 基于角色的访问控制(Role-Based Access Cont ...

  9. 【Azure 环境】由为存储账号(Storage Account)拒绝分配权限而引出的Azure 蓝图(Blueprint)使用问题

    问题描述 当打开Azure存储账号(Storage Account)门户页面时,从 "访问控制(标识和访问管理)" 页面中发现有"拒绝分配"的功能,所以就思考, ...

随机推荐

  1. 【POJ2151】Check the difficulty of problems

    题意 某场比赛有M道问题,T支队伍,和数字N给出每支队伍解决每道问题的概率. 问这场比赛满足下面两个条件的概率 1.每支队伍至少做出一道题 2.冠军队至少做出N道题. 分析 条件2是不是可以转化为 至 ...

  2. nginx源码完全注释(1)ngx_alloc.h / ngx_alloc.c

    首先看 ngx_alloc.h 文件,主要声明或宏定义了 ngx_alloc,ngx_calloc,ngx_memalign,ngx_free. /* * Copyright (C) Igor Sys ...

  3. code1796 社交网络

    输入描述 Input Description 输入文件中第一行有两个整数,n 和 m,表示社交网络中结点和无向边的数 目.在无向图中,我们将所有结点从 1 到 n 进行编号. 接下来 m 行,每行用三 ...

  4. Java基本类型学习

    基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型.它们是我们编程中使用最频繁的类型.java是一种强类型语言,第一次申明变量必须说明数据类型,第一次变量赋值称为变量的初始化. 1. Java ...

  5. Exception (2) Java Exception Handling

    The Java programming language uses exceptions to handle errors and other exceptional events.An excep ...

  6. O_DIRECT方式读取文件示例

    #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <sys/stat.h& ...

  7. ENVI 图像特征提取

  8. 编写高质量代码改善C#程序的157个建议——建议93:构造方法应初始化主要属性和字段

    建议93:构造方法应初始化主要属性和字段 类型的属性应该在构造方法调用完毕前完成初始化工作.如果字段没有在初始化器中设置初始值,那么它就应该在构造方法中初始化. 类型一旦被实例化,那么它就应该被视为具 ...

  9. Canvas vs. SVG[转]

    Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的. SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个 ...

  10. cortex m0启动代码详解

    转自:http://www.cnblogs.com/mddblog/p/4920063.html 阅读目录 概述 1.堆栈空间定义 2.存放中断向量表 3. 复位中断函数(Reset_Handler) ...