Не авторизован для выполнения: ec2:DescribeInstances, поскольку ни одна политика на основе удостоверений не разрешает действие ec2:DescribeInstances

Я пытаюсь предоставить доступ тестовому пользователю с ограниченными разрешениями на экземпляре ec2 для запуска и остановки сервера. К сожалению, я получаю это сообщение на панели инструментов testuser:

**Ошибка: У вас нет прав на выполнение этой операции. Пользователь: arn:aws:iam::XXXXXXXXXXXX:user/testuser не авторизован для выполнения: ec2:DescribeInstances, поскольку ни одна политика на основе идентификации не разрешает действие ec2:DescribeInstances

политика:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:XXXXXXXXXXXX:instance/i-XXXXXXXXXXXXXXXXX",
                "arn:aws:ec2:us-east-1:XXXXXXXXXXXX:instance/i-XXXXXXXXXXXXXXXXX"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:us-east-1:XXXXXXXXXXXX:instance/i-XXXXXXXXXXXXXXXXX",
            "Condition": {
                "StringEquals": {
                    "ec2:InstanceId": [
                        "i-XXXXXXXXXXXXXXXXX"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:us-east-1:XXXXXXXXXXXX:instance/i-XXXXXXXXXXXXXXXXX",
            "Condition": {
                "StringEquals": {
                    "ec2:InstanceId": [
                        "i-XXXXXXXXXXXXXXXXX"
                    ]
                }
            }
        }
    ]
} 

Пожалуйста, помогите мне.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
161
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Чтобы отобразить эту информацию, консоль управления выполняет DescribeInstances вызов AWS от имени пользователя, чтобы получить список ВСЕХ экземпляров. Однако, судя по вашей политике, у testuser нет разрешения на перечисление ВСЕХ экземпляров. Поэтому консоль управления выдает сообщение об ошибке.

У вас есть три варианта:

Вариант 1. Разрешите testuser вызывать DescribeInstances во ВСЕХ экземплярах, а не только в тех двух, которые вы указали в своей политике.

Вариант 2: игнорировать ошибку. Вместо этого дайте пользователям URL-адреса, которые направят их непосредственно к нужному экземпляру в консоли, минуя экран «Экземпляры» в консоли. Вы можете сделать это, попросив кого-нибудь с необходимым разрешением войти в экземпляр, а затем просто скопировать URL-адрес и предоставить его своему тестировщику. Затем они могут использовать этот URL-адрес для перехода непосредственно к экземпляру, чтобы запустить/остановить его.

Вариант 3. Не используйте консоль. Вместо этого попросите вашего тестировщика использовать интерфейс командной строки AWS:

Чтобы запустить экземпляр:

aws ec2 start-instances --instance-ids i-1234567890abcdef0

Чтобы остановить экземпляр:

aws ec2 stop-instances --instance-ids i-1234567890abcdef0

Я протестировал уменьшенную версию вашей политики:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances"
            ],
            "Resource": [
                "arn:aws:ec2:ap-southeast-2:111111111111:instance/i-0829407d881f5e4df"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:ap-southeast-2:111111111111:instance/i-0829407d881f5e4df"
        }
    ]
}

Мне не удалось получить доступ к странице консоли для этого экземпляра. Там было сказано not authorized to perform: ec2:DescribeInstances because no identity-based policy allows the ec2:DescribeInstances action.

Однако я мог бы использовать интерфейс командной строки AWS для остановки и запуска экземпляров. Это будет самый простой способ позволить вашим тестовым пользователям управлять экземпляром без необходимости доступа к консоли управления EC2.

Другие вопросы по теме