IAM 政策不允许 EC2 访问

Posted

技术标签:

【中文标题】IAM 政策不允许 EC2 访问【英文标题】:IAM Policy isn't allowing EC2 access 【发布时间】:2015-04-23 22:27:49 【问题描述】:

我有一个政策:


    "Version": "2012-10-17",
    "Statement": [
        
            "Sid": "Stmt1429817158000",
            "Effect": "Allow",
            "Action": [
                "ec2:*"
            ],
            "Resource": [
                "arn:aws:ec2:*"
            ]
        
    ]

这是附加到一个组。该组有一个用户。当我使用该用户的凭据登录 myloginthing.signin.aws.amazon.com 时,我无法执行与 EC2 相关的任何操作。对于页面上的每个操作,它都会为我提供诸如“您无权描述正在运行的实例”之类的消息。

IAM 策略模拟器告诉我任何操作都被拒绝,因为

隐式拒绝(未找到匹配的语句)。

我错过了什么?

【问题讨论】:

【参考方案1】:

这实际上花了我一段时间才弄清楚。

事实证明,您必须将每个操作(在您的示例中,ec2:*)与一组允许的资源(在您的示例中,arn:aws:ec2:*)匹配。

问题在于并非每个操作都具有相同的允许资源集 - 因此,虽然您可以为 RunInstances 使用许多不同的资源,但 DescribeInstances 仅支持 *。

完整列表可在here

(注意:发布链接是因为 a)列表非常大,并且 b)它可能会随着时间的推移发生显着变化。

【讨论】:

谢谢,你能解释一下你是如何从那个链接中得到 RunInstances 只支持 * 而不是 arn:aws:ec2:* 的吗? RunInstances 有很多资源——DescribeInstances 只支持 *.在页面的“重要”部分下,第一句是“如果此表中未列出 Amazon EC2 API 操作,则它不支持资源级权限。”还有一个指向“不支持的资源级权限”列表的页面的链接。【参考方案2】:

实际上可以使用 ec2:* 作为允许操作,但 "arn:aws:ec2:*" 是无效的 Amazon 资源名称。

"arn:aws:ec2:*" 替换为"arn:aws:ec2:::*" 或只是"*" 应该可以工作。

见Amazon Resource Names (ARNs) and AWS Service Namespaces

【讨论】:

我认为这不是真的。当我尝试保存策略时,arn:aws:ec2:::* 会导致 An error occurred: Resource arn:aws:ec2:::* contains an invalid region for vendor ec2.arn:aws:ec2:*:*:* 将保存但不修复任何内容。 @Philip 尝试在其中添加您的区域,例如arn:aws:ec2:us-west-1::*(只有最后一部分,也就是路径可以使用*通配符)【参考方案3】:

您必须填写所有资源:

                arn:aws:ec2:*::image/*
                arn:aws:ec2:*::snapshot/*
                arn:aws:ec2:*:*:subnet/*
                arn:aws:ec2:*:*:network-interface/*
                arn:aws:ec2:*:*:security-group/*
                arn:aws:ec2:*:*:volume/*
                arn:aws:ec2:*:*:instance/*
                arn:aws:ec2:*:*:network-interface/*
                arn:aws:ec2:*:*:key-pair/*

【讨论】:

以上是关于IAM 政策不允许 EC2 访问的主要内容,如果未能解决你的问题,请参考以下文章

AWS IAM 政策:仅标记未标记的资源

Amazon 弹性文件系统策略 (EFS) - 允许通过 IAM 角色访问 EC2 实例不起作用

AWS EC2 启动/停止实例的 IAM 策略

IAM 政策 - 如何引用资源?

AWS IAM 政策问题

什么 IAM 策略控制 Firebase 函数配置