背景
AWSのアカウント構成
- ユーザ管理用のアカウント
- 開発環境
- 本番環境
のような構成になっており,それまでは各AWSアカウントごとにaws-cli用のアカウントを作ってaws-cli実行時に --profile
で指定していましたが,AWS-CLIでもスイッチロールができることを知ったのでやり方を記載します。
やり方
-
GUIでユーザ管理用のアカウント(スイッチロール元)にログイン
-
IAMユーザの認証情報を取得して
~/.aws/credentials
に記載します。ここではdefault
にしていますが,別の値でも問題ないです。[!NOTE]
default
にするとその認証情報が--profile
で明示的に指定しない際に使われます。# ~/.aws/credentials [default] aws_access_key_id=xxxxxxxxxxxxxxxxxxxx aws_secret_access_key=xxxxxxxxxxxxxxxxxxxxxx
-
必要ならばMFAの設定をします。(組織のポリシー等で強制されていることもある)
MFA作成時に決めたMFA device nameを後に~/.aws/config
に記載します。
-
スイッチロール用のconfigを記載します。
# ~/.aws/config [profile super-admin-config] # 好きな名前をつける region = ap-northeast-1 role_arn = arn:aws:iam::<スイッチロール後のAWSアカウントID>:role/<Role名> mfa_serial = arn:aws:iam::<MFAを登録したAWSアカウントID>:mfa/<MFAのdevice name> source_profile = default # ~/.aws/credentialsのプロファイル名を指定
-
切り替わっているか確認します。
aws sts get-caller-identity --profile super-admin-config { "UserId": "xxxxxxxxxxxxxxxxxx", "Account": "<スイッチロール後のAWSアカウントID", "Arn": "arn:aws:iam::<スイッチロール後のAWSアカウントID>:user/<ユーザ名>" }
感想
aws-cliでスイッチロールすることで
- 複数の認証情報の管理
- 複数のaws-cli用のアカウント管理
をする必要がなくなりつつ,cliで快適に作業できるようになりました。