У меня есть AMI, которые я хочу разрешить, помеченные тегом "type".
Вот политика, которую я пробовал:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:StartInstances"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/type": "permitted_amis"
}
},
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:CreateTags"
],
"Resource": [
"*"
]
}
]
}
Когда я попытался запустить экземпляр из одного из этих AMI, мне было отказано в разрешении.
Проблема в том, что у вас больше нет разрешений ec2: RunInstances, потому что вы добавили это разрешение вместе с условием, поэтому оно переопределяется - он будет искать экземпляр EC2 с этим тегом; видя, что у вас есть только «ec2: DescribeInstances» на ресурсе: [«*»];
Добавьте два отдельных оператора и укажите точные ресурсы для каждого:
Пример: (взято из http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html#ex5)
Следующая политика позволяет пользователям запускать экземпляры, используя только те AMI, с которыми связан указанный тег «Department = dev». Пользователи не могут запускать экземпляры с использованием других AMI, потому что элемент Condition первого оператора требует, чтобы пользователи указали AMI с этим тегом. Пользователи также не могут запускаться в подсети, поскольку политика не предоставляет разрешения для ресурсов подсети и сетевого интерфейса. Однако они могут запустить EC2-Classic. Второй оператор использует подстановочный знак, позволяющий пользователям создавать ресурсы экземпляра, и требует, чтобы пользователи указали пару ключей project_keypair и группу безопасности sg-1a2b3c4d. Пользователи по-прежнему могут запускать экземпляры без пары ключей.
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:region::image/ami-*"
],
"Condition": {
"StringEquals": {
"ec2:ResourceTag/department": "dev"
}
}
},
{
"Effect": "Allow",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:region:account:instance/*",
"arn:aws:ec2:region:account:volume/*",
"arn:aws:ec2:region:account:key-pair/project_keypair",
"arn:aws:ec2:region:account:security-group/sg-1a2b3c4d"
]
}
]
}