aws環境をいじるときに、何かと便利に使っているaws-vault。
今回新しい環境にaws-vaultをインストールする機会があったので備忘録も兼ねてインストール手順を残しておきます。
aws-vaultとは?
そもそもaws-vaultとはなに?という話ですが、AWSの認証情報を安全に保存してアクセスするためのツールです。一時的な認証情報を生成して、シェルやアプリケーションに渡して使用することができます。
awscliとの親和性もあって、~/.aws/configのプロファイルと設定をして使って行くことになります。
必要なもの
必要なものは以下。
- awscli
もともとawscliも入っていたのですがこれを機会にawscliもv2にバージョンアップしました。v2のインストール手順は過去に記事にしたのでそちらも参考になれば。
インストール
公式ページに書いてある通りに実行。バイナリとして提供されています。ダウンロードしてきてパーミッションを変更すれば完了。単独バイナリとしてインストールできるのは個人的に非常に好印象。
sudo curl -fsSLo /usr/local/bin/aws-vault https://github.com/99designs/aws-vault/releases/download/v6.2.0/aws-vault-linux-amd64 sudo chmod +x /usr/local/bin/aws-vault
バックエンド設定を追加します。gpg keyなどのキーストアと連携ができるらしいですが、今回はファイルベースのパスワードで実行します。
export AWS_VAULT_BACKEND=file export AWS_VAULT_FILE_PASSPHRASE=yatta47
アカウント登録を行います。
$ aws-vault add yatta47 Enter Access Key ID: AKIXXXXXXXXXXXXXXXXXXXXXXXX Enter Secret Access Key: Added credentials to profile "yatta47" in vault
その後、連携したいProfileを~/.aws/configに追加します。こんな感じのやつ。
[profile test-env] source_profile = yatta47 role_session_name = test-env role_arn = arn:aws:iam::123456789:role/AdminRole
追加されているかどうかを確認。
$ aws-vault ls Profile Credentials Sessions ======= =========== ======== yatta47 yatta47 - test-env - -
これで完了です。
使い方
--
の後ろに実行するawscliのコマンドを渡してあげる感じになります。
aws-vault exec yatta47 -- aws s3 ls
便利。
まとめ
裏側では、入力したアクセスキーをもとにSTSを実行して、一時クレデンシャルを取得してそれを環境変数にセットしてくれているんじゃないかなと思っています。(aws-vault導入前は手動でそれを一時期やっていたので)
複数の環境をSwitchRoleで切り替えてメンテナンスや操作するには必須のツールかと思います。
これがあるのとないのとではだいぶ作業の差が出てくるので、複数環境を扱う方は導入しておいたほうがいいツールだと思います。
それでは。