Политика AWS IAM, разрешающая действия по удалению ролей только для ресурсов с определенным тегом - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю роль CrossAccount, которая будет распределена между несколькими учетными записями AWS. Цель состоит в том, чтобы позволить одной из моих лямбд принять эту роль кросс-счета и создать стеки CFN в целевых учетных записях.

Чтобы разрешить удаление стеков, мне нужно назначить роли типа ec2: TerminateInstances . Но я не хочу разрешать акции на всех ресурсах "*". Как разрешить это действие только для ресурса с определенным тегом?

Я пытался выполнить следующее условие политики, но оно не работает. При попытке удалить стек я получил несанкционированную ошибку при действии ec2: TerminateInstances .

- Effect: "Allow"
  Action:
    - "ec2:TerminateInstances"
  Resource: "*"
  Condition:
    StringEquals:
      aws:RequestTag/Usage: TestOnlyTag

Я на правильном пути?

Обратите внимание, эту роль необходимо развернуть в целевых учетных записях, прежде чем стек даже будет создан. Таким образом, здесь невозможно указать идентификатор экземпляра.

1 Ответ

0 голосов
/ 07 ноября 2019

Оказывается, я должен использовать ResourceTag вместо RequestTag . Ниже приведены различия между этими двумя в соответствии с документацией AWS https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html

Ресурс - управление доступом к ресурсам сервиса AWS на основе тегов этих ресурсов. Для этого используйте ключ условия ResourceTag / key-name, чтобы определить, следует ли разрешить доступ к ресурсу на основе тегов, прикрепленных к ресурсу.

Запрос - укажите, какие теги можно передать в запросе. ,Для этого используйте ключ условия aws: RequestTag / key-name, чтобы указать, какие пары ключ-значение тега можно передать в запросе тегирования или отмены тега ресурса AWS.

Ниже приведены рабочиеполис.

- Effect: "Allow"
  Action:
    - "ec2:TerminateInstances"
  Resource: "*"
  Condition:
    StringEquals:
      aws:ResourceTag/Usage: "TestOnlyTag"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...