AWS IAM 权限管理实战:用户、角色、策略与安全最佳实践完整教程(2026最新版)
Meta Description: 2026最新AWS IAM权限管理实战教程:从零学会创建IAM用户、用户组、角色与JSON策略,掌握最小权限原则、Access Key安全管理、MFA强制认证与权限排查方法,含CLI实操命令、方案对比表和常见问题FAQ,彻底告别权限混乱与密钥泄露风险。
- 前言
- 为什么 IAM 是 AWS 安全的"第一道防线"
- 五大核心概念:一张表看懂 IAM 全家桶
- 实操一:控制台创建 IAM 用户 + 用户组(5 分钟)
- 实操二:AWS CLI 创建用户并生成 Access Key
- 实操三:创建 IAM 角色,让 EC2 自动获得权限(最佳实践)
- 策略语言入门:看懂并写出自己的 JSON Policy
- 安全最佳实践清单:7 步把权限体系锁死
Meta Description: 2026最新AWS IAM权限管理实战教程:从零学会创建IAM用户、用户组、角色与JSON策略,掌握最小权限原则、Access Key安全管理、MFA强制认证与权限排查方法,含CLI实操命令、方案对比表和常见问题FAQ,彻底告别权限混乱与密钥泄露风险。
关键词:AWS IAM、IAM用户、IAM角色、AWS权限管理、Access Key泄露、最小权限原则、AWS策略、IAM Policy、AWS安全最佳实践、MFA多因素认证
前言
先给结论:IAM 是 AWS 里唯一完全免费、却最值得花时间学好的服务——人用 IAM 用户,机器用 IAM 角色,密钥只发最小权限,根账号开启 MFA 后锁进保险柜。 IAM(Identity and Access Management,身份与访问管理)负责回答 AWS 世界里唯一重要的问题:"谁,能对什么资源,做什么操作?" 权限没配好,轻则同事误删生产数据库,重则 Access Key 泄露被拿去开 GPU 实例挖矿、一夜刷出数千美元账单。本文用 3 套实操(控制台 + CLI)、4 张对比表和 1 个策略模板库,帮你从零搭出一套安全又够用的 AWS 权限体系。
一、为什么 IAM 是 AWS 安全的"第一道防线"
很多新手注册完 AWS,直接用根账号(Root User)登录、用根账号的 Access Key 写代码,这是 AWS 官方文档里第一条就禁止的做法。原因很简单:根账号拥有账号内所有权限,一旦泄露等于把整个云账号拱手让人,而且根账号的权限无法用策略收窄。
IAM 的价值就在于把"账号"和"权限"解耦:你可以创建任意多个 IAM 用户,每个用户只分配干活所需的最小权限;权限不是写死在账号上,而是通过策略(Policy)灵活附加、随时回收。配合 2026 年最新的 IAM 功能,还能做到:
- 权限边界(Permissions Boundary):给子账号设一道"最高权限天花板",防止提权;
- 服务控制策略(SCP):在 Organization 层面统一限制所有子账号;
- IAM Access Analyzer:自动扫描并提醒你哪些资源被意外公开了;
- 会话标签与条件键:按 IP、时间、MFA 状态等条件精细控制访问。
一句话:在 AWS 上,安全不是防火墙堆出来的,是权限设计出来的。
二、五大核心概念:一张表看懂 IAM 全家桶
开始实操前,先分清 IAM 的五个基础对象,90% 的权限问题都源于概念混淆:
| 概念 | 是什么 | 典型场景 | 类比 |
|---|---|---|---|
| 根账号(Root User) | 注册时创建的账号主体 | 只做账单、关闭账号等极少数操作 | 公司法人章 |
| IAM 用户(User) | 代表一个"人"或"应用"的身份 | 员工登录、程序调用 API | 工牌 |
| 用户组(Group) | 用户的集合,统一附加权限 | 按角色分组:开发组、运维组 | 部门 |
| IAM 角色(Role) | 临时授予的权限身份,不含密钥 | EC2 实例、Lambda、跨账号访问 | 临时通行证 |
| 策略(Policy) | JSON 格式的权限规则 | 定义"能做什么、不能做什么" | 规章制度 |
关键区别:用户是长期身份(带固定密钥),角色是临时身份(自动签发临时凭证,通常 1 小时内过期)。能用角色的地方绝不用用户密钥,这是 AWS 安全的第一铁律。
三、实操一:控制台创建 IAM 用户 + 用户组(5 分钟)
场景:给新同事"小王"开一个账号,只允许管理 EC2 和查看账单。
步骤 1:创建用户组。控制台进入 IAM → User groups → Create group,组名填 ec2-admins,在权限策略里勾选 AmazonEC2FullAccess 和 AWSBillingReadOnlyAccess,点击创建。
步骤 2:创建用户并加入组。进入 IAM → Users → Create user,用户名填 xiaowang,勾选 "Provide user access to the AWS Management Console"(提供控制台访问)并设置初始密码。创建完成后进入该用户 → Groups → 把 ec2-admins 组附加进去。
步骤 3:验证权限。用小王的新账号登录,尝试访问 S3 控制台——应该看到"Access Denied";访问 EC2 和账单页面则正常。验证最小权限是否生效,永远比"看起来配好了"重要。
四、实操二:AWS CLI 创建用户并生成 Access Key
场景:程序需要调用 AWS API(例如上传文件到 S3),需要一个带密钥的 IAM 用户。全程用 CLI 完成,方便脚本化:
// 创建用户(只给 S3 权限)
aws iam create-user --user-name app-s3-uploader
// 直接附加 AWS 托管策略(仅 S3 读写)
aws iam attach-user-policy --user-name app-s3-uploader \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
// 生成 Access Key(务必立即保存,Secret 只显示一次)
aws iam create-access-key --user-name app-s3-uploader
🔴 密钥安全三连(必做):
- 绝不把 Access Key 写进代码,更不要提交到 GitHub——用环境变量或 AWS 推荐的 Secrets Manager 存放;
- 开启密钥轮换提醒:IAM → Users → 选择用户 → Security credentials,建议 90 天轮换一次;AWS 会在密钥使用超过 90 天后在控制台给出"上次使用时间"提示,帮你识别僵尸密钥;
- 用
aws iam list-access-keys定期盘点,发现不认识的密钥立即删除。
// 盘点所有用户的密钥与最后使用时间
aws iam list-access-keys --user-name app-s3-uploader
// 删除不再使用的密钥
aws iam delete-access-key --user-name app-s3-uploader --access-key-id AKIAXXXX
五、实操三:创建 IAM 角色,让 EC2 自动获得权限(最佳实践)
场景:EC2 实例上的应用需要读取 S3 里的图片。新手做法是把 Access Key 塞进实例,老手做法是给实例戴一顶"角色帽子"——实例启动时自动向 STS 申请临时凭证,密钥根本不会出现在实例里。
步骤 1:创建角色。IAM → Roles → Create role,信任实体选 AWS service → EC2,权限策略选 AmazonS3ReadOnlyAccess,角色名填 ec2-s3-reader。
步骤 2:附加到实例。进入 EC2 控制台 → 选择实例 → Actions → Security → Modify IAM role → 选择 ec2-s3-reader。对已存在的实例同样适用,无需重启。
步骤 3:验证。SSH 登录实例,直接执行:
// 无需任何密钥配置,实例自带临时凭证
aws s3 ls s3://my-bucket/
// 查看临时凭证的过期时间(默认 1 小时,自动续期)
aws sts get-caller-identity
同样的套路适用于 Lambda、ECS、EKS:凡是 AWS 服务,一律用角色,永远不要用密钥。
六、策略语言入门:看懂并写出自己的 JSON Policy
IAM 策略本质是一段 JSON,核心字段只有四个:Effect(允许/拒绝)、Action(操作)、Resource(资源)、Condition(条件)。下面是最常用的两个模板,直接复制改资源 ARN 即可用:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
上面这条只允许读取 my-bucket 里的对象。加上 Condition 可以继续收紧——例如只允许在公司 IP 下执行:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": "*",
"Condition": {
"IpAddress": {"aws:SourceIp": "203.0.113.0/24"}
}
}
]
}
三个写策略的原则:
- 默认全拒绝,只开必要的:AWS 默认拒绝一切,策略里写什么才有什么,所以永远从"最小可用"开始加;
- Deny 优先于 Allow:显式 Deny 的权限,任何 Allow 都覆盖不了,适合做"红线"(如禁止删除生产桶);
- 托管策略优先:
AmazonS3ReadOnlyAccess这类 AWS 托管策略经过官方打磨,新手先用托管策略,熟练后再写自定义内联策略。
七、安全最佳实践清单:7 步把权限体系锁死
| 最佳实践 | 具体操作 | 防护效果 | 成本 |
|---|---|---|---|
| 根账号强制 MFA | 账号菜单 → Security credentials → Assign MFA device | 防止根账号被盗 | 免费 |
| 禁用根账号 Access Key | 根账号下删除所有长期密钥 | 消除最大泄露面 | 免费 |
| 全员开启 MFA | IAM → Account settings → 设置 MFA 为必需 | 密码泄露也无法登录 | 免费 |
| 定期轮换密钥 | 90 天轮换 + 删除僵尸密钥 | 缩短泄露窗口 | 免费 |
| 使用角色代替密钥 | EC2/Lambda 一律挂 IAM Role | 密钥不落地 | 免费 |
| 开启 Access Analyzer | IAM → Access Analyzer → Create analyzer | 自动发现公开资源 | 免费 |
| 开启 CloudTrail | 记录全部 API 调用日志 | 事后审计、追责 | 每 5 万条事件约 1 美元 |
注意:IAM 服务本身永久免费(用户、角色、策略、MFA 都不收费),唯一会产生费用的是 CloudTrail 日志存储、Secrets Manager 托管密钥等周边服务——这也是 IAM 被称为"性价比最高的安全投资"的原因。
八、权限排查:报"Access Denied"了怎么办
权限问题一定会遇到,按下面三步 5 分钟内定位:
第一步:看报错里的 ARN。Access Denied 信息会明确指出"哪个身份、对哪个资源、缺哪个操作",先确认是不是策略没挂上(检查用户/角色 → Permissions 页签)。
第二步:用 Policy Simulator 模拟。IAM → Policy simulator → 选择用户/角色 → 输入要测试的操作(如 s3:DeleteObject)→ 点 Run simulation。模拟器会告诉你"Allow / Deny / 缺少哪个策略",比猜快得多。
第三步:查 CloudTrail 事件。CloudTrail → Event history → 按用户名和时间过滤,找到那条 Access Denied 事件,展开 JSON 能看到完整的 errorMessage。这一步能确认问题到底出在"策略没写对"还是"根本没用对身份"。
口诀:先看 ARN,再跑模拟器,最后翻 CloudTrail——三步走完没有查不出的权限问题。
九、方案对比:个人、小团队、企业分别怎么配
| 使用场景 | 推荐方案 | 密钥/身份方式 | 月成本 |
|---|---|---|---|
| 个人学习/个人项目 | 1 个 IAM 管理员用户 + 根账号锁死 | 用户 Access Key + MFA | IAM 免费 |
| 小团队(3~10 人) | 用户组 + 按角色分策略 + 强制 MFA | 用户密钥按人分配 | IAM 免费 |
| 中大型团队 | IAM Identity Center(SSO)+ 权限集 | 单点登录,无长期密钥 | IAM 免费 |
| 多账号企业 | Organizations + SCP + 跨账号角色 | 角色链式委派 | Organizations 免费 |
选型建议:个人开发者做到"根账号 MFA + 最小权限用户"就够用;团队超过 5 人直接上 IAM Identity Center(AWS 单点登录),员工用公司账号登录 AWS 控制台,再也不分发 Access Key;企业多账号场景用 Organizations 的 SCP 做统一管控,配合 Cross-account Role 实现"一次登录、多账号操作"。
十、常见问题 FAQ
Q: IAM 收费吗? A: IAM 用户、用户组、角色、策略、MFA 全部免费,是 AWS 为数不多永久免费的服务。只有关联的 CloudTrail 日志、Secrets Manager、GuardDuty 等周边服务单独计费。
Q: Access Key 泄露了怎么办? A: 立即执行三步:① 在 IAM 里删除泄露的密钥并轮换(创建新密钥);② 检查 Cost Explorer 和 CloudTrail 有无异常操作(尤其是没开过的新区域、GPU 实例);③ 给该用户开启 MFA 并考虑开启 GuardDuty 持续监控。处理越快损失越小,AWS 对及时处理且有 CloudTrail 证据的盗刷案件通常支持减免。
Q: 根账号和 IAM 用户有什么区别? A: 根账号是注册时自动创建的超级管理员,权限无法收窄,所以只用于账单、关闭账号等场景;日常所有操作都应使用按需授权的 IAM 用户。AWS 官方强烈建议根账号只开 MFA、不留密钥、不日常登录。
Q: 为什么我配了策略还是 Access Denied? A: 常见原因:① 策略挂在用户组上但用户不在组里;② 资源 ARN 写错(桶名、区域、账号 ID 对不上);③ 存在显式 Deny(如 SCP 或权限边界);④ 用错了身份(实例没挂角色)。按上文第八节的"三步排查法"逐一排除。
Q: IAM 角色和用户能互相转换吗? A: 不能直接转换,但角色可以"扮演"(AssumeRole)获得用户/其他账号的权限。需要临时权限时用角色切换(控制台右上角 Switch role),需要长期密钥时建用户。AWS 官方建议:能角色就不用户。
Q: 免费套餐包含 IAM 吗? A: IAM 本身不占用免费套餐额度,因为它是永久免费服务。免费套餐额度(12 个月 750 小时 EC2、5GB S3 等)只针对计算和存储类资源,与 IAM 无关。
总结
AWS IAM 权限管理一句话口诀:根账号 MFA 锁死、人用用户组、机器用角色、策略最小化、密钥 90 天轮换、报错三步查(ARN→模拟器→CloudTrail)。 IAM 全免费,却决定了你云上资产的生死——花一个下午按本文配好,胜过出事后无数个不眠夜。还没 AWS 账号的新手,建议先看本站《2026 最新 AWS 免费套餐注册教程(避免被扣费的 5 个关键设置)》完成注册,再配合《AWS 账单管理:避免天价账单的 10 个关键设置》把安全与成本一起管起来;需要临时服务器跑实验的,参考《AWS EC2 选购教程》里的 Spot 实例方案,几美分就能开一台验证 IAM 配置。
⚠️ 文中价格为 2026 年参考价,实际费用随区域、实例类型和官方调价变动,请以 AWS 官网定价页为准。
🚀 需要 AWS 国际版账号?通过 3.chengzicloud.cloud 获取最新注册教程与专属优惠,助你轻松上云。
本文由 3.chengzicloud.cloud 提供,点击访问首页了解更多