ssm: resourceTag Проблемы с кросс-счетами - PullRequest
0 голосов
/ 04 мая 2020

Я использую ssm: тег документов для ограничения доступа пользователей на основе роли пользователя и тега документа. Я добавил условие в политику IAM, и оно работает. Но когда я пытаюсь сделать это с кросс-счетом, это не работает.

1) Мои документы SSM находятся в основной учетной записи, совместно используемой с дочерней учетной записью

2) Политика IAM для ограничения доступа на основе тегов находится в дочерней учетной записи (ключ тега: роль)

3) Запрос сделан на дочернюю учетную запись

Сценарий 1: Я могу успешно выполнить документы, когда условие из политики IAM удалено. Таким образом, учетная запись Child AWS может получать документы SSM из главной учетной записи AWS.

Сценарий 2: я не могу выполнить документы при фильтрации на основе тегов, то есть условия, добавленного в политику IAM. Это показывает, что учетная запись Child AWS не может получить теги документов SSM из основной учетной записи AWS. Может ли кто-нибудь помочь мне с этим? Прикрепление политики IAM для справки.

Документ политики IAM:

    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ssm:SendCommand",
            "Resource": [
                "arn:aws:s3:::ssm-deliverables/ssm-*",
                "arn:aws:ec2:ap-south-1:20**********:instance/*"
            ]
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ssm:ListCommandInvocations",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "ssm:SendCommand",
            "Resource": "arn:aws:ssm:::document/*",
            "Condition": {
                "StringEquals": {
                    "ssm:resourceTag/Role": "${aws:PrincipalTag/Role}"
                }
            }
        }
    ]
}

1 Ответ

1 голос
/ 05 мая 2020

aws: PrincipalTag , используемый здесь, является одним из глобальных контекстных ключей условия aws. Мы должны использовать вышеупомянутый ключ для сравнения тега, прикрепленного к запросу создания принципала, с тегом, указанным в политике.

В этом случае принципалом является пользователь / роль IAM, для которых указана вышеуказанная политика. прилагается. Поэтому сам пользователь / роль IAM должен быть помечен теми же значениями, которые указаны в политике IAM.

Например:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:StartInstances",
      "Resource": "*",
      "Condition": {"StringEquals": {"ec2:resourceTag/Name": "${aws:PrincipalTag/Name}" 
       }
      }
    }
  ]
}

Предположим, что вышеуказанная политика привязана к пользователю IAM, который Если пользователь хочет запустить экземпляр EC2, пользователь сможет запустить экземпляр EC2, если пользователь будет помечен теми же тегами, что и теги ресурсов, упомянутые в политике IAM.

Итак, вы должны отметить тег Пользователь IAM, отправляющий запрос в SSM, с помощью ключа «Роль» и «Значение» задает имя роли или arn, как теги документа ssm.

...