大纲

  • 1 作用
  • 2 初创公司IAM成长记
    • 2.1 根用户(Root User)
    • 2.2 用户(User)
      • 2.2.1 管理员
      • 2.2.2 普通用户
      • 2.2.3 规模膨胀
    • 2.3 用户组(User Group)
    • 2.4 角色(Role)
  • 3 总结
    • 3.1 资源或服务(Resource Or Service)
    • 3.2 策略(Policy)
  • 4 实操
    • 4.1 根用户(Root User)
    • 4.2 策略
      • 4.2.1 全权力(FullAccess)
        • 4.2.1.1 AWS托管的
        • 4.2.1.1 用户管理的
      • 4.2.2 限定权力
    • 4.3 用户(User)
      • 4.3.1 选择访问类型
      • 4.3.2 附加策略
    • 4.4 用户组(User Group)
      • 4.4.1 创建用户组
        • 4.4.1.1 起名
        • 4.4.1.2 附加策略
      • 4.4.2 创建附属于用户组的用户
    • 4.5 角色
      • 4.5.1 创建角色
      • 4.5.2 附加权限
      • 4.5.3 附加角色
  • 作者

1 作用

一言以蔽之,AWS IAM就是为了管理: (不)可以 对什么 做什么

2 初创公司IAM成长记

2.1 根用户(Root User)

初创的软件研发公司“阿拉Software”,只有老王一人。他同时身兼老板和前后端研发工程师。为了管理方便,他只用了一个代码仓库管理了前后两端的代码。而作为根用户,他可以创建或删除代码仓库,但是不能提交代码,因为他还不是用户(User)。

2.2 用户(User)

2.2.1 管理员

老王为了能提交代码,他需要为自己创建一个用户(User)。由于只有他一个人,他就需要对代码仓库有全部权限。

对什么 做什么
老王 对代码仓库 做任何操作

2.2.2 普通用户

随着业务的快速发展,老王已经忙不过来了。于是他招聘了小李负责前端研发,小张负责后端研发。
小李经常会对整个工程进行字符串替换,偶尔会把后端的代码也改掉,造成线上Bug。为了规避这个问题,老王建立了前端代码仓库A,并只让小李提交;建立了后端代码仓库B,只让小张提交。

对什么 做什么
老王 对代码仓库A、B 做任何操作
小李 对代码仓库A 提交代码
小张 对代码仓库B 提交代码

2.2.3 规模膨胀

在感受到代码功能分离带来的安全和稳定性后,老王要求每个独立的产品有各自的代码仓库。这样就不会因为A产品的代码改动,影响到可能同在一个代码仓库中的其他产品。
经过了半年研发,前端多出了C、E和G三个代码仓库;后端多出了D、F和H三个代码仓库。此时权限管理变成了这样:

对什么 做什么
老王 对代码仓库A、B、C、D、E、F、G和H 做任何操作
小李 对代码仓库A、C、E和G 提交代码
小张 对代码仓库B、D、F和H 提交代码

公司的产品在市场上获得热烈的反响,老王准备扩大前后端研发团队以加速产品迭代速度。但是每次配置新人的权限时要非常小心,以避免配错或配漏代码仓库。

对什么 做什么
老王 对代码仓库A、B、C、D、E、F、G和H 做任何操作
小李 对代码仓库A、C、E和G 提交代码
小王 对代码仓库A、C、E和G 提交代码
小赵 对代码仓库A、C、E和G 提交代码
小张 对代码仓库B、D、F和H 提交代码
小钱 对代码仓库B、D、F和H 提交代码
小周 对代码仓库B、D、F和H 提交代码

随着研发工程师数量的增多,老王之前一直未能尝试的产品也有了人力支持。于是老王要开启一个新项目,前端代码仓库是I,后端代码仓库是J。为了让他们都参与这个项目,老王需要对小李等6人权限所管理的资源进行修改。

对什么 做什么
老王 对代码仓库A、B、C、D、E、F、G、H、I和J 做任何操作
小李 对代码仓库A、C、E、G和I 提交代码
小王 对代码仓库A、C、E、G和I 提交代码
小赵 对代码仓库A、C、E、G和I 提交代码
小张 对代码仓库B、D、F、H和J 提交代码
小钱 对代码仓库B、D、F、H和J 提交代码
小周 对代码仓库B、D、F、H和J 提交代码

2.3 用户组(User Group)

上述“规模膨胀” 带来了管理上的烦恼。老王要一直根据公司项目新增和人员增减做大量的权限调整,而且问题的规模随着人员数量的增长而递增。于是老王想到了使用“用户组”来管理员工的权限。

