AWS CLI を AssumeRole と MFA で使う

  • AWS CLI で AWS にアクセスする際に AssumeRole で別の AWS アカウントの IAM ロールを引き受け、更に MFA でログインする。

前提条件

  • AWS CLI をインストールしていること。
  • IAM に AssumeRole の権限が付与されている。
  • MFA の設定が済んでいる。

事前に確認しておく情報

  • アクセスキー
  • シークレットアクセスキー
  • AssumeRole で引き受けるロール ARN
  • MFA の ARN

初期設定

  • AWS のアクセスキーとシークレットアクセスキーを設定する。
1
2
3
4
5
$ aws configure
AWS Access Key ID [None]:<アクセスキー>
AWS Secret Access Key [None]:<シークレットアクセスキー>
Default region name [None]:ap-northeast-1
Default output format [None]:text
  • 上記のコマンドを実行すると入力した情報が保存されたファイルが作成される。
1
2
3
~/.aws
 ├ config
 └ credentials
  • ~/.aws/configを下記のように変更する。
  • profile_name:任意の名前。CLI を開くたびに入力するため入力しやすいものがおすすめ。
  • role_arn:AssumeRole するロール ARN。
  • mfa_serial:MFA デバイスの ARN。
  • source_profile:スイッチロール元のプロファイル名。
[default]
region = ap-northeast-1
output = text

[profile profile_name]
role_arn = arn:aws:iam::yyyyyyyyyyyy:role/zzz
mfa_serial = arn:aws:iam::xxxxxxxxxxxx:mfa/name
region = ap-northeast-1
source_profile = default

CLI で AssumeRole できるか確認

1
2
3
$ export AWS_DEFAULT_PROFILE=上記で設定したprofile_name
$ aws sts get-caller-identity
Enter MFA code for arn:aws:iam::XXXXXXXXXXXX:mfa/AAAA:<MFAコードを入力する>
  • MFA コード入力後に表示される AccoutID がスイッチロール先の AWS アカウントになっていれば成功。

参考

【小ネタ】AWS CLI でスイッチロールして作業を行うための設定をやってみた

updatedupdated2020-07-212020-07-21