LoginSignup
3
2

More than 1 year has passed since last update.

aws-cliでAssumeRoleを実行してみる sts assume-roleコマンドパターン・config+credentialsパターン

Last updated at Posted at 2022-09-14

aws-cliを利用してAssumeRole(スイッチロール)を実施する場合。
下記2つの方法があるかと思います。

  • aws sts assume-roleコマンドを利用する
  • .aws/config.aws/credentialsを利用する

本記事ではそれぞれの方法をつかったスイッチロールについて説明します。

今回利用するスイッチ元IAMユーザーについて

本記事で利用しているスイッチ元IAMユーザーについて。

スイッチ先のロールは、MFAを必須としているため、スイッチ元のIAMユーザにはMFAを設定し、スイッチ時にトークンを入力するように設定しています。

MFAデバイスのARNはスイッチ元IAMユーザーの認証情報、MFA デバイスの割り当てに記載があります。

image.png

aws sts assume-roleコマンドを利用する

下記の例ではsts assume-roleコマンドでスイッチ先の一時的な資格情報を取得し、それを環境変数に設定することで利用しています。

aws sts assume-roleコマンドでロールをスイッチする

# スイッチ元の情報確認
aws sts get-caller-identity --profile <<スイッチ元の資格情報>> --region ap-northeast-1

# aws sts assume-roleで一時的な資格情報を取得する
$credentials = aws sts assume-role --role-arn <<スイッチ先のロールARN>> --role-session-name <<任意のセッション名>> --profile <<スイッチ元の資格情報>> --serial-number <<arn:aws:iam::xxxxxxxxxxxx:mfa/xxxxxxxx:MFA割当>> --token-code <<MFAのトークン>> --region ap-northeast-1 --output json | ConvertFrom-Json

# 環境変数に一時的な資格情報を設定する
$Env:AWS_ACCESS_KEY_ID=$credentials.Credentials.AccessKeyId
$Env:AWS_SECRET_ACCESS_KEY=$credentials.Credentials.SecretAccessKey
$Env:AWS_SESSION_TOKEN=$credentials.Credentials.SessionToken

# profileを指定しないので、環境変数にセットした資格情報が利用される
aws sts get-caller-identity --region ap-northeast-1

image.png

.aws/config.aws/credentialsを利用する

AWS CLI での IAM ロールの使用

ドキュメントにあるように、credentialsファイルとconfigにスイッチ元の資格情報とスイッチ先のロールarnを設定しておくことにより。

cliコマンド実行時に--profileオプションで設定したプロファイルを指定するだけで、スイッチ先のロールの資格情報を引き受けてコマンドを実行してくれるようになります。

~/.aws/credentials
[<<profile名>>]
aws_access_key_id = <<スイッチ元のアクセスキー>>
aws_secret_access_key = <<スイッチ元のシークレットキー>>
~/.aws/config
[profile <<profile名>>]
role_arn = <<スイッチ先のロールarn>>
source_profile = <<profile alias>>
mfa_serial = <<MFAデバイスのARN>>

credentials

credentialsとconfigのサンプル

~/.aws/credentials

config

~/.aws/config

image.png

総評

.aws/config.aws/credentialsを利用するケースのほうが手軽かと思います。

またconfigcredentialsに記載してprofile指定で各ロールを切り替えられるように設定しておいて、PowerShellから下記で紹介しているPowerShellモジュールを併用するといい感じに切り替える事できます。

PowerShellでposh-awspをつかいaws-cliのprofileをいい感じに切り替える

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2