AWS CLI S3コマンドシリーズの第4弾として、今回は認証管理について書きます。
AWS CLIを使う上で避けて通れないのが認証情報(クレデンシャル)の管理です。安全に管理するためのツール「AWS Vault」を紹介します。
■ なぜAWS Vaultが必要なのか
AWS CLIを使う際、通常は認証情報を ~/.aws/credentials ファイルに平文で保存します。
この方法には以下のようなリスクがあります:
・認証情報が平文でファイルに保存される
・誤ってGitにコミットしてしまう可能性
・マルウェアやスクリプトから簡単に読み取られる
・複数人で同じマシンを使う場合にアクセスされやすい
AWS Vaultは、これらの認証情報を**暗号化して安全に保存**し、必要な時だけ一時的な認証情報(セッショントークン)を生成してくれるツールです。
■ AWS Vaultとは
AWS Vaultは、AWS認証情報を安全に保存・管理するためのオープンソースツールです。
【主な特徴】
・認証情報をOSのキーチェーン(macOS Keychain、Windows Credential Manager等)に暗号化して保存
・一時的なセッショントークンを自動生成
・MFA(多要素認証)に対応
・複数のAWSアカウント・ロールの切り替えが簡単
・~/.aws/credentialsファイルに平文を保存しない
GitHub: https://github.com/99designs/aws-vault
■ AWS Vaultのインストール
【macOS(Homebrew)】
brew install aws-vault
【Windows】
# Chocolateyを使う場合
choco install aws-vault
■ 基本的な使い方
【1. 認証情報の追加】
aws-vault add myprofile
実行すると、Access Key IDとSecret Access Keyの入力を求められます。
入力した認証情報は暗号化されてキーチェーンに保存されます。
【2. AWS CLIコマンドの実行】
aws-vault exec myprofile — aws s3 ls
aws-vault execは、指定したプロファイルの認証情報を使って一時的なセッションを作成し、
そのセッション内でコマンドを実行します。
【3. 複数コマンドを実行する場合】
# シェルセッションを開始
aws-vault exec myprofile
# プロンプトが変わり、このシェル内で複数のAWS CLIコマンドを実行可能
aws s3 ls
aws s3api list-objects-v2 –bucket mybucket –prefix path/
exit # セッション終了
【4. 保存されている認証情報の確認】
aws-vault list
■ ~/.aws/credentialsとの違い
【従来の方法(~/.aws/credentials)】
・認証情報が平文でファイルに保存される
・長期的な認証情報(Access Key/Secret Key)を直接使用
・セキュリティリスクが高い
【AWS Vaultを使う方法】
・認証情報は暗号化されてキーチェーンに保存
・一時的なセッショントークン(通常15分〜1時間)を使用
・~/.aws/credentialsファイルは不要(または空のまま)
・セキュリティが大幅に向上
■ まとめ
・AWS Vaultは認証情報を暗号化して安全に管理するツール
・~/.aws/credentialsに平文で保存するリスクを回避できる
・aws-vault exec でコマンドを実行するだけで簡単に使える
・一時的なセッショントークンを自動生成してくれる
・複数アカウント・プロファイルの管理が簡単
今回はここまで。