无论如何确定 CloudFormation 模板实际需要哪些 IAM 权限?

Posted

技术标签:

【中文标题】无论如何确定 CloudFormation 模板实际需要哪些 IAM 权限?【英文标题】:Is there anyway to determine what IAM permissions I actually need for a CloudFormation template? 【发布时间】:2019-01-06 20:08:23 【问题描述】:

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

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

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

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

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

【问题讨论】:

我在一次会议上与多位 AWS 工程师讨论了这个问题,他们的回答是:“不是真的”。最好的方法是什么都不分配,看看它会抛出什么错误。 @Exelian omg ... 已经这样做了将近 2 天了... 我什至没有授予所有访问权限... 我只是通读了列表并尝试只选择那些我认为我需要......即使那样我也花了这么长时间...... 【参考方案1】:

短期内可以使用aws-leastprivilege。 But it doesn't support every resource type.

从长远来看:as mentioned in this 2019 re:invent talk,CloudFormation 正致力于开源并将其大部分资源类型迁移到新的公共resource schema。这样做的好处之一是您将能够看到执行每个操作所需的权限。

例如对于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"
            ]
        
    

【讨论】:

以上是关于无论如何确定 CloudFormation 模板实际需要哪些 IAM 权限?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复与 AWS::CloudFormation::Init 一起创建 EC2 的 cloudformation 模板

如何使用单个 cloudformation 模板创建多个 Elasticbeanstalk 环境

如何在 Cloudformation 模板/CDK 中添加 AWS IoT 配置模板

如何使用 cloudformation 模板创建 cloudwatch 事件?

如何遍历 CloudFormation 模板中的值

AWS CloudFormation 模板:如何获取模板信息?