【Ubuntu】AWS Vault インストールと使い方 | AWS アクセスキーを安全に管理する

  • URLをコピーしました!
目次

はじめに

AWS のアクセスキー管理、~/.aws/credentials ファイルに平文(暗号化されていない状態)で保存していませんか? もし PC がマルウェアに感染したり、誤ってファイルを流出させてしまった場合、AWS アカウントが不正利用される重大なリスクがあります。

そこで導入したいのが AWS Vault です。 AWS Vault は、その名の通り AWS の鍵(Key)を安全な金庫(Vault)に保管するためのツール です。 OS 標準の暗号化キーストア(macOS の Keychain、Windows の Credential Manager、Linux の Pass/GPG)を利用してアクセスキーを安全に管理し、コマンド実行時のみ一時的な認証情報を生成してくれます。

本記事では、特に設定のハードルが高いとされる Ubuntu(Linux)環境において、AWS Vault をインストールし、安全かつ便利に運用するための手順を解説します。

この記事でわかること
  • AWS Vault の仕組み: なぜ平文保存が危険で、どうやって安全化するのか
  • インストール手順: Ubuntu への最新版導入方法
  • バックエンド設定: Linux 初心者が躓きやすい passGPG の設定
  • 基本操作: プロファイルの登録から、コマンド実行、マネジメントコンソールへのログインまで

AWS Vault とは?なぜ必要なのか

AWS を操作する際、通常は aws configure コマンドを使ってアクセスキーを設定します。 しかし、この標準的な方法には重大なセキュリティリスクが潜んでいます。

平文の危険性

標準の AWS CLI は、アクセスキーID とシークレットアクセスキーを ~/.aws/credentials というファイルに 平文(暗号化されていないテキスト) で保存します。

これがいかに危険か、想像してみてください。 もし PC がマルウェアに感染したり、誤ってこのファイルを GitHub の公開リポジトリにコミットしてしまったらどうなるでしょうか? 攻撃者はあなたの AWS アカウントの「合鍵」を永久に入手することになり、高額なインスタンスを大量に起動されたり、顧客データを盗まれたりする被害に直結します。

導入のメリット

暗号化保存

ディスク上に平文の認証情報(credentials ファイル)を残しません。

一時的な認証情報

コマンド実行時のみ、有効期限付きの一時的な認証情報(STS)を発行します。万が一漏洩しても、時間が経てば無効になります。

環境の分離

プロジェクトやアカウントごとにプロファイルを切り替えるのが容易になります。

AWS Key Vault(鍵の保管庫)としての役割

そこで登場するのが AWS Vault です。 AWS Vault は、OS が持つ強力な暗号化バックエンド(macOS の Keychain、Windows の Credential Manager、Linux の Pass/GPG)を利用して、アクセスキーを安全に保管します。

つまり、AWS Vault は AWS アカウントを守るための 「堅牢なデジタル金庫(Key Vault)」 なのです。

前提条件と環境

本記事では、以下の環境を前提として解説を進めます。

動作環境

OS

Ubuntu Desktop 20.04 LTS / 22.04 LTS / 24.04 LTS

Shell

Bash または Zsh

権限

sudo コマンドが実行可能なユーザーであること

AWS CLI の準備

AWS Vault は単体でも動作しますが、動作確認や実際の運用では AWS CLI(Command Line Interface)と組み合わせて使用するのが一般的です。 まだインストールされていない方は、以下の記事を参考に導入を済ませておいてください。

STEP

AWS Vault のインストール

まずは GitHub の公式リリースページから、バイナリファイル(実行ファイル)をダウンロードして配置します。

GitHub から最新バイナリを取得・配置

以下のコマンドを実行して、aws-vault をダウンロードし、パスの通ったディレクトリ(/usr/local/bin)に移動します。 ※ 執筆時点のバージョンを記載していますが、適宜最新のリリースを確認してください。

# バージョンを指定(最新版を確認して変更してください)
AWS_VAULT_VERSION="v7.2.0"

# ダウンロード
curl -L -o aws-vault https://github.com/99designs/aws-vault/releases/download/${AWS_VAULT_VERSION}/aws-vault-linux-amd64

# 実行権限の付与と配置
sudo install -m 755 aws-vault /usr/local/bin/aws-vault

# 元ファイルの削除
rm aws-vault

バージョン確認

正しくインストールされたか確認します。

aws-vault --version
# 出力例: v7.2.0
STEP

パスワード管理バックエンド(pass)の構築

ここが Linux 環境特有のステップです。 Windows や macOS と異なり、Ubuntu(Linux)には標準で統合されたパスワード管理機能が有効になっていない場合が多いため、pass というツールをバックエンドとして構成します。

なぜ pass と gnupg が必要なのか

