Использование тегов с префиксом aws: в политиках IAM - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть сценарий использования, когда я создаю набор ресурсов, таких как экземпляры EC2 и корзины S3, используя CloudFormation.Я вижу, что Cloudformation добавляет теги как к экземплярам EC2, так и к сегментам S3 с тегом в формате

aws:cloudformation:stack-name: <stack-name>

Я пытаюсь написать политику IAM, которая имеет разрешения на основе тегов.Политика выглядит следующим образом:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDescribeAll", "Effect": "Allow", "Action": [ "ec2:*", "s3:*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/aws:cloudformation:stack-name": "mystackname" } } }, { "Sid": "AllPermissions", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" } ] }

Теперь, когда я пытаюсь выполнить вызов API объекта S3 put, используя CLI, я вижу разрешения AccessDenied.То же самое происходит, когда я пытаюсь завершить экземпляр, который имеет этот конкретный тег.Я не смог найти никакой конкретной документации IAM, в которой упоминается, что мы не можем использовать теги с префиксом aws: в политиках IAM.Кто-нибудь знает, какая проблема может быть?Или дело в том, что контекстный ключ aws:ResourceTag недействителен?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

TLDR;Я искал больше документов и понял, что контекстный ключ aws:ResourceTag сейчас не является чем-то действительным / поддерживаемым.Нашел документацию здесь - https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html,, которую в документации содержится только aws: RequestTag в качестве действительного ключа контекста.

Чтобы добавить ключи контекста, специфичные для службы, мне пришлось копнуть глубже и найти этот документ - https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html, с контекстным ключом ec2: ResourceTag / tagKey.Итак, как только я изменил свою политику IAM на "ec2:ResourceTag/aws:cloudformation:stack-name": "mystackname", я начал видеть успехи.

0 голосов
/ 12 октября 2018

Я думаю, что не все "Action" поддерживают разрешения на уровне ресурсов.Чтобы устранить эту проблему, для тестирования, пожалуйста, попробуйте использовать минимум разрешений вместо «*», например:

"Action": ["ec2:StartInstances","ec2:StopInstances"]

Если это работает, разделите политику на два раздела.

Надеюсь, это поможет.Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...