Я пытаюсь предоставить группе IAM возможность редактировать наши группы безопасности EC2, но мне не удалось заставить это работать без предоставления доступа ко всему в EC2.
Я пробовал несколько версий этого:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1392336685000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
]
}
]
}
Но когда я вхожу в систему с пользователем IAM, я получаю сообщение на странице группы безопасности, в котором говорится: «У вас нет прав на выполнение этой операции».
Я знаю, что пользователь / группа работает, потому что, если я выберу шаблон политики IAM для «Полный доступ Amazon EC2», пользователь сможет получить доступ ко всему в EC2.
У меня, очевидно, нет большого опыта работы с IAM, любая помощь будет принята с благодарностью.
Чтобы это работало, вам необходимо явно РАЗРЕШИТЬ следующее:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1392679134000",
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup",
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeNetworkAcls",
"ec2:DescribeSecurityGroups",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress"
],
"Resource": [
"*"
]
}
]
}
Вышеупомянутая политика JSON в основном предусматривает, что пользователь имеет доступ ТОЛЬКО к вышеуказанному. У них НЕ будет доступа ни к чему другому. Сюда входят экземпляры ec2, S3, IAM, Cloudfront и т. Д.
Если вы хотите ограничить редактирование одной группой безопасности, я думаю, вам нужно 2 оператора, у меня сработало следующее:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1413232782000",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeNetworkAcls",
"ec2:DescribeSecurityGroups"
],
"Resource": [
"*"
]
},
{
"Sid": "Stmt1413232782001",
"Effect": "Allow",
"Action": [
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress"
],
"Resource": [
"arn:aws:ec2:us-east-1:<accountid>:security-group/sg-<id>"
]
}
]
}
DescribeInstance может не понадобиться, но в моем случае я хотел его, поэтому не тестировал без него
Похоже, ваша группа безопасности используется экземпляром или каким-либо другим ресурсом EC2. Ты можешь попробовать:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1392336685000",
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": [
"arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:instance/*",
"arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
]
}
]
}
Я искал ответ на вопрос который @ nsij22 спросил в комментариях к принятому ответу. К сожалению, похоже, что это невозможно. В соответствии с Симулятор политики IAM, только следующие действия из @ DevMan14Ответ можно использовать с конкретными ресурсами:
Для всего остального симулятор политики IAM говорит:
Это действие не поддерживает разрешения на уровне ресурсов. Политики предоставления доступа должны указывать «*» в элементе ресурса.
Выглядит это так:
.
Все «разрешено» и «запрещено» одинаковы, поэтому я свернул их.