aws-vault のすすめ

Daichi Murota

2023.1.19

aws-vault とは

  • AWS の認証情報をローカルに安全に保管する事が出来る CLI ツール
  • GitHub Star 7K⭐ (2022-12-22現在)
  • brew で下記のコマンドのようにインストール可能
brew install --cask aws-vault

リポジトリ

https://github.com/99designs/aws-vault

使うことになった背景

  • あるお客様の案件では、各 AWS 環境に IAM アカウント1つずつ作られており、環境が大量にある為、切り替えが大変
  • IAM ユーザーのアクセスキーを生で保管しておくのが不安

aws-valut で出来る事

AWS のクレデンシャルをローカルに安全に保存する事が出来る

下記のローカルシークレットストレージに対応しています。

使用する際は短時間なクレデンシャルを使用し、安全に使用する事が出来る

  • AWS STS を使って一時的なセキュリティ認証情報 (Temporary security credentials) を取得する
  • アプリ等 (AWS CLI や AWS SDK 、インフラ自動化ツール等) は一時的な認証情報を使って AWS にアクセスする

AWS 公式文献:IAM の一時的な認証情報

環境の切り替えが簡単に出来る

実際の使い方は下記の通りです。

登録時

aws-value add コマンドを用いて登録します。

$ aws-vault add hogehoge-dev

Enter Access Key Id: ABDCDEFDASDASF
Enter Secret Key: %%%

# 複数追加可能
$ aws-vault add hogehoge-stg
# ...

使用時

aws-value exec コマンドを用いて awscli を実行します。

# コマンドの実行
$ aws-vault exec hogehoge-dev -- aws s3 ls
bucket_1
bucket_2

コマンドを指定せずに exec を実行すると、
環境変数 (AWS_SECRET_ACCESS_KEY 等) に一時的な認証情報が指定された状態でサブシェルが生成されます。

$ aws-vault exec hogehoge-dev

また、aws-valut login で、AWS Web Console にログインできます。

# aws-vault login hogehoge-dev

また、これ以外にもサーバーモードというものがあり、裏で EC2 の metadata endpoint を模して、一時的な認証情報を取得出来るサーバーを立ててくれます。ユースケースは Terraform 等長時間アプリから使用される際、など活用できると思います。

細かい点

以下、その他使用時の細かい留意点です。

  • $HOME/.aws/credentials は勿論不要。$HOME/.aws/config はそのまま使用できます
  • なんらかの事情で、暗号化している元々のクレデンシャルを使いたい時は -no-session フラグを付けます

EKS クラスタを使う際の注意点

aws eks update-kubeconfig .kubeconfig にクラスタ情報を追加した場合、 aws コマンドを用いて EKS にアクセスする為のトークンを取得しています。
その為、EKS にアクセスする際は、 aws-vault exec でクレデンシャルを環境変数に設定してから kubectl で各種操作を行う必要があります。

複数のクラスタを使用している際は kubectx を使われている方が多いかと思いますが、 aws-vault, kubectx の両方の切り替えを忘れずに行うことが必要です。

$ aws-vault exec hogehoge-dev
$ kubectx arn:aws:eks:ap-northeast-1:.....
$ kubectl cluster-info

感想

いかがでしたでしょうか。

煩雑な AWS の認証情報の管理をセキュアに行えて、対象の環境をすぐに切り替えることができたり
Switch Role するケースや、MFA や SSO にも対応しているようで、作業を効率化できるツールかと思います。

みなさまもぜひ機会があれば活用してみてください。

ブログ一覧へ戻る

お気軽にお問い合わせください

SREの設計・技術支援から、
SRE運用内で使用する
ツールの導入など、
SRE全般についてご支援しています。

資料請求・お問い合わせ