只是想知道确定我应该为CloudFormation模板授予什么权限的最佳实践是什么?
经过一段时间的尝试,我发现这确实很耗时,而且很容易出错。我注意到,根据我的堆栈状态,真正的新与一些更新与删除,我需要不同的权限。
我想,应该有可能有一些解析器,给定CloudFormation模板,就可以确定它所需的最小权限集?
也许我可以让ec2:*
访问标记为Cost Center: My Project Name
的资源?这样可以吗?但我想知道,例如,当我更改项目名称时会发生什么?
或者,假设CloudFormation部分通常只在CodeCommit/Github/CodePipeline下执行,而它不是可能公开/易于破解的东西,那么可以假设可以给予ec2:*
访问权限吗?---但这听起来像是一个有缺陷的陈述。。。
在短期内,您可以使用aws最小特权。但它并不支持每种资源类型。
从长远来看:正如2019年的重新发明演讲中所提到的,CloudFormation正在努力实现开源,并将其大部分资源类型迁移到新的公共资源模式中。这样做的好处之一是,您可以看到执行每个操作所需的权限。
例如,对于AWS::ImageBuilder::Image,模式显示
"handlers": {
"create": {
"permissions": [
"iam:GetRole",
"imagebuilder:GetImageRecipe",
"imagebuilder:GetInfrastructureConfiguration",
"imagebuilder:GetDistributionConfiguration",
"imagebuilder:GetImage",
"imagebuilder:CreateImage",
"imagebuilder:TagResource"
]
},
"read": {
"permissions": [
"imagebuilder:GetImage"
]
},
"delete": {
"permissions": [
"imagebuilder:GetImage",
"imagebuilder:DeleteImage",
"imagebuilder:UnTagResource"
]
},
"list": {
"permissions": [
"imagebuilder:ListImages"
]
}
}