AWS Vault 自体は暗号化機能を持っていません。鍵の保管を OS の標準機能に丸投げします。

  • AWS Vault: 鍵の出し入れを管理する「受付」
  • Pass: パスワードをファイルとして管理する「金庫番」
  • GnuPG(GPG): ファイルを暗号化する「鍵」

この 3 つが連携することで、AWS アクセスキーが初めて安全に保存されます。

STEP
ツールのインストール
sudo apt update && sudo apt install -y pass gnupg
STEP
GPG 鍵ペアの生成

暗号化に使う鍵を作ります。対話形式で進みます。

gpg --full-generate-key
  • 鍵の種類: デフォルト(RSA and RSA)でOK → 1
  • 鍵長: 3072 または 4096
  • 有効期限: 0 (無期限)でOK
  • 本名: 自分の名前(例: User
  • メールアドレス: 自分のメール(例: user@example.com
  • パスフレーズ: 鍵自体を守るパスワードです。忘れないようにしてください。
STEP
鍵 ID の確認

作成された鍵の ID を確認します。

gpg --list-keys

出力例

pub   rsa3072 2024-02-17 [SC]
      ABCD1234EFGH5678... (この長い文字列が ID)
uid           [ 究極 ] User <user@example.com>
STEP
pass の初期化

確認した ID(またはメールアドレス)を使って、パスワードストアを初期化します。

# メールアドレスでも指定可能です
pass init "user@example.com"

Password store initialized for ... と表示されれば準備完了です。

エラー回避:GUI 環境と CUI 環境の注意点

AWS Vault 使用時、パスフレーズ入力のために GPG がポップアップを出そうとします。 SSH 接続や GUI がない環境では、これが原因でエラー(Inappropriate ioctl for device など)になることがあります。

以下の設定をシェル設定ファイル(~/.bashrc~/.zshrc)に追記しておきましょう。

# GPG の入力画面を現在の端末(TTY)に表示させる設定
export GPG_TTY=$(tty)

追記後は source ~/.bashrc で反映させてください。

STEP

プロファイルの作成とキーの登録

バックエンドの準備ができたら、いよいよ AWS のアクセスキーを登録します。

aws-vault add による登録手順

任意のプロファイル名(例: dev-user)を付けてコマンドを実行します。

aws-vault add dev-user

すると、以下のように対話モードになります。AWS マネジメントコンソール等で発行した アクセスキー IDシークレットアクセスキー を入力してください。

Enter Access Key ID: AKIAIOSFODNN7EXAMPLE
Enter Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Enter passphrase to unlock the OpenPGP secret key: (GPG作成時のパスワードを入力)

成功すると Added credentials to profile "dev-user" in vault と表示されます。

設定ファイルの確認(~/.aws/config)

登録しても、~/.aws/credentials ファイルには何も書かれません(これが安全な証拠です!) 代わりに、~/.aws/config にプロファイル情報だけが追記されます。

[profile dev-user]
# ここには鍵情報は含まれません
STEP

AWS Vault の基本操作

コマンド実行:aws-vault exec

登録したプロファイルを使って AWS CLI を実行するには、exec コマンドを使います。 このコマンド経由でのみ、一時的な認証情報が環境変数として渡されます。

# 書式: aws-vault exec <プロファイル名> -- <実行したいコマンド>
aws-vault exec dev-user -- aws s3 ls

環境変数の確認

実際にどのような認証情報がセットされているか確認してみましょう。 アクセスキー(AWS_ACCESS_KEY_ID)が、登録した「AKIA…」ではなく「ASIA…」から始まる 一時キー に変わっているはずです。

aws-vault exec dev-user -- env | grep AWS

マネジメントコンソールへのログイン: aws-vault login

実はこれがいちばん便利な機能かもしれません。 コマンド一つで、そのプロファイルの権限を持った状態でブラウザが開き、AWS マネジメントコンソールにログインできます。

aws-vault login dev-user

MFA(多要素認証)を設定している場合でも、コマンドラインで MFA コードを入力するだけでログインが完了します。スイッチロール運用をしている場合などは劇的に楽になります。

💡 よくあるエラーと解決策

Ubuntu(Linux)環境では、GPG の設定やパスのネスト問題でエラーが出ることがあります。 もし gpg: decryption failedsessions should be nested with care といったエラーに遭遇した場合は、以下の記事で対処法を解説していますので、あわせてご覧ください。

まとめ

本記事では、Ubuntu 環境における AWS Vault の導入方法と、安全なキー管理の仕組みについて解説しました。

  • ~/.aws/credentials にアクセスキーを置くのは控えましょう。
  • Linux では passGPG を組み合わて、OS レベルの暗号化ができます。
  • aws-vault exec を使えば、万一漏洩しても一時キー(STS)を利用できます。
  • aws-vault login でマネジメントコンソールへのアクセスもスムーズになります。

以上、最後までお読み頂きありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次