Carpe Diem

備忘録

Vault

技術書典7でAbemaTVの合同誌にHashiCorp Vaultについて寄稿しました

概要 AbemaTVの合同誌にHashiCorp Vaultについて執筆しました。 techbookfest.org どんな内容 基本的にはこの技術ブログで紹介した内容を体系的にして、最新バージョンで改めて動作確認した感じにしています。 初めてHashiCorp Vaultを使う人にとって読みや…

機密情報の管理で大切なこと

概要 機密情報の管理はいつも悩みのタネです。 その管理に僕はHashiCorp Vaultを推してますが、その理由を含めて説明します。 管理方法の課題 機密情報の管理で考えなければいけないことはたくさんあります。 データの暗号化 どこに保存するか 認証 アクセス…

VaultのCubbyhole Response Wrapping

概要 HashiCorp VaultにはCubbyhole Response Wrappingという仕組みが用意されています。 これによってトークンや秘密情報の受け渡し時の漏洩リスクを最小限にします。 課題・背景 人やマシンにトークンを渡す場合、 発行した人から漏洩する可能性 渡す際に…

HashiCorp VaultのDynamic Secrets

概要 HashiCorp VaultにはDynamic Secretsという期限の付いた認証情報を動的に生成してパブリッククラウドやDBへのアクセスをセキュアに保つ仕組みが用意されています。 課題・背景 秘密情報とその周辺の認証を一元化し、適切な暗号化・Auditなどをしっかり…

VaultのTokenとLease

概要 HashiCorp VaultのTokenにはLeaseという概念があります。 この概念によってよりローテーションを強制し、秘密情報のセキュアな管理をすることが可能です。 環境 Vault 1.2.1 default_lease_ttlとmax_lease_ttl root tokenを除く全てのtokenにはdefault_…

HashiCorp VaultのPolicyでハマったこと

概要 christina04.hatenablog.com で説明したようにHashiCorp Vaultでは柔軟な権限設定ができますが、触っていて「え、こういう挙動・設定なの?」とハマった事がいくつかあったのでまとめます。 環境 vault v0.11.5 ハマったところ pathは前方一致 例えば p…

OpenSSH 7.8p1でCA認証によるsshができない

概要 christina04.hatenablog.com でCA認証をしていたのですが、ある日急にsshできなくなったので原因を調査したところOpenSSH側のバグでした。 bugs.launchpad.net 環境 OpenSSH 7.8p1 macOS Mojave 10.14.1

bindアドレスとadvertiseアドレス

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

HashiCorp VaultのKVの基本的な使い方

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

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

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

SSHのCA認証で Certificate lacks principal list

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

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

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

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

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

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

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

GoでVaultを操作

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

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

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

HashiCorp VaultのPolicyを使った運用

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

HashiCorp VaultでSSHをCA認証に

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

HashiCorp VaultのSeal/Unseal

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