2

私がやろうとしていること (以前に尋ねた質問の続き: powershell で IAM ロールによって AWS インスタンスをフィルタリングし、そのインスタンスのプライベート IP アドレスを取得するにはどうすればよいですか? ) は、特定のインスタンスのプライベート IP アドレスを取得することです。 IAM ロール。そして、私は完全に機能するコードを持っています:

$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 Role を持つインスタンスに関する情報のみを取得できるように制限する 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"
                }
            }
        }
    ]
}

ただし、get-ec2instancePowershell で実行すると、そのアクションを実行する権限がないと言われます。すべてのインスタンスにしか適用できないためだと思いget-ec2instanceますが、よくわかりません。

助けていただければ幸いです、ありがとう!

4

2 に答える 2

2

これまでのところ、IAM ユーザーが特定の EC2 インスタンスを表示するように制限できるオプションはありません。

ec2-describe-instancesというAPI 呼び出しが 1 つだけ存在します。これは、すべてのインスタンスに対するすべてのアクセス許可を持つ必要があるか、まったくアクセス許可を持たない必要があることを示しています。

于 2016-02-05T08:25:28.783 に答える