【问题标题】:AWS IAM Policy for restricting instances by associated IAM role用于按关联 IAM 角色限制实例的 AWS IAM 策略
【发布时间】:2016-05-15 00:04:09
【问题描述】:

我想要做的(继续我之前提出的问题:How can I filter AWS Instances by IAM role in powershell and get the private ip address of that instance?)是获取具有特定 IAM 角色的实例的私有 IP 地址。而且我有一个完美运行的代码:

$filter = New-Object Amazon.EC2.Model.Filter -Property @{Name = "iam-instance-profile.arn"; Value = "arn:aws:iam::123456789012:instance-profile/TestRole"} 
$ec2 = @(Get-EC2Instance -Filter $filter)
$ec2instances = $ec2.instances 
$ipaddress = $ec2instances.privateipaddress

但是,现在我不想在代码中进行过滤,而是创建一个 IAM 策略,限制用户只能获取有关具有特定 IAM 角色的实例的信息。因此,如果他们尝试get-ec2instance(例如),它应该只返回相关实例的信息,而不是帐户中的所有实例。

这是我的 IAM 政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnEquals": {
                    "ec2:InstanceProfile": "arn:aws:iam::12356789102:instance-profile/TestRole"
                }
            }
        }
    ]
}

但是,当我在 Powershell 上运行 get-ec2instance 时,我被告知我无权执行该操作。我认为这可能是因为get-ec2instance 仅适用于所有实例,但我不确定。

非常感谢您的帮助,谢谢!

【问题讨论】:

    标签: powershell amazon-web-services amazon-iam aws-powershell


    【解决方案1】:

    问题的原因是 get-ec2instance 试图描述您的所有实例,包括没有分配适当角色的实例。

    在谈论描述 EC2 实例或列出 S3 存储桶时,您应该能够列出所有内容,否则会收到 403 错误。

    我建议您仅出于安全目的限制您对 IAM 的访问,并继续使用代码 itemslf 过滤您的实例。

    如果它适合你,请告诉我。

    P。 S. 当您决定使用 IAM 角色来组织您的访问时,您可能走错了路。 AWS 提供了一项称为“资源标记”的功能。它的直接目的是组织您的资源并根据结构应用权限。 更多信息在这里: http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-ec2-tag-permissions

    【讨论】:

    • 我查看了您放在这里的链接,但只是一个问题,get-ec2instance 在这里不是理想的命令,因为它会请求查看所有实例。我可以使用另一个类似的命令来返回实例的属性(使用 iam 角色),甚至只返回这些实例的私有 IP 地址(使用 iam 角色)?
    • 按照你所说的关于资源标记和来自这个网站的内容:docs.aws.amazon.com/AWSEC2/latest/UserGuide/… 我试图将arn:aws:iam::12356789102:instance-profile/TestRole 放在 iam 政策的Resource 部分。它仍然不起作用,但有办法从那里去吗?
    • 于是翻阅了一堆文档,了解到ec2:DescribeInstances 无法过滤,因为该功能不受支持。我决定坚持使用获取所有实例并过滤它们的原始代码!不过感谢您的建议:)
    【解决方案2】:

    到目前为止,您还没有可以限制 IAM 用户查看特定 EC2 实例的选项。

    只有一个 API 调用存在 ec2-describe-instances,这表明需要拥有所有实例的所有权限或没有。

    【讨论】:

    • 是的!不知道describe instances 无法被过滤):感谢您的帮助:)
    猜你喜欢
    • 2018-11-02
    • 2019-08-06
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2016-01-17
    • 2019-10-14
    相关资源
    最近更新 更多