《Windows Azure Platform 系列文章目录

  

  在上面一篇博客中,笔者介绍了如何在RBAC里面,设置默认的Role。

  这里笔者将介绍如何使用自定的Role。

  

  主要内容有:

  一.了解Role中的Action和NotAction

  二.通过PowerShell,查看相应的Action

  三.编辑json Template,自定义Role

  四.设置相应的Role

  五.删除自定义Role

  一.了解Role中的Action和NotAction

  比如SQL DB Contributor这个Role,权限如下

   

  允许的操作是Actions的操作,减去NotActions的操作。这个概念非常非常重要。

  允许的操作是Actions的操作,减去NotActions的操作。这个概念非常非常重要。

  允许的操作是Actions的操作,减去NotActions的操作。这个概念非常非常重要。

  The access granted by a custom role is computed by subtracting the NotActions operations from the Actions operations.

  https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-custom-roles#notactions

  二.通过PowerShell,查看相应的Action

  我们知道在Azure ARM里面有非常多的服务,比如Azure Storage, Azure Virtual Machine, Azure SQL Database等。

  还有非常多的操作,比如Read, Delete, List等等。

  如果需要了解具体每一个服务和相应的操作步骤,我们需要查询相应的操作步骤Action。

  具体命令如下:

#登录Azure China,以Admin身份登录
Add-AzureRmAccount -Environment AzureChinaCloud #选择当前订阅
Select-AzureRmSubscription -SubscriptionName '[订阅名称]' #获得所有对存储Storage的操作
Get-AzureRmProviderOperation Microsoft.Storage/* #获得所有对虚拟机VM的只读操作
Get-AzureRmProviderOperation Microsoft.Compute/*/read

  在输出的内容中,我们可以选择相应的Action。图略。

  三.编辑json Template,自定义Role

  1.通过上面的Get-AzureRmProviderOperation语句,我们就可以查看到具体的操作。

  在编辑json template之前,我们需要查看默认Role的Name和ID,防止自定义的Name和ID与默认的Role冲突。

  具体的命令如下:

#登录Azure China,以Admin身份登录
Add-AzureRmAccount -Environment AzureChinaCloud #选择当前订阅
Select-AzureRmSubscription -SubscriptionName '[订阅名称]' #查看Azure已经存在的Role的Name,Id,IsCustom属性
Get-AzureRmRoleDefinition | Select Name,Id,IsCustom

  执行结果如下图:

  

  2.然后我们就可以编辑json Template,模板如下:

