Я заключаю контракт с компанией, у которой есть несколько учетных записей AWS. Они предоставили мне доступ к учетной записи для входа, и я «сменил роль» в веб-консоли на учетную запись Project, над которой я работаю. В веб-интерфейсе это работает.
Как мне сделать то же самое с aws-cli
?? У меня есть ключи доступа только для учетной записи входа, и у меня нет разрешений на создание пользователя и ключи доступа в учетной записи Project. Это вообще возможно?
Конечно возможно!
Предположим, у вас есть Вход в аккаунт полномочия в ~/.aws/credentials
, наверное, примерно так:
~ $ cat ~/.aws/credentials
[customer-login]
aws_access_key_id = AKIABCDEFGHJKLMNOPQR
aws_secret_access_key = ZxCvBnMaSdFgHjKlQwErTyUiOp
Все, что вам нужно сделать, это добавить еще один профиль в ~/.aws/credentials
который будет использовать указанный выше профиль для сменить аккаунт в роль учетной записи вашего проекта. Вам также понадобится учетная запись Project Роль ARN - вы можете найти это в веб-консоли в Я -> Роли после того, как вы переключитесь на Учетная запись проекта. Допустим, номер учетной записи проекта - 123456789012 ...
[customer-project]
role_arn = arn:aws:iam::123456789012:role/your-project-role-name # << Change this
source_profile = customer-login
Имея это на месте, вы можете проверить, работает ли оно:
~ $ aws --profile customer-project sts get-caller-identity
{
"Account": "123456789012",
"UserId": "AROA1B2C3D4E5F6G7H8I:botocore-session-1538120713",
"Arn": "arn:aws:sts::123456789012:assumed-role/your-project-role-name/botocore-session-1538120713"
}
Как вы можете видеть, теперь вы находитесь в учетной записи Project, что подтверждается идентификатором учетной записи 123456789012.
Если вы хотите всегда использовать этот профиль с aws-cli
вы можете сделать так:
~ $ export AWS_DEFAULT_PROFILE=customer-project
~ $ aws sts get-caller-identity
... will be the same output as above, even without specifying --profile ...
Для получения дополнительной информации ознакомьтесь с этим сообщением: https://aws.nz/best-practice/cross-account-access-with-aws-cli/
Также проверьте: