Day 24 权限宝石:IAM 权限管理 架构解析

https://ithelp.ithome.com.tw/upload/images/20210929/20100951afkBYYXe9Z.jpg

今天我们要来介绍 AWS IAM 的架构概念,那我们开始吧!

AWS IAM 架构介绍

IAM 里面有个重要元件叫做 Policy,是用来规范某人使用 AWS 资源的权限,而在 Policy 之下有两个类别,分别为 Identity-based policy 与 Resouce-based policy,如下图:
https://ithelp.ithome.com.tw/upload/images/20210913/201009512yQKVQ9Yoq.png

Identity-based policy 介绍

每一个 Identity-based policy 中有多个 Statement ,这边用 * 符号代表多个(图#1),而每一个 Statement 只会归属於一个 Policy (图#2),而 Statement 就是更细部去定义如何去使用特定的 AWS 服务,Statement 之中有三大要素:

  1. Effect,这次要开放/阻挡权限。
  2. Action,允许某个服务做什麽动作,譬如说到 S3 Bucket 新增档案等。
  3. Resource,指名这次的 Statement 要去针对哪一个 AWS Resource,所以每一个 Resource 都会去连接到某一个 AWS Service,譬如说指定某一个 S3 Bucket,或者针对某一台 RDS Instance 等。如下图:

https://ithelp.ithome.com.tw/upload/images/20210913/20100951xuwL0cDdxB.png

Identity-based policy 要套用给谁呢?

在 IAM 中有一个叫 User 的东西,也就是常见的登录帐号,每一个 Policy 可以被多个 User 使用,而每一个 User 也可以拥有多个 Policy (下图中的 * 符号代表多个)。

除了 User 以外,IAM 还提供给我们 Group,每一个 Group 可以涵盖多个 User,每一个 User 可以同时存在於多个 Group 中。

而 Group 与 Policy 之间的关系也一样,一个 Policy 可以被多个 Group 使用,Group 也可以同时套用多个 Policy。如下图:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951LbYmpUWgYL.png

Role 介绍

除了 User 与 Group 之外,IAM 还提供给我们 Role 作使用,一个 Policy 可以同时给多个 Role 使用,一个 Role 也可以套用多个 Policy。

Role 主要目的,就是让「不是登录帐号」的其他东西(譬如说不是Group/User),来使用 AWS 的 Service (例如 EC2 Instance),透过这个方式就可以将 AWS Service 连接到 IAM 服务之中。举例,当我创造一个 EC2 Instance 时同时创建一个 Role,让他可以去连接到 S3 Bucket 的权限。如下图:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951qxf4geqVg9.png

Resource-based policy 介绍

与 Identity-based policy 相同,每一个 Resource-based policy 中有多个 Statement (下图中的 * 符号代表多个),而每一个 Statement 只会归属於一个 Policy (图中以数字 1 代表此关系)。不过 Statement 中的 Resource (下图红框)与上述介绍有不同的意义,这边特别写上 self 来表示。

通常在设定 Resource-based policy 时,通常是去各个服务的介面设定,譬如说在某个 S3 Bucket 的介面下,去设定 Resource-based policy,而 Resource (下图红框)就表示此 S3 Bucket 本身。
https://ithelp.ithome.com.tw/upload/images/20210913/20100951eX0DLwnvjN.png

Resource-based policy 要套用给谁呢?

要决定套用给谁,必须使用 Statement 的 Principal 栏位(下图粉色),若想使 User 能使用 AWS Service,就必须在 Principal 里进行设定。如下图:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951qwZTSSA66W.png

https://ithelp.ithome.com.tw/upload/images/20210913/20100951OxjKox8EFN.png

Identity-based policy 与 Resource-based policy 套用差别

Identity-based policy: 可以看到 User、Group 与 Role,他们是在 Policy level,一套用就是整个 Policy 底下的 Statement 一次套用(下图#1)

Resource-based policy: 而 Principal 则不是,Principal 是在 Statement level,换言之,在每一个 Statement 都要做一次 Principal 的设定(下图#2)

除此之外 Identity-based policy 有重复使用的概念,设定好一次就可以套用给 User/Group/Role (下图#3)

Resource-based policy 在每一次撰写时都要到 Service 底下去做设定,跨 Service 之间无法重复使用(下图#4)
https://ithelp.ithome.com.tw/upload/images/20210913/20100951OvwfnBl5Uf.png

小结

从不同角度看 Policy 的功用:

  1. Identity-based policy 的面向是针对某个人(User/Group/Role)。
  2. Resource-based policy 的角度,是站在资源本身看这个世界,就像是守门者,要规范谁可以使用 Service。

整理结果如下图:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951SJvLuupDSA.png

那以上是这次对 IAM 架构的介绍。

What's Next?

那麽明天,我们将接着看到「权限宝石:【Lab】IAM User 建立与使用(上)」!


<<:  html 音量拉杆

>>:  26. Redux 的用途 & 入门实作 (下)

Day-26 吹奏创意的一曲、红透半边天的 Switch

面对效能强大的 PS4 与 XB1、任天堂这次依然不跟对手比效能、以创意来对决、而且还因为怕被对手复...

18.移转 Aras PLM大小事-快速贴入ECR受影响物件

这篇一样是Excel复制了很多料号,然後贴入ECR受影响物件 左边一个输入框,右边是系统讯息,上面一...

JS 33 - 在触控装置侦测手势的滑动方向!

大家好! 今天我们要实作在触控装置中侦测手势的方向。 我们进入今天的主题吧! 备注:前几天和今天的范...

【Day8】在本地简单的建立 django(Django API Server的架设 1/3)

基本上目前看到的方法大致上都如下图所示,所以我目前实作的也是如此, 因为脑子里没有更好的解决方案(在...