Я пытаюсь предоставить доступ тестовому пользователю с ограниченными разрешениями на экземпляре 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"
]
}
}
}
]
}
Пожалуйста, помогите мне.
При доступе к консоли управления 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.