对什么 做什么
老王 对代码仓库A、B、C、D、E、F、G、H、I和J 做任何操作
前端组 对代码仓库A、C、E、G和I 提交代码
后端组 对代码仓库B、D、F、H和J 提交代码
组名 人员1 人员2 人员3
前端组 小李 小王 小赵
后端组 小张 小钱 小周

人员的增减带来的问题复杂度没有降低,但是项目增减带来的权限/资源调整则会规模性降低。
比如此时A和B代码仓库对应的项目已经非常稳定,不会再进行修改了。老王只要把前端组和后端组的权限做一次修改就行了,而不用挨个修改每个人的权限和资源。

对什么 做什么
老王 对代码仓库A、B、C、D、E、F、G、H、I和J 做任何操作
前端组 对代码仓库C、E、G和I 提交代码
后端组 对代码仓库D、F、H和J 提交代码

2.4 角色(Role)

随着人员的增多,代码的质量把控越来越困难。老王此时想引入“线上自动化程序”来进行代码审查。不同于具体的人,“线上自动化程序”是一个抽象的概念。我们使用“角色”来对其进行管理和定义——它是一个代码审查角色。一个资源被赋予某个角色之后,它就会自动携带这个角色的权限,而不需要携带用于身份校验的秘钥对

对什么 做什么
前端代码审查角色 对代码仓库C、E、G和I 进行审查
后端代码审查角色 对代码仓库D、F、H和J 进行审查

3 总结

对照IAM,我们将上述内容拆开看。即“对什么”对应于代码仓库——“资源或服务”;“做什么”对应于操作类型——“策略”。

3.1 资源或服务(Resource Or Service)

在本例中:代码仓库。

3.2 策略(Policy)

在本例中:创建和删除。

不管是角色(Role)、用户(User)还是用户组(User Group),它们都是通过策略(Policy)来表达的。换句话说,我们可以使用一个或者一组策略来描述角色、用户和用户组。于是,定义策略是使用IAM的基础。后续的实操将带大家进行一次IAM配置之旅。

4 实操

沿用上面的例子,我们对各个概念进行配置演示。

4.1 根用户(Root User)

根用户是我们注册AWS时的账户。该账户拥有所有的权力,所以用户名和密码需要保管好,以免泄露造成泄露。故事中老王是根用户的拥有者,但是他不能使用这个账户对AWS Codecommit进行代码提交。他需要在IAM中建立一个对AWS Codecommit拥有无上权力的用户。

4.2 策略

4.2.1 全权力(FullAccess)

我们在AWS IAM Policy页面可以看到策略。

4.2.1.1 AWS托管的

AWS IAM托管了大量其自己管理FullAccess策略,但是都是针对单个服务的。比如上图中圈中的部分。

4.2.1.1 用户管理的

我们可以自己创建同时拥有几个服务的FullAccess策略——Customer managed,比如同时拥有S3和EC2全权力的策略:

4.2.2 限定权力

以故事为例,假设我们在us-east-1区域创建了一个前端代码仓库A(名字是WebA)。那么我们希望前端同学可以对该代码仓库进行操作,但是不允许删除其上的分支,更不允许删除代码仓库。这可以进行下面的配置:


上述配置创建了一个名字叫“WebDenyCodecommitDeleteRespBranch”的用户自定义策略。它对资源使用了通配符*,用于表达该策略对对所有名字以“Web”开始的代码仓库都适用。这样老王后续新建的WebC、WebE等代码仓库都适用于这个策略。

4.3 用户(User)

我们可以在用户页面给小李创建一个用户。

4.3.1 选择访问类型


由于程序员可能会登录到AWS CodeCommit后台(类似于Github)看代码提交情况,我们就勾选下面那个Password选项。关于用户(User)更详细的使用方法,可以见之后的文章。

4.3.2 附加策略


在之前步骤中,我们创建了针对前端代码仓库进行管理的策略WebDenyCodecommitDeleteRespBranch。这一步我们就将该策略附加到用户上。这样XiaoLi这个用户就会被这个策略限制。

4.4 用户组(User Group)

用户组的创建和用户是类似的。我们先到用户组页面。

4.4.1 创建用户组

4.4.1.1 起名

以前端组为例,我们创建一个组叫做WebRD。

4.4.1.2 附加策略

和之前创建XiaoLi这个用户一样,让这个用户组附加策略WebDenyCodecommitDeleteRespBranch。

4.4.2 创建附属于用户组的用户

在用户(User)页面,创建小王对应的用户。
和创建XiaoLi这个用户不同的是,我们在第二步需要选择之前创建的用户组。

4.5 角色

