AWS如何配置IAM权限 允许创建服务角色同时避免权限提升
报错信息翻译
英文报错
authorized to perform: iam:CreateRole on resource:中文含义:当前调用身份无权限对目标资源执行iam:CreateRole(创建IAM角色)操作。
安全权限配置方案
核心逻辑是通过路径/命名规则缩小角色操作范围+强制权限边界锁死角色最大权限+信任主体白名单阻断角色链提权路径,具体配置如下:
- 给开发人员授予范围受限的IAM角色操作权限
不要授予全量IAM操作权限,仅开放项目部署必需的角色相关接口,同时在策略中加三层硬限制:- 资源范围限制:将可操作的角色资源ARN限定为
arn:aws:iam::[你的账号ID]:role/project/[你的项目唯一标识]/*,要求所有项目相关角色必须创建在该专属路径下,禁止操作其他路径的账号预置角色、其他项目角色 - 信任主体限制:增加策略条件,仅允许角色的信任策略中包含
ec2.amazonaws.com、lambda.amazonaws.com、rds.amazonaws.com三类服务主体,禁止将IAM用户、其他角色、外部账号设置为信任主体,阻断跨角色提权路径 - 权限边界强制限制:增加策略条件,所有创建、修改的角色必须绑定预先创建好的项目级权限边界策略,未绑定该策略的操作直接拒绝
- 资源范围限制:将可操作的角色资源ARN限定为
- 预置项目级权限边界策略锁死权限上限
提前创建专供该项目使用的权限边界策略,作为所有项目角色的权限天花板,策略必须包含以下规则:- 显式拒绝所有IAM、资源组织管理、账号配置类高风险操作,从根源上禁止项目角色拥有修改权限、调整账号配置的能力
- 仅开放EC2、Lambda、RDS三类服务的项目必需最小操作权限,通过强制项目标签做资源隔离,仅允许操作带有指定项目标签的资源
- 显式拒绝修改、删除该权限边界策略本身的操作
- 增加兜底拒绝规则
在开发人员自身绑定的权限策略中增加显式拒绝项:- 拒绝给项目路径下的角色附加不在白名单内的托管策略,白名单仅保留服务运行必需的基础策略(比如Lambda基础执行角色、EC2 SSM管理策略等),绝对不能包含管理员访问、全量IAM访问这类高风险策略
- 拒绝创建、修改未绑定指定权限边界的角色
- 上线前做权限有效性验证
配置完成后用IAM策略模拟器做校验:模拟开发人员身份尝试创建管理员权限角色、尝试将角色信任主体修改为IAM用户、尝试操作非项目路径下的角色,确认所有违规操作都被拦截后再正式交付权限。
核心权限策略片段参考:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:TagRole", "iam:AttachRolePolicy", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:DeleteRole", "iam:ListRolePolicies" ], "Resource": "arn:aws:iam::[你的账号ID]:role/project/your-project-name/*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::[你的账号ID]:policy/ProjectDevPermissionBoundary" }, "ForAllValues:StringEquals": { "iam:PolicyArn": [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM" ] } } } ] }
内容的提问来源于stack exchange,提问作者PiaklA
相关产品推荐
相关产品推荐

