🐈

HashiCorp Vaultを何となく理解する(2):Seal/Unseal

2024/04/10に公開

イオン⁠⁠⁠⁠⁠⁠⁠スマートテクノロジーのCTO室SREチームの@hikkie13です。

過去の記事に記載がある通り、弊社ではHCP Vaultの導入を進めています。
https://zenn.dev/aeonpeople/articles/6625a900552311
https://zenn.dev/aeonpeople/articles/0b4492898a0fd3

導入には教育・学習が欠かせません。
その過程で得た知識を何回かに分けてまとめていこうと思います。(心が折れない限り)

今回は、VaultのSeal/Unsealについてです。

Seal/Unseal

https://developer.hashicorp.com/vault/docs/concepts/seal
seal とは直訳で封印を意味する。unseal は封印解除の意味。

  • statusは vault status コマンドで確認可能。
  • Vaultは sealed statusで開始される。この状態では、復号化することはできない。
  • Vaultが sealed status では、ステータスチェックとunsealのみが可能。
  • Vaultをunsealすることは、ノードが暗号キーを解読するためにルートキーを再構築し、最終的にデータを読み取ることを意味する。
  • unseal後、暗号キーはメモリに保存される。

Sealとは

  • Vaultをアクセス不可能な状態にするプロセス
  • VaultをSealすると、実質的に暗号化キーが破棄され、さらなる操作を行うためにはVaultをUnsealする必要がある。
  • デフォルトではVaultはSealされた状態で起動する。起動した後のファーストステップとしてUI/CLI/APIなどを通じて手動でUnsealする。
  • Sealする時はこんな時↓
    • Key Shardsが漏洩した場合。
    • 妥協やネットワーク侵入が検出された場合。
    • Vaultのノードにスパイウェアやマルウェアが検出された場合。

Unsealのオプション

大きく分けて以下の3種類のUnseal方式がある。

  • Manual Unseal
  • Auto Unseal
  • Transit Auto Unseal

Manual Unseal


https://developer.hashicorp.com/vault/docs/concepts/seal#seal-unsealより引用

  • ルートキーを分割する。
  • unsealのデフォルトオプション。
  • 理想的には、各Key Shardは異なる従業員によって保管されるべき。
  • vaultを初期化する際には、個々のShardが異なるPGP Keyで暗号化されるようすることも可能。
  • vaultをunsealする際には、しきい値に等しい数の従業員によるキーが必要。

Auto Unseal

https://developer.hashicorp.com/vault/docs/configuration/seal/awskms
https://developer.hashicorp.com/vault/docs/configuration/seal/azurekeyvault
https://developer.hashicorp.com/vault/docs/configuration/seal/gcpckms


https://developer.hashicorp.com/vault/docs/concepts/seal#seal-unsealより引用

  • ルートキーはクラウドのKMS Keyで暗号化され、Storage Backendに保管される。
  • 暗号キーはVaultノードのメモリーに保存される。
  • Auto UnsealはクラウドまたはオンプレミスのHSMを使用してルートキーを復号化する。
  • Vaultの設定ファイルは復号化に使用する特定のキーを指定する。
  • Cloud Auto Unsealはサービスまたはノードの再起動時にVaultを自動的にUnsealする。

Transit Auto Unseal

https://developer.hashicorp.com/vault/docs/configuration/seal/transit

  • 異なるVaultクラスターのTransit Secret Engineを使用する方式。
  • Transit Secret Engineは名前空間内で設定可能。
  • キーローテーション可能。
  • 中央集権となるVaultクラスターは高可用性の必要あり。

Unseal Optionの比較

Option メリット デメリット
Manual Unseal ・シンプル
どんなプラットフォームでも対応
・柔軟性が高い
・保管リスク
・手動作業が必要
・キーローテーションが必要
Auto Unseal ・設定すればあとは放置でOK
・同一プラットフォーム上での統合
・クラウドベンダーのロックイン
Transit Auto Unseal ・設定すればあとは放置でOK
・プラットフォームに依存しない
・多数のVaultクラスターをクラウドやデータセンターにまたがって運用する際に有用
・中央集権のVaultクラスターが必要なのがデメリット

参考

https://www.kloia.com/blog/comparison-of-unseal-options-in-hashicorp-vault
https://developer.hashicorp.com/vault/docs
https://youtube.com/playlist?list=PLFkEchqXDZx7CuMTbxnlGVflB7UKwf_N3&si=uJE2c_GhjxQ4FmMA
HashiCorp Certified: Vault Associate 2024 (w/ Hands-On Labs)
HashiCorp Certified: Vault Operations Professional

最後に(採用のお知らせ)

イオンスマートテクノロジーではエンジニアをはじめとした様々な職種を積極的に採用中です!
これからとてもおもしろいフェーズへ突入していくと思いますので興味のある方は是非カジュアル面談などで話を聞いてください!

https://engineer-recuruiting.aeon.info/

AEON TECH HUB

Discussion