Назад | Перейти на главную страницу

Какие разрешения в IAM мне нужны для запуска инстансов EC2 с помощью Chef Knife?

Q1: Я пытаюсь создать пользователя в консоли IAM AWS, у которого есть ограниченные разрешения только для запуска новых экземпляров с использованием метода Knife ec2. В настоящее время работает только полный доступ с политикой «Полный доступ Amazon EC2». Создание пользователя и предоставление экземпляров запуска / остановки и описания изображений не работает.

Q2: Как я могу отладить это

ERROR: Fog::Compute::AWS::Error: UnauthorizedOperation => You are not authorized to perform this operation.

и проследите, какое именно разрешение мне нужно. (-V -V -V не работает)

В1: Мне пришлось отлаживать гем Knife-ec2, чтобы узнать минимальные разрешения IAM, необходимые для запуска экземпляра EC2. Вот минимальная политика:

{
  "Statement": [
    {
      "Sid": "Stmt123",
      "Action": [
        "ec2:RunInstances",
        "ec2:DescribeInstances",
        "ec2:DescribeKeyPairs",
        "ec2:DescribeImages",
        "ec2:CreateTags",
        "ec2:DescribeTags"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

Обратите внимание, что Сид должен быть уникальным.

Q2: Мои знания Ruby весьма ограничены, поэтому, возможно, нет удобного способа отладки. Лично я использовал binding.pry в качестве отладчика. Пожалуйста, обратитесь к следующему статья для получения дополнительной информации.

Вам нужно будет разрешить RunInstances.

Мне пришлось разрешить доступ в IAM пользователю, для которого мы используем «Идентификатор ключа доступа» и «Секретный ключ доступа».

Я придумал следующую политику:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances",
                "ec2:CreateTags",
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeAddresses"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": <You should list the roles you want to be able to create here
 or use '*' but that is dangerous because if it allows for privilege escalation>
        }
    ]
}

Я думаю, это может зависеть от того, какие функции / параметры вы используете для создания ножа ec2. Я попробовал политику из другого ответа (с iam: PassRole и некоторыми дополнительными политиками), но получил удар именно по ec2: DescribeAddress.

Вы можете понять, почему ваша роль что-то не сделала, проверив мои журналы ButtTrail.