阿拉Software公司的代码审查工具是部署在EC2(虚拟机)上,我们就需要在IAM中新建一个角色——CodeCheckRole。让这些EC2属于这些角色,进而拥有一些权限。

4.5.1 创建角色

4.5.2 附加权限

因为只是举例,没有对权限做严格的限制——直接附加了最大权力的FullAccess策略。

4.5.3 附加角色

在创建EC2实例时,我们在“IAM instance profile”中选择上述创建的角色。

作者

Liang Fang

一文看懂AWS IAM设计和使用相关推荐

  1. AWS攻略——一文看懂AWS IAM设计和使用

    大纲 1 作用 2 初创公司IAM成长记 2.1 根用户(Root User) 2.2 用户(User) 2.2.1 管理员 2.2.2 普通用户 2.2.3 规模膨胀 2.3 用户组(User Gr ...

  2. 判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...

    生成对抗网络 – GANs 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频.我们手机里的照片处理软件中就会使用到它. 本文将详细介绍生成对抗网络 – GANs 的设计初衷.基 ...

  3. 一文看懂RPA的技术原理、产品形态、设计与构建

    一文看懂RPA的技术原理.产品形态.设计与构建 过去的一年,RPA机器人流程自动化行业迎来了一个快速发展的机遇.RPA创业者得到了国内投资人的认可,一些RPA公司也接连拿到千万美金级别的融资,这在当下 ...

  4. 一文看懂“业务定制智能客服”的产品设计_团员分享_@苍狼剑歌

    前言:本文作者是"AI产品经理大本营"团员@苍狼剑歌,现任某一线大厂AI产品经理.另外,文末还有2个"hanniman读者专属福利",1)优惠券 for 三节课 ...

  5. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下

    B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...

  6. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  7. python读取excelsheet-一文看懂用Python读取Excel数据

    原标题:一文看懂用Python读取Excel数据 导读:现有的Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上). Python处理Excel文件主要 ...

  8. 一文看懂深度学习——人工智能系列学习笔记

    深度学习有很好的表现,引领了第三次人工智能的浪潮.目前大部分表现优异的应用都用到了深度学习,大红大紫的 AlphaGo 就使用到了深度学习. 本文将详细的给大家介绍深度学习的基本概念.优缺点和主流的几 ...

  9. 一文看懂:互联网产品分析,该如何做?

    总有同学们在抱怨:"说的是做产品分析,可实际上每天都在埋点,建表,写SQL,对口径,找bug,我分析啥了?到底啥是产品分析?"今天简单分享一下. 所谓产品分析,特指对互联网产品:A ...

最新文章

  1. Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
  2. 卡尔曼滤波算法c语言stm32,卡尔曼滤波算法及C语言实现_源代码
  3. (2)java基础继承
  4. 【学习笔记】系统观核心管理理论
  5. XLNet再次超越BERT,技术发展太快,如何才能跟得上节奏?
  6. 解决faster-rcnn中训练时assert(boxes[:,2]=boxes[:,0]).all()的问题
  7. zabbix监控ntpd服务
  8. 理解工作流系统参考模型
  9. u盘插在linux电脑上没有反应,U盘插在自己电脑上没有反应,别人电脑有反应的解决方法...
  10. Django之model模型
  11. 【Java】《Java面向对象编程的三大特性》阅读笔记
  12. 芯片设计群 ,欢迎 IC领域朋友请加我微信交流:Jdrobots ,加我备注IC。谢谢! 芯片设计资料
  13. java volatile关键字使用
  14. 高等数学总结(无穷级数)
  15. Unknown column 'hghefsdhjd' in 'where clause'
  16. 关于百度云《Sugar BI》数据可视化的使用
  17. 磁盘是随机存储设备,但不是随机存储器(RAM)。为什么?
  18. 为什么会出现双摄像头手机?
  19. 2019最新《炼数成金实战Java高并发程序设计+完整课件》
  20. sendcloud php 群发,laravel5.5 使用sendcloud发送邮件

热门文章

  1. js添加多marker 高德地图_【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物...
  2. 双色球双色球杀号公式,双色球杀号公式汇总
  3. 进程间的通信--无名管道
  4. pdf转excel表格怎么做?这3种方法简单又方便
  5. cisco ap 上线不成功
  6. linux命令查看系统硬件的版本(dmidecode)
  7. 今日头条/抖音小程序开源商城,附带开源项目地址
  8. 计算机,编码,文本阅读器 一
  9. 基于用户id的最优邀请码生成方案
  10. 青菜炒鸡蛋的做法,青菜炒鸡蛋怎么做好吃,青菜炒鸡蛋的家常做法_maggiexdm_好豆网...