注目キーワード
  1. AWS
  2. Python

Ubuntu 20.04 LTS に AWS Vault をインストール

  • 2021年9月20日
  • 2021年9月20日
  • AWS, Linux
  • 19view
AWS

Ubuntu Desktop 20.04 LTS に AWS Vault をインストールして、基本的な操作をするまでの手順です。

AWS Vault とは

ざっくりいうと、AWS のアクセスキーを OS のキーストアに保存することができるソフトウェアです。Windows の場合は「資格情報マネージャー」に保存され、Linux の場合は「Pass」などのパスワード管理ツールに保存されます。
詳細については以下のサイトをご参照ください。
GitHub

A vault for securely storing and accessing AWS credentials i…

前提条件

AWS Vault の動作確認のため、AWS CLI をインストールしておく必要があります。
AWS CLI のインストール方法については、以下の記事をご参照ください。

関連記事

Ubuntu Desktop 20.04 LTS に AWS CLI をインストールして、基本的な操作をするまでの手順です。 AWS CLI とは コマンドラインシェルのコマンドを使って AWS&n[…]

AWS Vault の導入

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 をインストール

$ sudo mv aws-vault /usr/local/bin/ && \
> sudo chmod +x /usr/local/bin/aws-vault

AWS Vault のバージョン確認

$ aws-vault --version
v6.3.1

パスワード管理ツールの導入

パスワード管理ツールとして Pass と GunPG をインストールします。

$ 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.

注意: 全機能の鍵生成には "gpg --full-generate-key" を使います。

GnuPGはあなたの鍵を識別するためにユーザIDを構成する必要があります。

本名: mytechblog
電子メール・アドレス: example@gmail.com
次のユーザIDを選択しました:
    "mytechblog <example@gmail.com>"

名前(N)、電子メール(E)の変更、またはOK(O)か終了(Q)? O
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
たくさんのランダム・バイトの生成が必要です。キーボードを打つ、マウスを動か
す、ディスクにアクセスするなどの他の操作を素数生成の間に行うことで、乱数生
成器に十分なエントロピーを供給する機会を与えることができます。
gpg: 鍵F6E253C380558F2Eを究極的に信用するよう記録しました
gpg: 失効証明書を '/home/hatkobelab/.gnupg/openpgp-revocs.d/02936230B1E4855DD5D9B79EF6E253C380558F2E.rev' に保管しました。
公開鍵と秘密鍵を作成し、署名しました。

pub   rsa3072 2021-09-20 [SC] [有効期限: 2023-09-20]
      02936230B1E4855DD5D9B79EF6E253C380558F2E
uid                      example <example@gmail.com>
sub   rsa3072 2021-09-20 [E] [有効期限: 2023-09-20]

AWS のアクセスキーの保存場所を公開鍵(pub)を使って作成します。

$ MY_PUBLIC_KEY="02936230B1E4855DD5D9B79EF6E253C380558F2E"
$ pass init "$MY_PUBLIC_KEY"

AWS Vault プロファイル作成

任意の名前(本例では staging-admin)でプロファイルを作成し、IAM ユーザーアクセスキーを登録します。

$ MY_PROFILE_NAME="staging-admin"
$ aws-vault add "$MY_PROFILE_NAME"
Enter Access Key ID: ***********
Enter Secret Access Key: ***********
Added credentials to profile "staging-admin" in vault
Secret Access Key を入力後、Access Key および Secret Access Key を OS に保存されます。この保存した情報にアクセスするための「新しいパスワード」の入力が求められます。しかし、プロファイル作成を SSH 経由でコマンドを実行すると、次のエラーがでる場合があります。

aws-vault: error: add: No such interface “org.freedesktop.DBus.Properties” on object at path /

この場合は、ローカル上でターミナルを起動してコマンドを実行すると解決します。

作成したプロファイルを確認します。

$ aws-vault ls
Profile                  Credentials              Sessions                    
=======                  ===========              ========                    
MYPROFILE                -                        -                           
staging-admin            staging-admin            sts.GetSessionToken:38m39s  

AWS Vault の実行

作成した AWS Vault プロファイルを使って、AWC CLI のコマンドを実行できます。

AWS Vault を使って何が嬉しいか・・ですが、AWS CLI の場合、認証情報(Access Key および Secret Access Key)は 1 つしか登録できないので、セキュリティを考慮すると都度 IAM ユーザーが aws configure で設定してから作業する必要があり、手間がかかります。AWS Vault では IAM ユーザーごとにプロファイル化できるのでのでこの手間を省略できます。

$ aws-vault exec staging-admin -- aws sts get-caller-identity

なお、env コマンドで環境変数を確認できます。
AWS Vault は、生の認証情報(Access Key および Secret Access Key)を使用せずに、有効期限付きの認証情報を使っていることがわかります。

$ aws-vault exec staging-admin -- env | grep AWS
AWS_VAULT=staging-admin
AWS_ACCESS_KEY_ID=***********
AWS_SECRET_ACCESS_KEY=***********
AWS_SESSION_TOKEN=***********
AWS_SECURITY_TOKEN=***********
AWS_SESSION_EXPIRATION=2021-09-20T07:08:03Z

以上