Политика AWS IAM для ограничения экземпляров соответствующей ролью IAM

Что я пытаюсь сделать (продолжая вопрос, который я задавал ранее: Как я могу отфильтровать экземпляры AWS по роли IAM в powershell и получить частный 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, которая ограничивает возможность пользователя получать информацию только об экземплярах, имеющих определенную роль 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-ec2instance в Powershell, мне говорят, что я не уполномочен выполнять это действие. Я думаю, это может быть потому, что get-ec2instance применимо только ко всем экземплярам, ​​но я не уверен.

Буду признателен за помощь, спасибо!


person carol Alex    schedule 05.02.2016    source источник


Ответы (2)


Причина проблемы в том, что get-ec2instance пытается описать все ваши экземпляры, включая экземпляры, которым не назначена соответствующая роль.

Говоря об описании инстансов EC2 или перечислении корзин S3, вы должны иметь возможность перечислить все, иначе вы получите ошибку 403.

Я мог бы предложить вам ограничить ваш доступ с помощью IAM только в целях безопасности и продолжить фильтрацию ваших экземпляров с помощью самого кода.

Пожалуйста, дайте мне знать, если это работает для вас.

P. S. Возможно, вы ошиблись, когда решили использовать IAM-роли для организации своего доступа. AWS предоставляет функцию под названием «Тегирование ресурсов». Прямой целью этого является организация ваших ресурсов и применение разрешений на основе структуры. Дополнительная информация здесь: http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html#iam-policy-example-ec2-tag-permissions

person Vladimir Mukhin    schedule 05.02.2016
comment
Я просмотрел ссылку, которую вы разместили здесь, но просто вопрос, get-ec2instance не будет идеальной командой здесь, так как это будет запрашивать просмотр всех экземпляров. есть ли другая аналогичная команда, которую я мог бы использовать, чтобы вернуть свойства экземпляров (с ролью iam) или даже просто частные IP-адреса этих экземпляров (с ролью iam)? - person carol Alex; 08.02.2016
comment
после того, что вы сказали о тегах ресурсов, и с этого веб-сайта: docs.aws.amazon.com/AWSEC2/latest/UserGuide/ я пытался поместить arn:aws:iam::12356789102:instance-profile/TestRole в раздел Resource политики iam. это все еще не работает, но есть ли способ уйти оттуда? - person carol Alex; 08.02.2016
comment
поэтому прочитал кучу документов и понял, что ec2:DescribeInstances не может быть отфильтровано, потому что эта функция не поддерживается. я решил придерживаться моего исходного кода получения всех экземпляров и их фильтрации! хотя спасибо за предложения :) - person carol Alex; 08.02.2016

Пока нет возможности ограничить доступ пользователя IAM к конкретному экземпляру EC2.

Существует только один вызов API ec2-describe-instances, который показывает, что нужно иметь все разрешения для всех экземпляров или ни одного.

person Vikash    schedule 05.02.2016
comment
да! не знал, что describe instances нельзя отфильтровать ): спасибо за помощь :) - person carol Alex; 08.02.2016