CloudFormation修改栈遇iam:PutRolePolicy权限错误,求解决方案
问题分析与解决建议
故障原因
从错误信息来看,核心问题是执行CloudFormation栈修改的角色AWS-QuickSetup-StackSet-Local-AdministrationRole(CloudFormation通过STS扮演该角色完成操作)未被授予iam:PutRolePolicy权限,无法对test-eu-west-1-lambdaRole这个IAM角色执行该操作。
之前用Designer操作正常,大概率是以下原因之一:
- Designer默认使用你当前登录的IAM用户权限,而本次修改栈调用的是AWS Quick Setup提供的StackSet管理角色,两者权限范围不同
- 近期有人修改过
AWS-QuickSetup-StackSet-Local-AdministrationRole的权限策略,移除了iam:PutRolePolicy相关权限 - 目标角色
test-eu-west-1-lambdaRole的资源路径或名称发生变更,导致原有权限策略的资源匹配规则失效
权限配置位置
iam:PutRolePolicy属于身份型权限,必须配置在执行操作的身份上——也就是要把包含该权限的策略附加到IAM控制台中的AWS-QuickSetup-StackSet-Local-AdministrationRole角色上,而非写在CloudFormation的JSON模板里。
示例权限策略(可直接附加到该角色)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PutRolePolicy", "Resource": "arn:aws:iam::769558805:role/test-eu-west-1-lambdaRole" } ] }
如果需要覆盖更宽泛的场景(比如允许对账号下所有Lambda角色执行操作),可以将Resource字段调整为arn:aws:iam::769558805:role/*lambdaRole或其他匹配规则。
内容的提问来源于stack exchange,提问作者Henry.
相关产品推荐
相关产品推荐

