きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

WSLでAWS Vaultを使えるように設定する

副業で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の機密情報ストアを使用するため、暗号化と復号を行うPassGnuPGを導入する必要があります。

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でのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考

f:id:nainaistar:20210703134201p:plain