Есть ряд учетных записей AWS, которые я не контролирую. Я попросил владельцев учетных записей развернуть роль IAM, TrustingSecurityAuditor
, на свои счета, что дает право принимать TrustingSecurityAuditor
роль в другую роль IAM в моем аккаунте AWS, TrustedSecurityAuditor
. (Документы по делегированию доступа)
Это прекрасно работает и позволяет мне и моей команде безопасности предоставлять услуги аудита безопасности этим другим владельцам учетных записей в компании. Для этого мы запускаем экземпляр ec2 с TrustedSecurityAuditor
Роль IAM и наш код запрашивают временные учетные данные от каждой учетной записи, использующей СТС делая AssumeRole
к каждой учетной записи TrustingSecurityAuditor
роль.
Теперь я хочу создать дополнительную службу, работающую в другом экземпляре ec2 в моей учетной записи, которая может не только взять на себя роль этих «доверяющих» учетных записей, но также делать другие вещи в моей учетной записи, например получать доступ к DynamoDB моей учетной записи для хранения информации.
Если я применяю TrustedSecurityAuditor
роль в экземпляре, у меня нет необходимых мне локальных разрешений (например, доступа к DynamoDB).
Я не могу применить к экземпляру несколько ролей IAM (если не ошибаюсь).
Когда я пытаюсь создать новую роль, MyNewService
, с доступом DynamoDB, который может AssumeRole
к TrustedSecurityAuditor
роль в надежде затем использовать эти учетные данные STS, чтобы сделать второй AssumeRole
к TrustingSecurityAuditor
роль в чужом аккаунте я сталкиваюсь с этой проблемой:
Я могу AssumeRole
из MyNewService
роль в TrustedSecurityAuditor
роль, но когда я делаю вторую AssumeRole
к TrustingSecurityAuditor
роль AWS возвращает ошибку
Пользователь: arn: aws: sts :: 123456789012: loaded-role / TrustedSecurityAuditor / MyNewService не авторизован для выполнения: sts: AssumeRole на ресурсе: arn: aws: iam :: 123456789012: role / TrustingSecurityAuditor
Причина этого в том, что "пользователь" пытается AssumeRole
является
arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor/MyNewService
не
arn:aws:sts::123456789012:assumed-role/TrustedSecurityAuditor
Это означает, что вы не можете связать свои AssumeRole
s, потому что ARN, из которого исходит вызов, когда он исходит от предполагаемой роли, является не только предполагаемой ролью, но предполагаемой ролью с участием ролевое имя ассюмера застряло на конце.
Одно из решений, которое я использую неохотно, заключается в том, что я могу просто добавить необходимые мне разрешения, например возможность использовать DynamoDB для TrustedSecurityAuditor
роль. Причина, по которой я неохотно, заключается в том, что мне нужно только это разрешение на MyNewService
Например, не в моем исходном экземпляре, который выполняет только аудит безопасности и не требует доступа к DynamoDB.
Есть предложения, как выполнить то, что я ищу?
Сценарий:
Вам нужно будет управлять двумя наборами учетных данных. Учетные данные A, которые создаются из роли IAM, назначенной экземпляру EC2. Используйте эти учетные данные для доступа к своим ресурсам, таким как DynamoDB. Учетные данные B, которые создаются через STS из RoleB. Используйте эти учетные данные для доступа к ресурсам ваших клиентов.
Затем вам нужно будет самостоятельно использовать учетные данные в зависимости от того, что вы хотите сделать. Например, если вы используете Python, вы должны создать двух клиентов boto3 с разными учетными данными.