Можно ли указать шаблон для роли AWS Доверительные отношения

Я хочу разрешить некоторым ролям из другого аккаунта выполнять роль в моем аккаунте. Я не хочу указывать роли по одной, потому что они часто меняются.

Я разработал эту политику для доверительных отношений, которая должна разрешать любую роль, имя которой заканчивается _my_suffix, но это не работает (доступ запрещен):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
      },
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:iam::ACCOUNT_NR_A:role/*_my_suffix"
        }
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

С другой стороны, эта политика работает, но она слишком открыта, поскольку она позволяет любому пользователю / роли в учетной записи A выполнять мою роль:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT_NR_A:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Итак, есть ли способ разрешить только набор ролей без явного указания?

2 ответа

Решение

Невозможно использовать подстановочный знак в политике доверия, кроме "Principal" : { "AWS" : "*" }, Причина в том, что при указании идентификатора в качестве принципала необходимо использовать полный ARN, поскольку IAM преобразуется в уникальный идентификатор, например AIDAxxx (для пользователя IAM) или AROAxxx (для роли IAM). Ниже приводится документ:

Если ваш элемент Principal в политике доверия роли содержит ARN, указывающий на конкретного пользователя IAM, то этот ARN преобразуется в уникальный идентификатор участника пользователя при сохранении политики. Это помогает снизить риск того, что кто-то повысит свои привилегии, удалив и воссоздав пользователя. Обычно этот идентификатор не отображается в консоли, поскольку при отображении политики доверия происходит обратное преобразование обратно в ARN пользователя.

Недавно я столкнулся с таким же вариантом использования. Ни один из ответов не помог мне решить эту проблему.

Чарли, ваше исходное решение действительно, но мне потребовались некоторые настройки, чтобы заставить его работать, а именно: мне нужно было заменить 'ArnLike' на 'stringLike' и переключить 'aws:SourceArn' на использование 'aws:PrincipalArn':

    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<ACCOUNT_ID>:root"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringLike": {
          "aws:PrincipalArn": "arn:aws:iam::<ACCOUNT_ID>:role/test-role-name-*"
        }
      }
    }

Это похоже на проблему с делегированием доступа к доверенной учетной записи (вашей учетной записи), а не доверенной учетной записи (_my_suffix - учетная запись AWS). Это несколько вещей, которые вы можете проверить по следующему URL.

Ссылка: https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

Спасибо

Другие вопросы по тегам