设为首页 收藏本站
查看: 1047|回复: 0

[经验分享] 在微服务系统开发部署中使用Azure RBAC自定义角色

[复制链接]

尚未签到

发表于 2017-6-30 19:44:14 | 显示全部楼层 |阅读模式
  Azure的官方文档介绍了如何创建用于Azure基于角色的访问控制的自定义角色(RBAC Role)。 我们也可以根据同样的原理把RBAC细粒度资源管理运用于微服务产品的开发部署中。(https://www.azure.cn/documentation/articles/role-based-access-control-custom-roles/)
  由于快速变化的业务需求,微服务的系统架构设计经常会发生变化,开发团队常常需要增加一个新的微服务,降级一个旧版本的微服务,把一个微服务分隔成2个。。。而在这个敏捷发布过程中,基础架构则相对稳定,变动较少。而当开发需要在云平台快速地开发调试部署新的微服务的时候,运维则非常担心拥有云资源权限的开发会误删网络,NSG之类的基础架构从而影响到测试环境生产环境的稳定性。我们常常可以看到运维团队坚决反对给开发团队开放权限。
  Azure提供的RBAC 自定义角色通过赋予开发所需的最小权限集很好的解决了这个问题。让我们来看一个简单的实例。
  我们的系统将部署在Azure的资源组Meow和MeowNetwork中。 MeowNetwork资源组目前包括一个Vnet,其中有2个子网,microservicesubnet用于部署微服务·,GatewaySubnet则用于一些基础设施,比如和公司onpremises网络的连接,我们还可以在这个资源组里加入子网的NSG。Meow资源组则用于部署应用系统比方虚拟机和存储账号。
DSC0000.jpg

DSC0001.jpg

  接下来的任务就是由开发在子网1里部署微服务了。先来分析一下开发需要/不需要什么样的权限。


  • 开发能够看到和操作整个MeowMeow应用系统的资源,这会帮助他们了解整个系统
  • 开发能够在vnet里添加虚拟机并做监测
  • 只有运维可以改动删除vnet,subnet和gatewaysubnet等基础设施的权限
  我们先分配资源组Meow参与者和资源组MeowNetwork的网络参与者权限给一个“test”用户
DSC0002.jpg

DSC0003.jpg

  用这个用户账号登录azure后,我们试试能不能在Meow资源组里创建一个虚拟机加入虚拟网
DSC0004.jpg

  很好,新的vm加入到子网microservicesubnet.
  我们再看看这个用户能不能改vnet设置,试试看删一下gateway子网
DSC0005.jpg

  删掉了!!!
  显然把资源组MeowNetwork的网络参与者的权限给用户“test”不是一个好主意。我们需要更细粒度的权限集,这就需要我们使用自定义RBAC角色。
  针对我们的需求,最小的权限集应该是所有读取权限加上虚拟机“Virtual Network Subnet -》 其他操作-》Join Virtual Network”的权限
DSC0006.jpg

  参考http://www.cnblogs.com/hengwei/p/5874776.html来定义一个新的 Virtual Network Joiner 的role. 代码如下:



#获取"Reader"配置
$role = Get-AzureRmRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Virtual Network Joiner"
$role.Description = "Join application (vm) to the existing virtual network"
#加入“Join Subnet”的权限
$role.Actions.Add("Microsoft.Network/virtualNetworks/subnets/join/action")
#把Subscription加入到这个Role管理范围中
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/你的subscription id")
#给用户添加角色
New-AzureRmRoleDefinition -Role $role
New-AzureRmRoleAssignment -SignInName 用户的sign in name -Scope /subscriptions/你的subscription id/resourceGroups/MeowNetwork -RoleDefinitionName "Virtual Network Joiner"

  此时用户拥有资源组Meow参与者和资源组MeowNetwork的“Virtual Network Joiner”权限,再测试一下,虚拟机可以创建
DSC0007.jpg

  再看看能不能删子网
DSC0008.jpg

  显然从管理门户上根本看不到删除选项,成功^_^
  题外话: 在测试过程中我们注意到,powershell创建并分配role后权限是立即生效的,但是管理门户上过了半小时左右才显示出这个新创建的role。
  总结:
  随着越来越多的公司开始实施DevOps,对开发团队开放云平台的权限势在必行。
  一个细粒度的资源管理很好地支持并保障了多team合作项目的平稳运行。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-389797-1-1.html 上篇帖子: Azure Active Directory Authentication Libary (ADAL) 下篇帖子: [博客迁移]探索Windows Azure 监控和自动伸缩系列2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表