6.5 KiB
第6天:IAM 入门——谁能做什么
今天你将学到什么
今天学习 AWS 中最重要的安全服务:IAM(Identity and Access Management,身份与访问管理)。
它回答两个核心问题:
- 你是谁?(身份认证)
- 你能做什么?(权限授权)
这是 AWS 安全的基石,后面学的所有服务都离不开它。
用公司来理解 IAM
想象你新入职一家公司:
- 你的工牌 = IAM 用户(证明你是谁)
- 你所在的部门 = IAM 组(研发部、市场部、财务部)
- 你的门禁权限 = IAM 策略(你能进哪些房间、用哪些设备)
- 临时访客证 = IAM 角色(外来人员临时获得某些权限,离开后就失效)
公司不会给每个人一把万能钥匙,而是根据岗位需要给不同的权限。IAM 做的就是这件事。
四个核心概念
1. 用户(User)
一个 IAM 用户代表一个具体的人或程序。
每个用户有自己的登录凭证:
- 用户名 + 密码(用于登录网页控制台)
- Access Key ID + Secret Access Key(用于命令行和程序调用)
重要原则:一人一账号,绝不共享。
为什么?如果三个人共用一个账号,出了问题你根本不知道是谁干的。就像公司的门禁卡,每人一张才能追踪谁什么时候进了哪个房间。
2. 组(Group)
组是用户的集合,方便批量管理权限。
举个例子:
你公司有 10 个开发人员,他们都需要访问代码仓库和测试服务器。你可以:
- 方法 A:给每个人单独设置权限(重复 10 次,累死)
- 方法 B:创建一个"开发者"组,把权限给这个组,然后把 10 个人加进去(一次搞定)
显然方法 B 更聪明。新人入职?加入组就自动有权限。离职?移出组就自动失去权限。
注意:
- 一个用户可以属于多个组(比如既在"开发者"组又在"项目A"组)
- 组不能嵌套(组里面不能再包含组)
3. 策略(Policy)
策略是一份"权限清单",用 JSON 格式写成,定义了"谁能对什么资源做什么操作"。
用大白话说就是:
"允许/拒绝 + 某人 + 对某个东西 + 做某个操作"
比如:
- "允许张三读取 S3 桶里的文件"
- "拒绝所有人删除生产数据库"
- "允许开发组启动和停止测试环境的 EC2 实例"
AWS 预置了很多常用策略(叫"AWS 托管策略"),比如:
AmazonS3ReadOnlyAccess— 只能读 S3,不能写AmazonEC2FullAccess— 对 EC2 有完全权限AdministratorAccess— 对所有服务有完全权限(相当于万能钥匙)
4. 角色(Role)
角色是一个"临时身份",不绑定特定的人。谁需要谁来"穿上"这个角色,用完就"脱下"。
为什么需要角色?
场景一:你的应用程序运行在 EC2 服务器上,需要读取 S3 里的文件。你不能给服务器一个"用户账号"(那样就有永久密码了,不安全)。正确做法是给服务器一个"角色"——它运行时自动获得临时权限,权限会自动过期和刷新。
场景二:外部审计人员需要临时查看你的 AWS 资源。你不想给他创建永久账号。给他一个角色,审计完了角色权限就失效了。
角色的核心优势:没有永久密码,临时获取、自动过期,比用户账号安全得多。
最小权限原则
这是 IAM 最最最重要的设计原则:
只给完成工作所需的最小权限,一分都不多给。
为什么这么重要?
想象一下:如果公司每个人都有所有房间的钥匙——
- 实习生不小心进了机房拔了网线,全公司断网
- 保洁阿姨误删了财务系统的数据
- 某个员工的钥匙丢了,所有房间都不安全了
同样的道理:
- 如果每个 IAM 用户都有 AdministratorAccess,一个误操作就可能删掉生产数据库
- 如果某个用户的密码泄露了,攻击者能做的事情越少越好
实践方法:
- 新用户创建时零权限,需要什么再加什么
- 定期检查:这个人还需要这些权限吗?
- 用 AWS 的工具(Access Analyzer)发现从未使用过的权限,然后移除
动手:创建你的第一个 IAM 用户
现在我们来创建一个日常使用的 IAM 用户,替代 Root 账户。
步骤:
- 用 Root 账户登录 AWS 控制台
- 搜索并进入 "IAM" 服务
- 左侧菜单点击 "用户"(Users)→ "创建用户"(Create user)
- 用户名填写:
admin-daily(或者你喜欢的名字) - 勾选"提供用户对 AWS 管理控制台的访问权限"
- 设置密码
- 下一步:设置权限
- 选择"将用户添加到组"→ "创建组"
- 组名填写:
Administrators - 搜索并勾选
AdministratorAccess策略 - 创建组,将用户加入
- 完成创建
记录登录信息:
创建完成后,你会看到一个专属的登录 URL:
https://你的账户ID.signin.aws.amazon.com/console
把这个 URL 收藏起来。以后用这个 URL + IAM 用户名密码登录,不再用 Root 账户。
给 IAM 用户也启用 MFA
和 Root 账户一样,IAM 用户也应该启用 MFA:
- 用 IAM 用户登录
- 右上角 → 安全凭证
- 分配 MFA 设备
- 扫码绑定
IAM 的工作流程
当你在 AWS 上做任何操作时,背后发生了什么:
你点击"创建 EC2 实例"
↓
AWS 检查:你是谁?(认证)
↓
AWS 检查:你有权限做这个操作吗?(授权)
↓
有权限 → 执行操作
没权限 → 返回"Access Denied"错误
授权的判断逻辑:
- 默认:所有操作都被拒绝(除非有明确的"允许")
- 如果找到了"允许"规则 → 允许
- 但如果同时存在"拒绝"规则 → 最终拒绝
记住:拒绝永远优先于允许。 这是安全设计的基本原则。
今天的小测验
- IAM 用户和 IAM 角色有什么区别?各自适合什么场景?
- 为什么要用"组"来管理权限,而不是给每个用户单独设置?
- "最小权限原则"是什么意思?为什么重要?
- 你现在应该用什么账户做日常操作?Root 还是 IAM 用户?
延伸阅读
明天预告
明天学习 AWS CLI(命令行工具)的安装和配置。虽然控制台(网页)很直观,但真正高效的 AWS 操作都是通过命令行完成的。学会 CLI,你的效率会提升 10 倍。