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

本文涉及的产品
访问控制,不限时长
简介:

 《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 Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/7569891.html,如需转载请自行联系原作者


相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
目录
相关文章
|
8月前
|
存储 安全 对象存储
oss访问控制(Access Control)
oss访问控制(Access Control)
688 4
ly~
|
4月前
|
消息中间件 搜索推荐 大数据
一般情况下在 RocketMQ 中添加 access key 的步骤: 一、确定配置文件位置 RocketMQ 的配置文件通常位于安装目录下的 conf 文件夹中。你需要找到 broker.conf 或相关的配置文件。 二、编辑配置文件 打开配置文件,查找与 ACL(访问控制列表)相关的配置部分。 在配置文件中添加以下内容:
大数据广泛应用于商业、金融、医疗和政府等多个领域。在商业上,它支持精准营销、客户细分及流失预测,并优化供应链管理;金融领域则利用大数据进行风险评估、市场预测及欺诈检测;医疗行业通过大数据预测疾病、提供个性化治疗;政府运用大数据进行城市规划和公共安全管理;工业领域则借助大数据进行设备维护、故障预测及质量控制。
ly~
221 2
|
5月前
|
安全 数据安全/隐私保护 开发者
|
5月前
|
安全 Linux 数据库
|
5月前
|
监控 数据安全/隐私保护
【Azure 应用服务】App Service"访问控制/流量监控"四问
【Azure 应用服务】App Service"访问控制/流量监控"四问
|
8月前
|
数据库 数据安全/隐私保护
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
在阿里云中,访问控制(Resource Access Management,简称RAM)是权限管理系统,主要用于控制账号在阿里云中
694 3
|
8月前
|
Kubernetes 数据安全/隐私保护 容器
k8s学习-CKA真题-基于角色的访问控制-RBAC
k8s学习-CKA真题-基于角色的访问控制-RBAC
223 0
|
安全 Java 数据安全/隐私保护
Spring Security-内置访问控制方法介绍和角色权限判断
Spring Security-内置访问控制方法介绍和角色权限判断
Spring Security-内置访问控制方法介绍和角色权限判断
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限
访问控制列表(ACL)是网络安全中的一种重要机制,用于定义和管理对网络资源的访问权限。它通过设置一系列规则,控制谁可以访问特定资源、在什么条件下访问以及可以执行哪些操作。ACL 可以应用于路由器、防火墙等设备,分为标准、扩展、基于时间和基于用户等多种类型,广泛用于企业网络和互联网中,以增强安全性和精细管理。
293 7
|
2月前
|
安全 网络安全 数据安全/隐私保护
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。
访问控制列表(ACL)是网络安全管理的重要工具,用于定义和管理网络资源的访问权限。ACL 可应用于路由器、防火墙等设备,通过设定规则控制访问。其类型包括标准、扩展、基于时间和基于用户的ACL,广泛用于企业网络和互联网安全中,以增强安全性、实现精细管理和灵活调整。然而,ACL 也存在管理复杂和可能影响性能的局限性。未来,ACL 将趋向智能化和自动化,与其他安全技术结合,提供更全面的安全保障。
129 4

热门文章

最新文章