amazon-web-services - 无论如何确定 CloudFormation 模板实际需要哪些 IAM 权限?
问题描述
只是想知道确定我应该为我的 CloudFormation 模板授予哪些权限的最佳实践是什么?
在尝试提供所需的最低权限一段时间后,我发现这确实非常耗时且容易出错。我注意到,根据我的堆栈状态,真正的新、一些更新和删除,我需要不同的权限。
我想,应该有可能有一些解析器给定 CloudFormation 模板可以确定它所需的最小权限集?
也许我可以ec2:*
访问标记的资源Cost Center: My Project Name
?这个可以吗?但是我想知道当我更改项目名称时会发生什么?
或者,是否可以假设ec2:*
可以根据 CloudFormation 部分通常仅在 CodeCommit/Github/CodePipeline 之外执行的假设来提供说访问权限,并且它不是可能公开/易于破解的东西?---虽然这对我来说听起来像是一个有缺陷的陈述......
解决方案
在短期内,您可以使用aws-leastprivilege。但它并不支持所有资源类型。
从长远来看:正如 2019 年 re:invent 演讲中提到的,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"
]
}
}
推荐阅读
- python - 如何在实际表单验证中取外键字段,DJANGO
- spring - Spring boot + docker + rest 模板连接被拒绝
- git - ZSH:子命令的完成别名,例如“compdef foo='git log'”
- python - InternalError_:频谱扫描错误。S3 到 Redshift 复制命令
- django - 无法使用自定义创建序列化程序 django rest_framework 保存数据
- python - 追加时更改了列名
- c# - 创建一个 C# 程序来计算给定数字的各个数字的总和
- rest - 使用 JAX-RS 如何将 API 服务返回的数据数组收集到 java 对象列表中?
- python - 如何将 Python 请求库与 IBMWatson API 一起使用?
- mysql - 是否所有外键都有一个使用 INSERT GUI 的下拉选项