{
//这里是自定义Role的名称,请不要与Azure默认的Name冲突
"Name": "Cannot Delete Storage Account Role",
//这里是Role的ID,请不要与Azure默认的Id冲突
"Id": "11794e3b-eeeb-4e5c-a98b-27cc053a0b35",
//因为是自定义设置,所以Value为true
"IsCustom": true,
//这里是简单的Role的描述
"Description": "Cannot Delete Storage Account Role.",
"Actions": [
//这里是允许的操作
//对Azure Storage进行只读操作
"Microsoft.Storage/*/read",
//查看Role
"Microsoft.Authorization/*/read",
//对Resource Group的只读操作
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"NotActions": [
//请注意,这里不是拒绝的操作。
//用户最终的权限,是Actions,减去NotActions的权限
//The access granted by a custom role is computed by subtracting the NotActions operations from the Actions operations.
//https://docs.microsoft.com/en-us/azure/active-directory/role-based-access-control-custom-roles#notactions ],
"AssignableScopes": [
//修改下面的subscription Id为用户Azure订阅ID
"/subscriptions/11111111-2222-3333-4444-1e2900a4504b"
]
}

  将上面的文件保存为json格式,放在D盘根目录下,路径为D:\cannotdeletestorage.json

  

  4.然后我们执行下面的Azure Powershell,把上面的cannotdeletestorage.json上传到Azure

#登录Azure China,以Admin身份登录
Add-AzureRmAccount -Environment AzureChinaCloud #选择当前订阅
Select-AzureRmSubscription -SubscriptionName '[订阅名称]' #上传本地PC机器上的json template文件
New-AzureRmRoleDefinition -InputFile 'D:\cannotdeletestorage.json'

  执行成功后如下图:

  

  四.设置相应的Role

  1.打开Chrome浏览器,我们以服务管理员身份(Admin),登录Azure ARM Portal: https://portal.azure.cn

  2.创建1个存储账户,还有2个Azure SQL Database资源。如下图:

  可以看到一共有5个资源:

  

  3.点击Azure Active Directory,把readonly账户,设置为自定义Role:Cannot Delete Storage Account Role

  

  

  4.打开IE浏览器,以readonly账户登录Azure ARM Portal: https://portal.azure.cn,查看到的结果如下图:

  可以看到只有1个资源。

  

  这是因为我们在json template里面设置了Action

"Actions": [
     //这里是允许的操作
//对Azure Storage进行只读操作
"Microsoft.Storage/*/read",
//查看Role
"Microsoft.Authorization/*/read",
//对Resource Group的只读操作
"Microsoft.Resources/subscriptions/resourceGroups/read"
],

  对Storage存储账户是只读操作的,对Azure SQL Database不进行任何操作。所以readonly这个账户无法看到Azure SQL Database相应的资源。

  5.因为readonly账户对Storage存储账户是只读操作的,所以无法删除存储账户。结果如下图:

  

  

  五.删除自定义Role

  1.如果用户不希望继续使用自定义Role,可以按照以下步骤操作。

  2.打开Chrome浏览器,我们以服务管理员身份(Admin),登录Azure ARM Portal: https://portal.azure.cn

  把readonly账户删除自定义Role。如下图:

  

  3.在Azure PowerShell里面执行以下命令:

#登录Azure China,以Admin身份登录
Add-AzureRmAccount -Environment AzureChinaCloud #选择当前订阅
Select-AzureRmSubscription -SubscriptionName '[订阅名称]' #可以根据自定义Role的Name进行删除
Remove-AzureRmRoleDefinition -Name 'Cannot Delete Storage Account Role' #或者根据自定义Role的ID,进行删除
Remove-AzureRmRoleDefinition -Id '[RoleID]'

  执行结果:

  最后如果大家有兴趣的话,可以查看下面这个自定义Role所拥有的权限

{
"Name": "Virtual Machine Operator",
"Id": "cadb4a5a-4e7a-47be-84db-05cad13b6769",
"IsCustom": true,
"Description": "Can monitor and restart virtual machines.",
"Actions": [
"Microsoft.Storage/*/read",
"Microsoft.Network/*/read",
"Microsoft.Compute/*/read",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Authorization/*/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Insights/alertRules/*",
"Microsoft.Insights/diagnosticSettings/*",
"Microsoft.Support/*"
],
"NotActions": [ ],
"AssignableScopes": [
"/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e",
"/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624",
"/subscriptions/34370e90-ac4a-4bf9-821f-85eeedeae1a2"
]
}

Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role的更多相关文章

  1. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role

    <Windows Azure Platform 系列文章目录> 今天上午刚刚和客户沟通过,趁热打铁写一篇Blog. 熟悉Microsoft Azure平台的读者都知道,在老的Classic ...

  2. Azure 门户中基于角色的访问控制入门

    面向安全的公司应侧重于向员工提供他们所需的确切权限. 权限过多,可能会向攻击者公开帐户. 权限太少意味着员工无法有效地完成其工作. Azure 基于角色的访问控制 (RBAC) 可通过为 Azure ...

  3. YIi 权限管理和基于角色的访问控制

    验证和授权(Authentication and Authorization) 定义身份类 (Defining Identity Class) 登录和注销(Login and Logout) 访问控制 ...

  4. RBAC (基于角色的访问控制)

    基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注.在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而 ...

  5. RBAC: 基于角色的访问控制(Role-Based Access Control)

    本文只讨论两种基于角色的访问控制的不同点,不涉及权限设计的数据库设计. 基于角色的访问控制(Role-Based Access Control)可分为隐式角色访问控制和显式角色访问控制. 隐式角色访问 ...

  6. 普通程序员看k8s基于角色的访问控制(RBAC)

    一.知识准备 ● 上一节描述了k8s的账户管理,本文描述基于角色的访问控制 ● 网上RBAC的文章非常多,具体概念大神们也解释得很详细,本文没有站在高屋建瓴的角度去描述RBAC,而是站在一个普通程序员 ...

  7. [PHP]基于角色的访问控制RBAC

    ---------------------------------------------------------------------------------------------------- ...

  8. PHP RBAC权限管理 基于角色的访问控制演示

    RBAC rbac:Role Based Access Controll,基于角色的访问控制. 今天理一理RBAC,话不多说,直接切入主题 功能需求: 权限管理(无限极) 角色管理(可以分配权限) 管 ...

  9. 移动服务和 Azure Active Directory 中基于角色的访问控制

    编辑人员注释:本文章由 Matthew Henderson撰写 去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序.此举旨在为企业开 ...

随机推荐

  1. oracle运行速度与效率高的秘密

    使用过Oracle的人都知道,Oracle的运行速度与效率,在同类数据库中是名列前茅的,特别是对大量数据进行访问时,更加有出色的表现.那么,Oracle数据库是靠什么实现的呢?笔者下面将通过一系列的文 ...

  2. 一句话搞定-phpStudy安装yaf扩展

    首先下载phpStudyX64位的,然后傻瓜式安装,安装完下载yaf,由于yaf扩展的网站在国外很难下载,需要FQ,所以我这里下载了yaf5.6nts.zip,解压后把php_yaf.dll这个文件粘 ...

  3. Yii2 报错Getting unknown property: app\models\Product::

    解决方法:查看是否存在 "$a->$abc"的写法,应改成$a->abc

  4. java web开发时的绝对路径与相对路径

    相对路径 不以/开头的路径为相对路径,使用相对路径时的路径为当前访问的文件的父目录,即如果现在访问文件的路径为http://localhost:8080/项目名/目录/文件,那么使用相对路径时路径前缀 ...

  5. What is the difference between Debug and Release in Visual Studio?

    "Debug" and "Release" are actually just two labels for a whole slew of settings ...

  6. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  7. hdu1695 GCD(莫比乌斯入门题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意: 给出n.m.k ,求出1<=x<=n, 1<=y<=m 且gcd ...

  8. 基于linux vim环境python代码自动补全

    (一)简述 在使用vim编写python文件的过程中,默认的vim不会实现代码补全功能,在写程序或者是改程序的时候不是很方面,很容易出错,但是vim提供了各种插件,其中包括这个python文件的自动补 ...

  9. EAGO科技人工智能+澳洲MSPL外汇平台招商

    天下财经 首席运营商 EAGO外汇人工智能简介:我们将历史数据导入算法引擎,加入因子(外汇中使用的各种技术指标及各个国家的货币政策等)让计算机通过二元遗传基因.深度神经网络等算法,由机器自主深度学习. ...

  10. Android检查更新下载安装

    检查更新是任何app都会用到功能,任何一个app都不可能第一个版本就能把所有的需求都能实现,通过不断的挖掘需求迭代才能使app变的越来越好.检查更新自动下载安装分以下几个步骤: 请求服务器判断是否有最 ...