Identity and Access Management (IAM)

IAM 是提供用户用来管理用户对 AWS 资源的访问权限及其身份验证的服务。基本上的特性有:

  • IAM账户使用者可以分为根使用者 (root user) 与一般使用者 (IAM user)。
  • 免费提供的服务。
  • 创建用户、组和角色,并为其附加策略以控制其对 AWS 资源的访问权限。

IAM user是由 root user 或是被授权的 IAM user 所创建,所以先前所介绍创建 AWS 账户的方法中,申请免费套餐其实就是申请 root user ,而 AWS Educate/Academy 都只是 IAM user 账户。所以原 AWS 使用者也可以透过 root user 帮一般使用者创建 IAM user 账户,这是最简单也是最便利的方式,不过先决条件就是你的 IAM user 要懂得使用 AWS 资源,因为 AWS 的账单是看 root user ,并不会针对 IAM user 来收费。

root user and IAM user

一般初学者通常都是透过 AWS 管理控制台 (AWS Console management) 进行登入后使用 AWS 资源,而登入时会有两种身分可以选择,根使用者与一般使用者,所需要提供的登入讯息不同,根用户需要 email 与密码,通常还会开启 Multi-Factor Authentication,用来加强账户的保护; IAM User 则是需要提供 account ID, username, password 三个讯息,而 IAM user 是由 root user 所创建的,所以同一个 root user 所创建的 IAM user 中的 Account ID 都是一样的,图 1 的左手边就是选择透过 root user 登入,右手边则是选择用 IAM user 登入。

identify and access identify and access management_identify and access


图 1 、AWS 管理控制台登入选项

identify and access identify and access management_identify and access_02


图 2 、IAM user 登入画面

identify and access identify and access management_运维_03


图 3 、root user 登入画面二

identify and access identify and access management_identify and access_04


图 4 、root user 登入画面-须提供认证码

创建 IAM user

以下演示如何创建一个 IAM user,不过在创建之前要先了解一些基础概念

  • IAM 用户管理是全局的,不管你是在哪一个区域 (region)
  • IAM 用户存取 AWS 资源的方法可以透过 AWS 管理控制面板、程序开发工具组 (SDK) 以及命令行模式 (CLI) ,AWS 管理控制台是透过账号/密码来验证,而 SDK 和 CLI 则是透过凭证 (credentials),凭证的内容则为 Access key ID和Secret access key
  • IAM 用户管理分为用户 (user) 、群 (group) 、角色 (role)
  • IAM 授权决定可以使用的资源与操作

第一点是比较容易理解,第二点的话,目前我们所有的操作就是属于 AWS 管理控制台的操作,至于 SDK 和 CLI 的操作,会在后面展示。第三点则是在创建 IAM user 之前要规划好,比方说我们有研发团队跟测试团队,而研发团队只能使用 EC2,测试团队允许完整操作 EC2,那我们只要把这两个权限设定好,在授权给这两个群组,那只要是这两个群组下的使用者,就拥有这个权限。

进入IAM 服务画面

原则上免费项目、 AWS Educate/Academy 都可以使用这个功能,只是在授权方面的权限不同,所以不影响以下的操作。登入相关账号后,右上角显示的是你目前所在地区,因为 IAM 是全局的,所以可以不用理会,接着请选择左上角的 服务 下拉式选单,接着输入 IAM 后,方块下方会出现IAM管理AWS资源存取权,点选这个选项后就会进入 IAM 的控制台画面,可参考图 5

identify and access identify and access management_AWS_05


图 5、AWS管理控制台首页

建立新群组

接着在画面左边工具栏中选择群组,并按下建立新群组 RDteam (注意右上方的地区从新加坡变成全球)

identify and access identify and access management_AWS_06


图 6 、建立新群组

identify and access identify and access management_运维_07


图 7 、设定组名先输入 ec2,则底下会自动筛选政策,请选择 AmazonEC2ReadOnlyAccess

identify and access identify and access management_运维_08

图 8 、指定群组政策

identify and access identify and access management_AWS_09


图 9 、检阅群组设定

在依照上述方式建立 Testteam,在政策部分则是选择 AmazonEC2FullAccess。

建立使用者

接下来就是将使用者指定到特定群组去,假设 Jame 是在 RDteam , Joe 是在 Testteam ,那我们就可以建立这两个使用者,分别指定到 RDteam 与 Testteam 。选择左边功能选单的 用户,并按下右边的 新增使用者,而新增使用者会有五个步骤,画面 10 中我们先输入使用者账号,可以发现他是允许我们一次输入多个使用者,接着是选择这些使用者的 AWS 存取类型,这在上面有提过,不同的存取类型需要不同的认证机制,针对初学者,建议选择 AWS Management Console 存取,接着会出现控制台密码与需要密码重设选项,可以使用默认值

identify and access identify and access management_云计算_10


图 10 、新增使用者

接下来就是设定使用者的权限,可以是_新增使用者至群组、从现有的使用者复制许可、直接连接现有政策_这三种方式,我们选择第一种,这三种方式是互斥的,不能并存,只能选其中一个。

identify and access identify and access management_后端_11


图 11 、设定使用者权限限

下一个步骤是卷标,可以使用卷标来组织、追踪或控制存取此使用者,这是选择性输入,可以不用输入;最后是检阅,确认没问题后,就可以新增使用者,而因为前述是自动产生密码,所以我们必须把账号/密码 (1) 与登入网址 (2) 通知新使用者,下图中可以得到这些信息,可以选择用 email 方式通知对方,或是其它通讯软件。

identify and access identify and access management_identify and access_12


图 12 、新用户相关信息

Testteam 的 Joe 可以按照此步骤进行新增。新增完毕后可以就上述的登入网址进行登入,并测试权限。