Jump アカウント方式における AWS CLI セットアップ手順
こんにちは!コンサルティング3部のくろすけです!
AWSを導入いただく際に AWS Organizations (AWS IAM Identity Center による IAM ユーザー管理) を使用しない場合に、Jump アカウント方式をご検討いただくことがしばしばあります。
本記事では、Jump アカウント方式において、ローカル環境で aws-vault を利用して AWS CLI をセキュアに利用するための設定手順をまとめます。
概要
Jump アカウント方式
本記事では、Jump アカウント方式がどのようなものかについては詳しく取り上げません。詳しくは以下の記事をご覧ください。
アカウント構成

本記事では、上図のように利用者の IAM ユーザーを Jump アカウントへ集約する構成を前提とします。
利用者は IAM ユーザー名・パスワードに加えて MFA で Jump アカウントへサインインします。(今回の手順は MFA の強制設定がされている環境での手順となっています。)
Jump アカウントの IAM ユーザーには、対象アカウントの IAM ロールへ sts:AssumeRole する権限を IAM グループ経由で付与します。
ロールへのスイッチ時には AWS STS から一時的な認証情報が発行され、利用者はそのロールの権限で作業できます。
対象アカウントは、本番・ステージング・開発の 3 環境を想定します。各アカウントには「管理者」「開発者」「運用者」の IAM ロールを用意し、Jump アカウントの IAM グループごとに、スイッチを許可するロールと環境を制御します。
このため、利用者の追加・権限変更・削除は、原則として Jump アカウントの IAM ユーザーと IAM グループの管理だけで完結します。
IAM ユーザーの準備
- Jump アカウントの IAM ユーザーが発行済みであること
- Jump アカウントの IAM ユーザーが MFA を使用して AWS アカウントにログインできること
やってみた
1. AWS CLI のインストールする
今回は現在のユーザーのみに AWS CLI をインストールします。
今回は Windows 用の AWS CLI MSI インストーラを使用します。
-
Windows 用の AWS CLI MSI インストーラ (64 ビット) をダウンロードして実行
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2-User.msi -
AWS CLI のバージョンを確認
awsが認識されない場合は、AWS CLI をインストールした後に PowerShell を再起動してください。aws --versionAWS CLI のバージョンが表示されれば、インストールは完了です。
AWS CLI インストールの詳細は、以下の AWS 公式ドキュメントをご確認ください。
2. aws-vault のインストール
今回は aws-vault を使用して AWS CLI をセキュアに利用するため、aws-vault をインストールします。
-
aws-vault のインストール
それぞれの環境に合わせてインストールしてください。(前述のリポジトリにインストール方法が記載されています。)
下記は Windows 環境でのインストールコマンドです。choco install aws-vault -
aws-vault のバージョンを確認
aws-vault --versionaws-vault のバージョンが表示されれば、インストールは完了です。
3. Jump アカウントの IAM アクセスキーを取得する
-
AWS マネジメントコンソールにログインし、対象の IAM ユーザーを選択

-
セキュリティ認証情報タブを選択
-
アクセスキーセクションにて、アクセスキーを作成を選択
-
任意で説明タグを設定(今回は設定しない)し、
アクセスキーを作成を選択
-
csv ファイルをダウンロードし、完了

4. aws-vault で Jump アカウントの認証情報を設定する
Jump アカウントの IAM ユーザーに発行されたアクセスキーを、aws-vault に登録します。
-
aws-vault に認証情報を登録
aws-vault add default Enter Access Key ID: <Jump アカウントのアクセスキー ID> Enter Secret Access Key: <Jump アカウントのシークレットアクセスキー> Enter MFA Device ARN (If MFA is not enabled, leave this blank): <Jump アカウントの MFA デバイス ARN> Added credentials to profile "default" in vault -
$HOME\.aws\configに下記の設定を追加default プロファイルから、それぞれの環境の IAM ロールにスイッチする構成となります。
今回は、default、prd、stg、dev の 4 つのプロファイルを作成しています。
default 以外のプロファイル名は環境に合わせて適宜ご変更ください。(例:${SYSTEM_NAME}-${ENV}など)[default] credential_process = aws-vault export --no-session --format=json default mfa_serial = <Jump アカウントの MFA デバイス ARN> region = ap-northeast-1 output = json [profile prd] source_profile = default mfa_serial = <Jump アカウントの MFA デバイス ARN> role_arn = <本番アカウントのスイッチ先 IAM ロール ARN> region = ap-northeast-1 [profile stg] source_profile = default mfa_serial = <Jump アカウントの MFA デバイス ARN> role_arn = <ステージングアカウントのスイッチ先 IAM ロール ARN> region = ap-northeast-1 [profile dev] source_profile = default mfa_serial = <Jump アカウントの MFA デバイス ARN> role_arn = <開発アカウントのスイッチ先 IAM ロール ARN> region = ap-northeast-1 -
動作確認
手順 2 で設定したプロファイル名を指定して、動作確認を行ってください。
aws sts get-caller-identity --profile default aws sts get-caller-identity --profile prd aws sts get-caller-identity --profile stg aws sts get-caller-identity --profile dev対話形式で MFA のコードが求められるので、入力してください。
それぞれのコマンドで下記のような結果が表示されれば、設定は完了です。{ "UserId": "AROAXXXXXXXXXXXXX:botocore-session-XXXXXXXXXX", "Account": "<アカウント ID>", "Arn": "arn:aws:sts::<アカウント ID>:assumed-role/<アカウント名>/botocore-session-XXXXXXXXXX" }
5. 認証情報の削除
アクセスキー、シークレットキーを csv でダウンロードした場合には、必要がなければ漏洩事故防止のために csv ファイルを完全に削除してください。
アクセスキー、シークレットキーは権限があれば再発行が可能なので、基本的には削除を推奨します。
あとがき
手順をご相談いただくこともあるため、改めて汎用的な手順としてまとめてみました。
実際の環境では、アカウント ID、IAM ロール名、プロファイル名、リージョンを管理者の指示に従って置き換えてください。
当初 Windows 環境向けの手順としていたんですが、異なるのはインストールコマンドくらいだったので、Mac や Linux 環境でも少し読み替えていただければ再現可能かと思います。
以上、くろすけでした!







