web-dev-qa-db-ja.com

aws-cliで「役割を切り替える」方法は?

複数のawsアカウントを持つ会社と契約しています。彼らは私にログインアカウントへのアクセス権を与え、ウェブコンソールで私が作業しているプロジェクトアカウントに「役割を切り替え」ます。 Web GUIで動作します。

aws-cliで同じことをするにはどうすればよいですか?ログインアカウントのアクセスキーのみがあり、プロジェクトアカウントでユーザーとアクセスキーを作成する権限がありません。可能ですか?

8
potom

もちろん可能です!

ログインアカウントの認証情報を~/.aws/credentialsに持っているとしましょう。

~ $ cat ~/.aws/credentials
[customer-login]
aws_access_key_id = AKIABCDEFGHJKLMNOPQR
aws_secret_access_key = ZxCvBnMaSdFgHjKlQwErTyUiOp

あなたがする必要があるのは、上記のプロファイルを使用して~/.aws/credentialsに別のプロファイルを追加し、プロジェクトアカウントロールにアカウントを切り替えることだけです。 ProjectアカウントRole ARNも必要です-Webコンソールの[〜#〜 ] iam [〜#〜]->ロールに切り替えた後、プロジェクトアカウント。プロジェクトのアカウント番号が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"
}

ご覧のとおり、アカウントID 123456789012で確認されたとおり、Projectアカウントにいます。

このプロファイルを常に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/

また確認してください:

14
MLu