〜MFA・複数アカウント・Role切り替えを安全&快適に〜
はじめに
AWSを業務で使っていると、こんな悩みありませんか?
- Access Key をファイルに平文で置きたくない
- MFA 必須で毎回の入力が面倒
- 本番・検証・個人アカウントの切り替えが混乱する
- 「今どのアカウントで操作してるか」不安になる
これらをまとめて解決してくれるのが aws-vault です。
本記事では、
「aws-vaultって何?」→「どう使う?」→「現場での実例」
という流れで、できるだけ噛み砕いて解説します。
aws-vault とは?
AWS認証情報を安全に管理し、MFAやAssumeRoleを簡単にするCLIツールです。
ざっくり特徴
- Access Key を OSのキーチェーンに安全保存
- **一時クレデンシャル(STS)**を自動取得
- MFA / Role切り替えをほぼ意識せず使える
- コマンド実行後、認証情報は自動破棄
aws-vault を使わない場合との比較
| 項目 | 通常のAWS CLI | aws-vault |
|---|---|---|
| 認証情報 | ファイルに平文 | OSの安全領域 |
| MFA | 毎回手動 | 必要時のみ |
| Role切替 | 設定が複雑 | プロファイル切替だけ |
| 複数アカウント | 混乱しがち | 明確に分離 |
| 事故防止 | △ | ◎ |
インストール
macOS
brew install aws-vault
確認
aws-vault --version
基本構成の考え方(重要)
aws-vaultを理解するコツはこれ👇
IAMユーザーの実体 → aws-vault
Role・振る舞い → ~/.aws/config
-
~/.aws/credentialsは基本触らない - 設計は
~/.aws/configに集約する
実例①:IAMユーザーを登録する(最初の一歩)
aws-vault add myuser
入力内容:
- Access Key ID
- Secret Access Key
- MFAデバイス(任意だが推奨)
👉 登録後、キーは キーチェーンに保存される
👉 ファイルに平文では残らない
実例②:最小構成で使ってみる(Roleなし)
~/.aws/config
[profile myuser]
region = ap-northeast-1
実行
aws-vault exec myuser -- aws s3 ls
- 一時クレデンシャルで実行
- コマンド終了後、環境変数は自動破棄
実例③:一番よくある構成(IAMユーザー → Role)
構成イメージ
IAMユーザー(ログイン)
↓ MFA
AssumeRole
↓
本番アカウント
~/.aws/config
[profile myuser]
region = ap-northeast-1
[profile prod]
role_arn = arn:aws:iam::123456789012:role/AdminRole
source_profile = myuser
mfa_serial = arn:aws:iam::111111111111:mfa/myuser
region = ap-northeast-1
実行
aws-vault exec prod -- aws ec2 describe-instances
👉
- myuserでログイン
- MFA認証
- AdminRoleをAssume
- 一時権限でコマンド実行
実例④:シェルを起動して作業する
複数コマンドを叩く場合はこちらが便利。
aws-vault exec prod
aws sts get-caller-identity
aws s3 ls
terraform plan
exitすると認証情報は破棄される。
実例⑤:本番・検証アカウントを切り替える
[profile stg]
role_arn = arn:aws:iam::222222222222:role/AdminRole
source_profile = myuser
[profile prod]
role_arn = arn:aws:iam::333333333333:role/AdminRole
source_profile = myuser
aws-vault exec stg
aws-vault exec prod
👉 プロファイル名を変えるだけ
👉 誤操作防止に非常に有効
実例⑥:踏み台Role(セキュリティ強化)
[profile jump]
role_arn = arn:aws:iam::111111111111:role/JumpRole
source_profile = myuser
[profile prod]
role_arn = arn:aws:iam::333333333333:role/AdminRole
source_profile = jump
- 直接本番に入れない構成
- 大規模組織でよく使われる
実例⑦:Terraformと一緒に使う
aws-vault exec prod -- terraform plan
aws-vault exec prod -- terraform apply
- 永続的な認証情報を残さない
- CI/CDでも事故りにくい
実例⑧:今どの権限か確認する
事故防止のため、必ず確認。
aws sts get-caller-identity
よくあるハマりポイント
❌ credentials に直接書く
👉 aws-vaultのメリット消失
❌ プロファイル名を曖昧にする
👉 prod-admin / prod-readonly など明確に
❌ MFA設定を忘れる
👉 本番操作は必ずMFA
まとめ
- aws-vault は AWSを安全に使うための必須ツール
- 認証情報は aws-vault、設計は config
- プロファイルを分けるだけで事故率が激減
- Terraform / CI/CD と相性抜群
「AWSを仕事で触るなら、まずaws-vault」