🔑

【アクセスキーの平文保存から脱却】AWS Valutを利用する。(MAC環境)

2022/11/06に公開

aws-vaultとは

AWS Vault は、開発環境で AWS認証情報を安全に保存してアクセスするためのツールです。

AWS Vault は、IAM 認証情報をオペレーティング システムの安全なキーストアに保存し、それらから一時的な認証情報を生成して、シェルとアプリケーションに公開します。AWS CLI ツールを補完するように設計されており、 のプロファイルと設定を~/.aws/config認識します。
詳細については、お知らせのブログ投稿をご覧ください。
https://github.com/99designs/aws-vault

上記お知らせのブログ投稿
エンジニアのマシンで AWS 認証情報を保護する

前置き

今回は他記事を参考に自分の環境でもやってみたという内容ですので、作成者である私をオリジナルとする記事要素はありません。

素晴らしい機能だと感じたので皆様のセキュリティ向上のきっかけになればと思い取り上げた次第です。

普段公式ドキュメントや他記事から、">"で説明を引用させていただく機会が多いので線引きが難しいですが、手順の説明文まま再掲する意図はないので、次章でリンクを載せているオリジナル記事を是非参考にしてください。

早速 aws-vaultを使ってみたいと思います。

こちらのmicroCMS 様のaws-vault を使って AWS のアクセスキーを暗号化して扱おうを参考に作業をしてみます。

丁寧な説明がついていますので、実際の作業は上記リンクをご覧ください。(私も元記事を参考に実行した結果を一応畳んでいますが↑を簡素にしただけのものです。)

実行結果

aws-vaultインストール

$ brew install --cask aws-vault
==> Downloading https://github.com/99designs/aws-vault/releases/download/v6.6.0/aws-vault-darwin-a
==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/
######################################################################## 100.0%
==> Installing Cask aws-vault
==> Linking Binary 'aws-vault' to '/usr/local/bin/aws-vault'
🍺  aws-vault was successfully installed!

ヴァージョン確認

aws-vault --version
v6.6.0

アクセスキー登録

※Secret Access Keyは文字入力が見えないようになっているので一見わかりにくいです。

$ aws-vault add demo-accesskey
Enter Access Key ID: AKIAXXXXXXXXXXXXXXXX
Enter Secret Access Key:


パスワードの作成を求められます。


完了したようです。

$ aws-vault add demo-accesskey
Enter Access Key ID: AKIAXXXXXXXXXXXXXXXX
Enter Secret Access Key:
Added credentials to profile "demo-accesskey" in vault

登録済アクセスキー一覧を表示

$ aws-vault ls
Profile                  Credentials              Sessions
=======                  ===========              ========
default                  -                        -
demo-accesskey           demo-accesskey           -

動作確認 S3バケットを作成

$ aws-vault exec demo-accesskey -- aws s3 mb s3://aws-vault-test


先程作成したパスワードを入力。


こちらも同じパスワードを入力。


作成完了したようです。

$ aws-vault exec demo-accesskey -- aws s3 mb s3://aws-vault-test
make_bucket: aws-vault-test

S3コンソールを確認するとバケットが無事作成されていました。


復号されたアクセスキー確認

(X部分は実際は表示されています。)

aws-vault exec demo-accesskey --no-session -- env | grep AWS_
AWS_VAULT=demo-accesskey
AWS_DEFAULT_REGION=us-east-1
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=AKIAXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

セッション期限調整

open ~/Library/Keychains/aws-vault.keychain-db


左サイドカラムのaws-vaultを右クリック


希望する値に変更(デフォルトは5でした。)

普通のコマンドでも使えるように設定する。

vi ~/.aws/config


6行目の部分を追加

  1 [default]
  2 region=us-east-1
  3 output=json
  4
  5 [profile demo-accesskey]
  6 credential_process=aws-vault exec demo-accesskey --json --prompt=osascript


普通のコマンドも使えるようになりました。
(事前に先程作成したS3バケットにテスト用にオブジェクトをアップロードして確認)

$ aws --profile demo-accesskey s3 ls s3://aws-vault-test
2022-11-06 15:07:47         19 index.html

結果

私の環境でも無事出来ました。

その他

前提と課題に丁寧に言及しています。
https://qiita.com/kangaechu/items/cb8f68e3866ee5af71c8

CLI経由でのマネコンへのログインについても書いてあります。
https://dev.classmethod.jp/articles/aws-vault/

aws-vaultを知るきっかけになったZENNのBook
https://zenn.dev/himekoh/books/202210261312/viewer/issue

以上でした。

有難うございました。

Discussion