用于按关联的 IAM 角色限制实例的 AWS IAM 策略



我正在尝试做的(继续我之前问过的一个问题:如何在 powershell 中按 IAM 角色筛选 AWS 实例并获取该实例的私有 IP 地址?)是获取具有特定 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仅适用于所有实例,但我不确定。

我将不胜感激,谢谢!

到目前为止,

您还没有将 IAM 用户限制为查看特定 EC2 实例的选项。

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

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

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

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

请让我知道它是否适合您。

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

相关内容

  • 没有找到相关文章

最新更新