AWS IAM策略,用于通过关联的IAM角色限制实例

时间:2016-02-05 05:29:53

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

我正在尝试做什么(继续我之前提出的问题: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仅适用于所有实例,但我不确定。

我很感激帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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

出于安全考虑,我建议您限制使用IAM进行访问,并使用代码iteslf继续过滤您的实例。

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

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