Я пытаюсь написать политику IAM, которая позволяет пользователям AWS запускать экземпляр только в том случае, если группа безопасности относится к одному из двух типов.Поскольку нет ключа безопасности группы условий, я выбрал использование условных операторов, так что экземпляр EC2 нельзя запускать / запускать , если группа безопасности не входит ни в одну из двух категорий.В приведенной ниже политике я обращаюсь к этим утвержденным группам безопасности с помощью их тегов.
Проблема, с которой я сталкиваюсь, заключается в том, что когда у меня есть группа безопасности, которая соответствует , равному первому условию, экземпляр может быть запущен.Однако, когда я использую группу безопасности, равную «UCSFInbound» (второе условие), экземпляр не будет запущен (даже если он должен).
У меня есть отдельная политика, которая предоставляет более широкий доступ к ресурсам EC2, однако, насколько я понимаю, AWS сначала регистрирует действия "запретить", а затем "разрешает" действия.И если по этой причине у меня возникла проблема, то ни один из двух случаев (групп безопасности) не должен работать.
Политика IAM :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Deny",
"Action": [
"ec2:StartInstances",
"ec2:RunInstances"
],
"Resource": [
"arn:aws:ec2:*:*:subnet/*",
"arn:aws:ec2:*:*:key-pair/*",
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*::snapshot/*",
"arn:aws:ec2:*:*:launch-template/*",
"arn:aws:ec2:*:*:volume/*",
"arn:aws:ec2:*:*:security-group/*",
"arn:aws:ec2:*:*:placement-group/*",
"arn:aws:ec2:*:*:network-interface/*",
"arn:aws:ec2:*::image/*"
],
"Condition": {
"StringNotLike": {
"ec2:ResourceTag/aws:cloudformation:stack-id": "NetworkResourcesStack"
},
"StringNotEquals": {
"ec2:ResourceTag/Name": "UCSFInbound"
}
}
}
]
}