首页 > 解决方案 > 无论如何确定 CloudFormation 模板实际需要哪些 IAM 权限?

问题描述

只是想知道确定我应该为我的 CloudFormation 模板授予哪些权限的最佳实践是什么?

在尝试提供所需的最低权限一段时间后,我发现这确实非常耗时且容易出错。我注意到,根据我的堆栈状态,真正的新、一些更新和删除,我需要不同的权限。

我想,应该有可能有一些解析器给定 CloudFormation 模板可以确定它所需的最小权限集?

也许我可以ec2:*访问标记的资源Cost Center: My Project Name?这个可以吗?但是我想知道当我更改项目名称时会发生什么?

或者,是否可以假设ec2:*可以根据 CloudFormation 部分通常仅在 CodeCommit/Github/CodePipeline 之外执行的假设来提供说访问权限,并且它不是可能公开/易于破解的东西?---虽然这对我来说听起来像是一个有缺陷的陈述......

标签: amazon-web-servicesamazon-cloudformationamazon-iam

解决方案


在短期内,您可以使用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"
            ]
        }
    }

推荐阅读