AWS身份与访问管理(IAM)是AWS安全体系的核心。根据AWS安全成熟度模型,90%的安全事件源于IAM配置不当。本文将从基础概念到高级策略,系统介绍IAM的最佳实践。
组件 | 定义 | 用途 |
用户 | 代表个人或应用程序的身份 | 长期访问凭证 |
组 | 用户的集合 | 批量管理权限 |
角色 | 可被信任实体承担的临时身份 | 跨账户访问、应用程序权限 |
策略 | 定义权限的JSON文档 | 授权逻辑 |
一个IAM策略包含以下要素:
json
复制下载
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::example-bucket", "Condition": { "IpAddress": { "aws:SourceIp": "192.168.1.0/24" } } } ]}
Effect:Allow或Deny
Action:允许或拒绝的操作
Resource:操作的资源
Condition:生效条件(可选)
根用户拥有账户内所有资源的完全访问权限,应遵循以下规则:
启用根用户MFA
不创建根用户访问密钥
不将根用户用于日常操作
仅限特定任务(如关闭AWS Organizations)
创建步骤:
在IAM控制台创建用户(如admin-user)
选择“启用控制台访问”
附加“AdministratorAccess”策略
启用MFA
权限管理应遵循“从宽到精”的原则:
初期可使用托管策略
逐渐替换为内联策略
最终实现基于角色的精细权限
禁止:在EC2上保存访问密钥
允许:创建IAM角色并附加到EC2
配置步骤:
创建IAM角色,选择“AWS服务”->“EC2”
附加所需权限策略
在启动EC2时选择该角色
当需要访问其他账户的资源时,应使用角色而不是创建IAM用户:
在目标账户创建角色,信任源账户
源账户用户通过AssumeRole获取临时凭证
临时凭证有效期可配置(默认1小时)
使用Condition键实现更精细的控制:
条件键 | 用途 | 示例 |
aws:SourceIp | 限制IP地址 | 仅允许公司IP |
aws:RequestedRegion | 限制区域 | 仅允许特定区域 |
ec2:InstanceType | 限制实例类型 | 仅允许t3.micro |
s3:VersionId | 限制版本访问 | 仅允许最新版本 |
权限边界是IAM的高级功能,用于限制用户能获得的最高权限:
创建权限边界策略(如限制只能使用特定服务)
为用户附加边界策略
用户即使有管理员权限,也无法超出边界
在AWS Organizations中,服务控制策略可以限制成员账户的权限边界:
json
复制下载
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloudtrail:DeleteTrail", "cloudtrail:StopLogging" ], "Resource": "*" } ]}
这条策略会阻止所有成员账户删除或停止CloudTrail日志。
IAM凭证报告:每月运行一次,识别未使用的用户和密钥
Access Analyzer:持续分析外部访问权限
CloudTrail:启用并保留至少365天
轮换访问密钥:每90天轮换一次
禁用未使用的密钥:超过30天未使用的密钥应禁用
不使用长期凭证:优先使用IAM角色
使用AWS Config规则自动检查IAM配置:
iam-user-mfa-enabled:检查用户是否启用MFA
iam-root-access-key-check:检查根用户是否有访问密钥
iam-policy-no-statements-with-full-access:检查是否有过于宽松的策略
IAM是AWS安全的基石,正确的IAM配置可以阻止90%的安全事件。通过最小权限原则、角色替代密钥、条件精细化控制,以及持续的审计和监控,可以构建一个既安全又灵活的权限体系。
如果需要更深入咨询了解可以联系全球代理上TG:jinniuge 他们在云平台领域有更专业的知识和建议,他们有国际阿里云,国际腾讯云,国际华为云,aws亚马逊,谷歌云一级代理的渠道,客服1V1服务,支持免实名、免备案、免绑卡。开通即享专属VIP优惠、充值秒到账、官网下单享双重售后支持。不懂找他们就对了。