Carpe Diem

備忘録

Vault

bindアドレスとadvertiseアドレス

概要 ConsulやVaultのクラスタ構成をしていると bind address advertise address という2つのアドレスを設定する必要が出てきます。 この2つをしっかり理解しておかないとクラスタ構成で思わぬ落とし穴にハマったりするので今回はこれを紹介します。 bind…

VaultのKVの基本的な使い方

概要 VaultのKey/Valueの基本的な使い方を紹介します。 このKey/Valueは少し前にv2が出ているため、v1と混同しないよう注意してください。 v1ドキュメント v2ドキュメント 今回はKey/Valueのバージョン管理が可能なv2を想定して説明します。 環境 Vault v0.1…

VaultのAppRoleを使ってトークン取得

概要 Vaultではトークンを取得するための様々な認証方法がありますが、その中でアプリケーションに向いたAppRoleという認証方法があります。 ref: AppRole Pull Authentication - Guides - Vault by HashiCorp この図ではRole IDとSecret IDというID & Passw…

SSHのCA認証で Certificate lacks principal list

背景 christina04.hatenablog.com を元に本番環境を用意していたところ、ubuntuで作ったインスタンスはsshできるもののAmazon Linuxで作られたec2-userのインスタンスはsshできない現象に遭遇しました。 sshのログを調べるために # /etc/ssh/sshd_config # .…

VaultのAudit Devicesでオペレーションをロギング

概要 Vaultの売りは Secure secret management Dynamic secrets Encryption as a Service Leasing and Renewal など多々ありますが、その中でもAudit(監査)ログ(Vaultの操作ログ)の管理はとても重要です。 今回はその設定を紹介します。 Audit Devices 公…

VaultのPKI(公開鍵基盤)でルート証明書・中間証明書・サーバ証明書を発行

概要 VaultにはPKI(公開鍵基盤)の機能もあります。 これを使って ルートCA 中間CA を用意し、 ルート証明書 (root certificate) 中間証明書 (intermediate certificate) サーバ証明書 (primary certificate) を作成します。 環境 Vault 0.10.3

VaultのTransit secret engineでデータを暗号化・復号する

概要 VaultにはTransit Secrets Engineという、暗号化・復号をしてくれる機能があります。 このTransit Secrets EngineはKey/Valueのように暗号化データを保存することはなく、暗号化するための暗号化キーを保存&バージョン管理します。 また複数の機能を持…

GolangでVaultを操作

概要 これまで紹介したVaultの使い方はCLIを使うのがメインでしたが、実際はアプリケーション内で秘密情報を扱うケースが多々あります。 Vaultはgolangのライブラリを提供しているので、様々なログイン方法を紹介しつつ秘密情報にアクセスしてみます。 環境 …

IAMユーザを持っていたらVaultにログインできるようにする

概要 Vaultのデフォルトのログインはトークンですが、これだと漏れた時など管理しにくいのでAWSのIAMユーザ情報を元にログインできるようにします。 前提 ログインするメンバーはAWSのIAMユーザを持つ 環境 Vault 0.10.3

VaultのPolicyを使った運用

概要 VaultはPolicyを使って各APIの権限を設定します。 これによって権限を細かく設定することができますが、実際の運用ではどんな形で進めるのがいいのかがドキュメントでは分かりにくかったのでまとめした。 環境 Vault 0.10.3 Policy付与のフロー 以下の…

VaultでSSHをCA認証に

背景 AWSを運用しているとEC2のsshのキーペア管理が難しいです。 GCPであればアカウントを持てば自動で各ノードにsshできる仕組みがありますが、AWSは各インスタンスにsshのキーペアを1つだけ登録するようになっているため、複数人で運用するにはぱっと以下…

VaultのSeal/Unseal

概要 Hashicorp Vaultは起動時はsealedというステータスになっており、リストを取得したりKey-Valueの値を取得することができません。 Vaultはセキュリティのため、データにアクセスする手段は知っていても起動時は復号の方法を知らないのです。 そこでUnsea…