Создание политики IAM в AWS для защиты экземпляров EC2 с указанными c идентификаторами - PullRequest
0 голосов
/ 28 января 2020

Я работаю над проектом, размещенным в AWS. Консоль имеет доступ нескольких пользователей. Я создал политику IAM, которая позволяет указанным c пользователям создавать экземпляры и тома, НО они не должны обращаться к существующим экземплярам в консоли или видеть их с указанным c ID экземпляра.

Моя пользовательская политика как следует, но не работает должным образом:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
          "Action":[
            "ec2:RunInstances"
         ],
         "Resource":"*"
      },
      {
         "Effect":"Deny",
         "Action":[
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:RebootInstances"
         ],
         "Resource":"*",
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Admin"
            }
         }
      }
   ]
}

Ответы [ 3 ]

0 голосов
/ 29 января 2020

Вы пытались использовать эффект Запретить с действием ec2: DescribeInstances, если строки не равны aws: userid или aws: имя пользователя, добавляя встроенную политику к роли, прикрепленной к экземплярам.

0 голосов
/ 29 января 2020

ec2:CreateVolume предоставляет разрешение на создание тома Amazon EBS. Создание тома не связано с экземпляром Amazon EC2. Том связывается только с экземпляром с помощью команды AttachVolume.

ec2:RunInstances предоставляет разрешение на запуск новых Amazon EC2. Он не связан с существующими экземплярами.

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

Чтобы предоставить разрешение на просмотр экземпляров Amazon EC2 в консоли управления, используйте ec2:DescribeInstances. Однако у пользователя будет либо разрешение перечислить все экземпляров, либо нет . Невозможно ограничить, какие экземпляры возвращаются вызовом DescribeInstances().

Если вы хотите sh ограничить такую ​​информацию от пользователей, то вам нужно будет либо создать свой собственный "промежуточный" код, который фильтрует информацию (поэтому они вызывают ваш код, который извлекает все экземпляры, но возвращает только некоторые экземпляры), или вы можете использовать отдельные AWS учетные записи для каждого пользователя, чтобы они не видели других пользователей. ресурсы.

0 голосов
/ 28 января 2020

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

Однако у вас есть возможность ограничить действия пользователя IAM по выполнению действий (запуск / остановка / перезагрузка ... et c) над экземплярами, созданными другим пользователем.

https://aws.amazon.com/premiumsupport/knowledge-center/restrict-ec2-iam/

Часть 2:

Попробуйте использовать это:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                 "ec2:RunInstances",
                "ec2:RebootInstances"            
              ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "${aws:username}"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeInstances",
            "Resource": "*"
        }
    ]
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...