2

Что я пытаюсь сделать (продолжая вопрос, заданный ранее: How can I filter AWS Instances by IAM role in powershell and get the private ip address of that instance?), получает частные IP-адреса экземпляров с определенной ролью IAM. И у меня есть код, который работает отлично:Политика AWS IAM для ограничения экземпляров с помощью соответствующей роли 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 применим только ко всем экземплярам, ​​но я не уверен.

Я был бы признателен за помощь, спасибо!

ответ

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

+0

Я взглянул на ссылку, которую вы здесь помещали, но только вопрос: 'get-ec2instance' не будет идеальной командой здесь, так как это потребует увидеть все экземпляры. есть ли другая аналогичная команда, которую я мог бы использовать, которая возвращала бы свойства экземпляров (с ролью iam) или даже только частные IP-адреса этих экземпляров (с ролью iam)? –

+0

после того, как вы сказали об отметке ресурса и на этом веб-сайте: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-structure.html#UsingWithEC2_Actions Я попытался поместить 'arn: aws: iam :: 12356789102: экземпляр-профиль/TestRole' в разделе «Ресурс» политики iam. он все еще не работает, но есть ли способ оттуда? –

+0

, поэтому прочитайте кучу документов и поняли, что 'ec2: DescribeInstances' не могут быть отфильтрованы, потому что эта функция не поддерживается. я решил придерживаться моего исходного кода получения всех экземпляров и фильтрации через них! спасибо за предложения, хотя :) –

2

Там нет никакого выбора, до сих пор где вы можете ограничить СИА пользователю видеть конкретный экземпляр EC2.

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

+0

yeap!не знал, что 'описать экземпляры' не могут быть отфильтрованы): спасибо за помощь, хотя :) –

Смежные вопросы