HashiCorp Vaultを何となく理解する(8):レプリケーション
イオンスマートテクノロジーのDevSecOps Div. SREチームの@hikkie13です。
過去の記事に記載がある通り、弊社ではHCP Vaultの導入を進めています。
導入には教育・学習が欠かせません。
その過程で得た知識を何回かに分けてまとめていこうと思います。(心が折れない限り)
今回は、Vaultのレプリケーションについてです。
レプリケーションの概要
- 通常、可用性の観点で、組織は複数のデータセンターにまたいだインフラストラクチャを保持する。
そのため、アプリケーションアクセスのために、Vaultに高可用性が必要となる。 - 組織がユースケースやアプリケーションを追加し続けるにつれて、スケールする必要がある。
- グローバルに強制される共通のポリシーが必要。
- データセンターに関係なく、アプリケーションが必要とする一貫した秘密情報と構成を提供する。
- Vault レプリケーションは Vault Enterprise およびHCP Vaultで利用可能。
- HCP VaultではPerformance Replicationのみ。
- レプリケーションはリーダーフォロワーモデル(プライマリとセカンダリ)で動作する。
- プライマリクラスターはシステムの記録として機能し、ほとんどの Vault データを非同期でレプリケートする。
- プライマリとセカンダリ間のすべての通信は、相互認証された TLS セッションでエンドツーエンドで暗号化される。
レプリケーションの全体イメージ
https://developer.hashicorp.com/vault/docs/enterprise/replication#replicated-data より
- Vaultのレプリケーションの基本単位は「クラスター」であり、Vaultノード(アクティブノードと対応するHAノード)によって構成される。複数のVaultクラスターは、1対多のほぼリアルタイムな通信を行う。
- レプリケーションはリーダー/フォロワーモデルで動作する。リーダークラスター(プライマリ)が一連のフォロワークラスター(セカンダリ)とリンクされる。プライマリクラスターは記録の基盤として機能し、ほとんどのVaultデータを非同期的にレプリケートする。
- プライマリとセカンダリ間のすべての通信は、相互認証されたTLSセッションを使用してエンドツーエンドで暗号化される。
- レプリケートされるデータについて、プライマリクラスターとセカンダリクラスター間でどのデータがレプリケートされるかは、プライマリとセカンダリ間で設定されたレプリケーションの種類による。レプリケーションの種類については後述する。
2種類のレプリケーション
Vaultのレプリケーションには、Performance ReplicationとDisaster Recovery Replicationがある。
Performance Replication
- 基本的な構成、ポリシー、およびその他のデータをレプリケートする。
- クライアントリクエストからの読み取りを処理する能力を持つ。
- クライアントは、パフォーマンスレプリケートクラスターに個別に認証する。
- トークンやリースをパフォーマンスセカンダリにレプリケートしない。
Disaster Recovery Replication
- 基本的な構成、ポリシー、およびその他すべてのデータをレプリケートする。
- クライアントリクエストからの読み取りを処理できない。
- クライアントはプライマリクラスター(またはパフォーマンスクラスター)にのみ認証する必要がある。
- プライマリクラスターで作成されたトークンとリースをレプリケートする。
違い
表にまとめると以下となる。
機能 | Disaster Recovery Replication | Performance Replication |
---|---|---|
プライマリクラスターの設定をミラーリングする | はい | はい |
プライマリクラスターのバックエンド(認証方式、シークレットエンジン、監査デバイスなど)の設定をミラーリングする | はい | はい |
プライマリクラスターとやり取りするアプリケーションおよびユーザーのトークンとリースをミラーリングする | はい | いいえ。セカンダリは自身のトークンとリースを管理する。セカンダリが昇格されると、アプリケーションは再認証し、新しいプライマリから新しいリースを取得する必要がある。 |
セカンダリクラスターがクライアントリクエストを処理できる | いいえ | はい |
Path Filters
Path Filtersを使用することで、特定のシークレットエンジンや名前空間を「許可リスト」または「拒否リスト」に設定し、データセンター間でのレプリケーションを制御できる。
利用シーンの例としては、プライマリクラスターがEU地域内にあり、セカンダリクラスターがEU地域外に存在する場合である。GDPRは、EU以外の地域や国に対して、EUと同等の厳格なデータ保護規制が適用されていない限り、個人を特定できるデータを物理的に転送することを禁止している。
GDPRに準拠するためには、VaultのPath Filters機能を活用し、データ移動や主権に関する規制を守りつつ、地理的に分散した地域間でのパフォーマンスアクセスを確保する必要がある。
詳細として、以下も参照
上記webinarの例において、以下を補足として記載する。
- Performance Primary
- プライマリクラスターは「shared_secret」を持ち、データの書き込みや管理を中心的に行う。
- 書き込みリクエストはプライマリに転送される。
- Performance Secondary
- セカンダリクラスターは「shared_secret」をプライマリからレプリケーションによって受け取る。
- セカンダリ独自の「local_secret」も保持している。
- 読み取りリクエストはセカンダリクラスターで処理可能。
- セカンダリは、ユーザーからの「読み取りリクエスト」に応じる役割を果たす。
- 動作の流れ
- レプリケーション: プライマリクラスターの「shared_secret」はセカンダリクラスターにレプリケーションされる。
- 書き込み転送: 書き込みリクエストはセカンダリからプライマリに転送される。
- 読み取りリクエスト: 読み取りリクエストはセカンダリクラスターで直接処理される。
以上のように、Path Filtersにより、どのシークレットエンジンや名前空間がレプリケーション対象になるかを制御できる。この機能により、不要なデータの複製を防ぎ、効率的なデータ管理が可能となる。
レプリケーションの各手順について
各公式ドキュメントを参照。
さらに詳細はHashiCorp社のSEが既に神記事を作成されているため、こちらも参考にすると良い。
Disaster Recovery Replicationのセットアップ
Disaster Recovery ReplicationのFO/FB
Performance Replicationのセットアップ
参考
HashiCorp Certified: Vault Associate 2024 (w/ Hands-On Labs)
HashiCorp Certified: Vault Operations Professional
イオングループで、一緒に働きませんか?
イオングループでは、エンジニアを積極採用中です。少しでもご興味もった方は、キャリア登録やカジュアル面談登録などもしていただけると嬉しいです。
皆さまとお話できるのを楽しみにしています!
Discussion