AWS

Linux(EC2)でAWS Vaultを使ってアクセスキーをセキュアに管理する

Linux(EC2)でAWS Vaultを動かしたのでメモっておきます。

基本的な使い方は、Macでやったときの以下記事をご参照ください。


本記事ではLinux固有のポイントに絞って説明します。

スポンサーリンク

手順

インストール

LinuxにHomebrew が入っていればMacと同じく

$ brew install aws-vault

でOKです。

入ってなければこちらから当該バージョンのバイナリファイルをダウンロードします。

$ sudo curl -sSL https://github.com/99designs/aws-vault/releases/download/v6.3.1/aws-vault-linux-amd64 -o /usr/local/bin/aws-vault
$
$ sudo chmod 755 /usr/local/bin/aws-vault
$
$ ll /usr/local/bin/
合計 14904
-rwxr-xr-x 1 root root 15257685  8月 25 10:12 aws-vault
$

コマンド実行

はじめに注意点

Linuxでのアクセスキー保存先は pass というアプリケーションfile(テキストファイルへの保存)になります。

passをyumでさくっとインストールしたかったのですが、どうやらこちらのBugzillaによると、passで使用しているgitコマンドのオプション-C(git-v1.8.5から有効)がCentOS7で使えないため、epelから削除されてしまったようです。

passをコンパイルしてインストールは、ちょっとめんどうだったので file で進めます。

クレデンシャル追加 – add

デフォルトの保存先がpassであるため、backend オプションで file を指定します。

アクセスキーとともにファイルアンロック用のパスフレーズを入力します。

## backendオプションを指定しないとエラーになる (passをインストールしていないので)
$ aws-vault add testuser
aws-vault: error: Specified keyring backend not available, try --help
$
$
## backendオプションを指定
$ aws-vault --backend=file add testuser
Enter Access Key ID: AKIAXXX
Enter Secret Access Key:
Enter passphrase to unlock /home/ec2-user/.awsvault/keys/:
Added credentials to profile "testuser" in vault
$


アクセスキーがホームディレクトリ配下に保存されます。

$ ls -l ~/.awsvault/keys/testuser
-rw------- 1 ec2-user ec2-user 728  8月 25 11:18 .awsvault/keys/testuser
$ 
$ cat ~/.awsvault/keys/testuser
eyJxxx...
$

中身はaws-vault を開発した99designsさんが同じく自分達で開発した keyringというツールを使用して暗号化されているようです。

AWSコマンド実行 – exec

常にbackend オプションの file 指定と、ファイルアンロック用のパスフレーズの入力を求められます。

$ aws-vault --backend=file exec dev  -- aws s3 ls
Enter token for arn:aws:iam::111111111111:mfa/testuser: 123456
Enter passphrase to unlock /home/ec2-user/.awsvault/keys/:
...
$
$
## MFAコードとは別でファイルアンロック用のパスフレーズの入力は毎回必要
$ aws-vault --backend=file exec dev  -- aws s3 ls
Enter passphrase to unlock /home/ec2-user/.awsvault/keys/:
...
$


以上、addとexecを例にとりましたが、それ以外のサブコマンドの基本的な使い方は、Macでやったときのこちらの記事をご参照ください。

Tips

便利な環境変数

設定しておくと運用が楽になる環境変数を2つご紹介します。両者ともコマンド実行時のパラメータ入力の手間を省いてくれます。

AWS_VAULT_BACKEND

コマンド実行時の backend オプションの指定が不要になります。

$ export AWS_VAULT_BACKEND=file
$
$ aws-vault exec dev  -- aws s3 ls
Enter token for arn:aws:iam::111111111111:mfa/testuser: 123456
Enter passphrase to unlock /home/ec2-user/.awsvault/keys/:
...
$

AWS_VAULT_FILE_PASSPHRASE

コマンド実行時のファイルパスフレーズの入力が不要になります。

$ aws-vault exec dev  -- aws s3 ls
Enter passphrase to unlock /home/ec2-user/.awsvault/keys/:
...
$
$ export AWS_VAULT_FILE_PASSPHRASE=hoge
$
## パスフレーズを聞かれなくなる
$ aws-vault exec dev  -- aws s3 ls
...
$



今回は以上です〜ノシ

参考

アリガト━━━ヾ(´∀`)ノ━━━━♪

GitHub aws-vault
How to install pass (password store) on EC2?
aws-vaultをLinux環境でも使う方法【セキュリティ向上】

関連書籍