跳到主要内容

IAM 权限管理

核心概念

IAM(Identity and Access Management)控制「谁可以对什么资源做什么操作」。

概念说明
User人类用户,有长期凭证(Access Key)
Group用户组,批量授权
Role角色,临时凭证,EC2/Lambda 等服务使用
PolicyJSON 策略文档,定义允许/拒绝的操作

策略结构

AWS IAM Policy 示例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadOnly",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": "10.0.0.0/8"
}
}
}
]
}

最佳实践

原则做法
最小权限仅授予完成工作所需的最少权限
使用角色而非用户EC2/Lambda 使用 IAM Role,不用 Access Key
启用 MFA所有人类用户强制 MFA
定期轮换Access Key 90 天轮换
不使用 RootRoot 账号仅用于初始设置,日常操作用 IAM 用户
审计启用 CloudTrail 记录所有 API 调用

常见角色设计

角色权限
AdminAdministratorAccess(仅少数人)
Developer读取所有 + 指定服务写入(不含 IAM)
DBARDS/ElastiCache 完整权限
ReadOnlyReadOnlyAccess(查看但不修改)
CI/CD PipelineECR 推送 + ECS 部署 + S3 读取

常见面试问题

Q1: IAM User 和 IAM Role 的区别?

答案

  • User:代表一个人,有长期凭证(密码 / Access Key),适合人类用户
  • Role:没有长期凭证,通过 AssumeRole 获取临时凭证,适合服务(EC2 / Lambda)和跨账号访问

最佳实践:应用程序永远使用 Role 而非 User 的 Access Key。

相关链接