副業でWSL1にAWS Vaultを導入する必要があったので、その手順をメモします。なお、こちらのIssueコメントを読めば、9割完了です。英語が読める人はこちらを参考にしてください。
環境
- WSL1
- Ubuntu 20.04.2 LTS (Focal Fossa)
- AWS Vault
- v6.3.1
※ WSL2でも同じような手順で設定している記事を見かけたので、できると思います。
前提条件
- AWS CLIが既に使えること
- 動作確認に使用します。インストール方法は公式を参考にしてください。
方法
AWS Vaultをダウンロードする
- 動作確認に使用します。インストール方法は公式を参考にしてください。
AWS Vaultをダウンロードします。最新のバージョンはこちらから確認できますので、必要なバージョンを指定してください。
AWS_VAULT_VERSION="v6.3.1" && \ wget -O aws-vault "https://github.com/99designs/aws-vault/releases/download/${AWS_VAULT_VERSION}/aws-vault-linux-amd64"
AWS Vaultをインストールする
AWS Vaultをインストールします。
sudo mv aws-vault /usr/local/bin/ && \ sudo chmod +x /usr/local/bin/aws-vault
AWS Vaultが依存しているツールのPassとGnuPGを導入する
AWS VaultはOSの機密情報ストアを使用するため、暗号化と復号を行うPass
とGnuPG
を導入する必要があります。
sudo apt-get update && sudo apt-get install -y pass gnupg
暗号化/復号に使用する鍵を生成する
鍵を生成します。インタラクティブに名前とメールアドレス、パスワードが問われますので、画面に沿って入力してください。パスワードを問われる画面はログに残りませんが、画面通りに入力していくとこのような文言が出力されます。
gpg --gen-key
gpg (GnuPG) 2.2.19; Copyright (C) 2019 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Note: Use "gpg --full-generate-key" for a full featured key generation dialog. GnuPG needs to construct a user ID to identify your key. Real name: kirimaru Email address: hogehoge@sample.com pub rsa3072 2021-07-03 [SC] [expires: 2023-07-03] 844E426A53A64C2A916CBD1F522014D5FDBF6E3D uid kirimaru <hogehoge@sample.com> sub rsa3072 2021-07-03 [E] [expires: 2023-07-03]
鍵をPassに登録する
生成した鍵のpubを登録します。
pass init 844E426A53A64C2A916CBD1F522014D5FDBF6E3D
暗号化/復号でパスワードを入力できるようにする
GPG_TTYの設定を行うことで、暗号化/復号のパスワードを入力する画面に遷移できます。
~/.bashrc
に次の設定した後、source ~/.bashrc
を実行して設定してください。
export GPG_TTY=$(tty)
もし設定しない場合、鍵を登録して5分間は有効期限内なので、検証自体は可能ですが、5分経過すると有効期限が切れて検証ができなくなります。設定しておきましょう。
# 対応しなかった時のメッセージ gpg: decryption failed: No secret key
AWS Vaultのプロファイルを作成する
AWS Vaultのプロファイルを作成します。今回はstagingプロファイルを使用します。
aws-vault add staging
AWS VaultのプロファイルにMFAデバイスのARNを登録する
~/.aws/config
に先ほど登録したプロファイルが記載されています。こちらに、MFAデバイスのARNを追記します。
MFAデバイスのARNは、マネジメントコンソールのIAMのユーザー詳細ページから確認できます。
[profile staging] mfa_serial=arn:aws:iam::999999999999:mfa/kirimaru
AWS Vaultの動作確認をする
作成したプロファイルとAWS CLIのコマンドを組み合わせて実行します。
ここまで正しく設定できていれば、鍵のパスワード入力画面と6桁のMFA認証コードを確認され、正しい結果が返ってくるはずです。
# aws-vault exec プロファイル -- コマンド aws-vault exec staging -- aws s3 ls
Enter token for arn:aws:iam::999999999999:mfa/kirimaru: {6桁のMFA認証コード}
終わりに
WSL と AWS Vaultで調べてたのであまり記事が見つからなかったのですが、Linux と AWS Vaultで調べたらたくさん記事が出てきました。基本的に今後もWSLではなく、Linuxで調べた方が解決が早そうです。
この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考
- https://github.com/99designs/aws-vault/issues/683#issuecomment-825176641
- https://hackers-high.com/aws/aws-vault-on-linux