背景
AWS CLIやterraformでスイッチロール時にMFAを利用する際、コマンドを実行する都度MFAコードを入力するのは煩雑です。AWS Vaultを使うとスイッチロール後のプロファイルのシェルに入れるようになります。
構成
defaultプロファイルでIAM ユーザーによるログインをし、some-profile
というプロファイルに設定しているAWSアカウントにスイッチロールする、という構成を前提に、本記事は記載します。具体的には以下の設定を前提とします。
% cat ~/.aws/config [default] region = ap-northeast-1 output = json cli_pager=cat [profile some-profile] source_profile = default role_arn = arn:aws:iam::1234567890:role/some_role_for_delegation mfa_serial = arn:aws:iam::987654321:mfa/someone@example.com
% cat ~/.aws/credentials [default] aws_access_key_id=AKIA..... aws_secret_access_key=........ [some-profile] source_profile = default role_arn = arn:aws:iam::1234567890:role/some_role_for_delegation mfa_serial = arn:aws:iam::987654321:mfa/someone@example.com
設定手順
homebrewでコマンドをインストールします。
% brew install --cask aws-vault
インストールの確認を兼ねてコマンドを打ってみます。
% aws-vault list Profile Credentials Sessions ======= =========== ======== default - - some-profile - -
default profileにcredentialを追加します。以下のコマンドを実行すると、IAMキーとシークレットを求めるプロンプトが出るので、入力します。
% aws-vault add default
最後に、以下のコマンドを実行します。するとMFAのコードを入力を求めるプロンプトが出るので、入力します。
% aws-vault exec some-profile Starting subshell /bin/zsh, use `exit` to exit the subshell
以上で、上記コマンドを実行したターミナルではsome-profileにスイッチロールした状態になります。
本サイトの更新情報は、Twitterの株式会社プレセナ・ストラテジック・パートナーズエンジニア公式アカウントで発信しています。ご確認ください。