AWS IAM 权限管理实战:用户、角色、策略与安全最佳实践完整教程(2026最新版)

📅 · AWS 国际版实战教程 - ChengziCloud

一句话结论

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 功能,还能做到:

  1. 权限边界(Permissions Boundary):给子账号设一道"最高权限天花板",防止提权;
  2. 服务控制策略(SCP):在 Organization 层面统一限制所有子账号;
  3. IAM Access Analyzer:自动扫描并提醒你哪些资源被意外公开了;
  4. 会话标签与条件键:按 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

🔴 密钥安全三连(必做):

  1. 绝不把 Access Key 写进代码,更不要提交到 GitHub——用环境变量或 AWS 推荐的 Secrets Manager 存放;
  2. 开启密钥轮换提醒:IAM → Users → 选择用户 → Security credentials,建议 90 天轮换一次;AWS 会在密钥使用超过 90 天后在控制台给出"上次使用时间"提示,帮你识别僵尸密钥;
  3. 用 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"}
      }
    }
  ]
}

三个写策略的原则:

  1. 默认全拒绝,只开必要的:AWS 默认拒绝一切,策略里写什么才有什么,所以永远从"最小可用"开始加;
  2. Deny 优先于 Allow:显式 Deny 的权限,任何 Allow 都覆盖不了,适合做"红线"(如禁止删除生产桶);
  3. 托管策略优先:AmazonS3ReadOnlyAccess 这类 AWS 托管策略经过官方打磨,新手先用托管策略,熟练后再写自定义内联策略。

七、安全最佳实践清单:7 步把权限体系锁死

最佳实践具体操作防护效果成本
根账号强制 MFA账号菜单 → Security credentials → Assign MFA device防止根账号被盗免费
禁用根账号 Access Key根账号下删除所有长期密钥消除最大泄露面免费
全员开启 MFAIAM → Account settings → 设置 MFA 为必需密码泄露也无法登录免费
定期轮换密钥90 天轮换 + 删除僵尸密钥缩短泄露窗口免费
使用角色代替密钥EC2/Lambda 一律挂 IAM Role密钥不落地免费
开启 Access AnalyzerIAM → 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 + MFAIAM 免费
小团队(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 提供,点击访问首页了解更多