Разрешения AWS IAM для EC2 - управление доступом для определенных экземпляров в определенном регионе

Я пытаюсь установить групповую политику с IAM, чтобы предоставить доступ пользователям в определенном регионе с определенным vpc. Что касается документов AWS, попытка использовать идентификатор vpc для фильтрации экземпляров, поскольку тег ресурса не работает с ec2 (ResourceTag был бы лучшим вариантом, если бы он работал с EC2). Создал следующее правило для того же, но это не помогло,

{   "Version": "2012-10-17",  
"Statement": [    {
     "Action": [
             "ec2:RunInstances",
             "ec2:StartInstances",
             "ec2:Describe*" ],
     "Resource": "*",
     "Effect": "Allow",
     "Condition": {
     "StringEquals": {
     "ec2:Vpc": "arn:aws:ec2:us-west-2:*:vpc/vpc-123456"
       }
     }
    }    ] }

в результате на странице EC2 появится сообщение «Произошла ошибка при получении данных экземпляра».

Могу я что-нибудь посоветовать исправить это?

Спасибо


Спасибо за ответ, Рико :-)

К сожалению, данная политика не сработала для меня в соответствии с моими требованиями.

Необходимо предоставить доступ пользователю для определенного региона, и пользователь должен иметь доступ к экземпляру, основанному на конкретном теге ресурса, VPC, подсети или группе безопасности.

У пользователя не должно быть привилегий запускать или редактировать что-либо, и пользователь должен иметь возможность перечислять экземпляры на основе фильтра, как указано выше, для просмотра сведений об экземпляре (только для чтения).

Принимая во внимание вышеупомянутые аспекты, я определил аналогичную политику с двойным условием, поскольку ARN плохо работает с ресурсами для меня.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*",
        "Condition": {
        "StringEquals": {
        [   
        "ec2:Region": "us-west-2",
        "ec2:ResourceTag/Name": "Test"
       ]
     }
   }
  }  
 ]
}

Когда я использую ARN для ресурса, он не работает для меня в формате ниже,

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "arn:aws:ec2:us-west-2:1234567890:*/*",
        "Condition": {
        "StringEquals": {
    "ec2:ResourceTag/Name": "Test"
     }
   }
 }  
 ]
}

Я пробовал фильтровать экземпляры с помощью тега ресурса, идентификатора экземпляра, группы безопасности и подсети.

Теперь из вашего ответа я понимаю, что фильтрация VPC на данный момент невозможна.

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

введите описание изображения здесь

Будем очень признательны за Ваш быстрый ответ.

Заранее спасибо!


Я обсудил с архитектором решений AWS следующее обновление:

API-интерфейсы Describe * для EC2 пока не могут быть ограничены определенными ресурсами. В первых выпусках разрешений на уровне ресурсов для EC2 мы сосредоточились на тех действиях, которые создают новые или изменяют существующие ресурсы. См. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resources, чтобы увидеть полный список. действий в EC2, которые поддерживают разрешения на уровне ресурсов.

Мы работаем над расширением поддержки управления доступом на уровне ресурсов для большего числа действий, но мы не можем указать дату, когда это станет доступно для API-интерфейсов Describe *.

Поддерживаются ли разрешения на уровне ресурсов или нет, зависит от действия, см. Ссылку выше. В частности, на данный момент невозможно ограничить EC2 Describe * Actions ресурсами, но указанный выше ARN можно использовать для ограничения действий, которые изменяют ресурсы.

Тег ресурса, подсеть, группа безопасности и vpc поддерживаются в разделе «Условие» заявления политики IAM, но только для определенных действий - см. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policy-for-amazon-ec2.html#amazon-ec2-keys, чтобы узнать о доступных ключах. Однако тег ресурса, подсеть, группа безопасности и vpc не поддерживаются в Условиях для API Describe *.


Наконец, я просто закончил обходной путь, ограничив пользователя только регионом.


person thiyagu114    schedule 17.03.2014    source источник


Ответы (1)


Таким образом, в настоящее время это невозможно с использованием IAM, единственный способ - использовать ResourceTag. Интересно, почему они не работают на вас? Я общался с AWS Support, и вот их ответ:

К сожалению, в настоящее время это невозможно сделать. Хотя сейчас мы предлагаем разрешения на уровне ресурсов для ресурсов EC2 (подробнее здесь ... http://aws.typepad.com/aws/2013/07/resource-permissions-for-ec2-and-rds-resources.html) с условным управлением доступ на основе указанного VPC не поддерживается.

Это потому, что эта ссылка: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html#ec2-supported-iam-actions-resources показывает, что поддерживается ограниченное количество действий API EC2, и ни одно из них не поддерживает VPC в качестве ARN.

Также существует ограничение на «ec2: Describe *», которое вообще не может быть указано ресурсным ARN и не может контролироваться условно.

Обходной путь - использовать условный оператор «ResourceTag / tag-key», который можно использовать для большинства вызовов API. Таким образом, вы потенциально можете пометить свои экземпляры с помощью «Control»: «Allow» и не включать права на создание или удаление тегов в политику, которая будет прикреплена к соответствующему пользователю. Ваша политика будет выглядеть так:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:TerminateInstances"
            ],
            "Resource": "arn:aws:ec2:REGION:ACCOUNTNUMBER:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Control": "Allow"
                }
            }
        }
    ]
}

Затем вы можете ограничить пользователя запуском экземпляра только в определенном VPC, используя его subnet-id:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:region:account:instance/*",
                "arn:aws:ec2:region:account:subnet/SUBNET-ID-HERE",
                "arn:aws:ec2:region:account:volume/*",
                "arn:aws:ec2:region:account:network-interface/*",
                "arn:aws:ec2:region:account:key-pair/*",
                "arn:aws:ec2:region:account:security-group/*",
                "arn:aws:ec2:region::image/ami-*"
            ]
        }
    ]
}

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

Надеюсь это поможет.

person Rico    schedule 17.03.2014