第10章 Zero Trust Workload Identity Manager
10.1. Zero Trust Workload Identity Manager の概要 リンクのコピーリンクがクリップボードにコピーされました!
Zero Trust Workload Identity Manager はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Zero Trust Workload Identity Manager は、Secure Production Identity Framework for Everyone (SPIFFE) と SPIFFE Runtime Environment (SPIRE) を活用して、分散システム向けの包括的な Identity Management ソリューションを提供するものです。SPIFFE と SPIRE は、ワークロードアイデンティティーを標準化し、ワークロードが同じクラスター上または別の環境にある他のサービスと通信できるようにします。
Zero Trust Workload Identity Manager は、有効期間が長く手動で管理されるシークレットを、暗号的に検証可能なアイデンティティーに置き換えます。強力な認証を提供し、相互に通信しているワークロードが、自らが主張するとおりの本物であることが保証されます。SPIRE は、SPIFFE Verifiable Identity Document (SVID) の発行、ローテーション、失効を自動化し、シークレットを管理する開発者と管理者の作業負荷を軽減します。
SPIFFE は、オンプレミス環境、クラウド環境、ハイブリッド環境など、さまざまなインフラストラクチャーで動作します。SPIFFE のアイデンティティーは暗号化に対応しており、監査とコンプライアンスの基盤を提供します。
Zero Trust Workload Identity Manager アーキテクチャーのコンポーネントは次のとおりです。
10.1.1. SPIFFE リンクのコピーリンクがクリップボードにコピーされました!
Secure Production Identity Framework for Everyone (SPIFFE) は、分散システム内のソフトウェアワークロード間の信頼を確立するための標準化された方法を提供します。SPIFFE は、SPIFFE ID と呼ばれる一意の ID を割り当てます。この ID は、信頼ドメインとワークロード ID を含む Uniform Resource Identifiers (URI) です。
SPIFFE ID は、SPIFFE Verifiable Identity Document (SVID) に含まれています。SVID は、ワークロードが他のワークロードに対してアイデンティティーを検証し、ワークロードが相互に通信できるようにするために使用されます。SVID には次の 2 つの主な形式があります。
- X.509-SVID: SPIFFE ID がサブジェクト代替名 (SAN) フィールドに埋め込まれている X.509 証明書。
-
JWT-SVID: SPIFFE ID が
sub
クレームとして含まれる JSON Web Tokens (JWT)。
詳細は、SPIFFE の概要 を参照してください。
10.1.2. SPIRE Server リンクのコピーリンクがクリップボードにコピーされました!
SPIRE Server は、信頼ドメイン内で SPIFFE アイデンティティーを管理および発行する役割を担います。登録エントリー (SPIFFE ID を発行する条件を決定するセレクター) と署名鍵を格納します。SPIRE Server は SPIRE Agent と連携し、ノードプラグインを介してノードアテステーションを実行します。詳細は、SPIRE Server について を参照してください。
10.1.3. SPIRE Agent リンクのコピーリンクがクリップボードにコピーされました!
SPIRE Agent はワークロードのアテステーションを担当し、SPIFFE Workload API を通じて認証を要求するときに、ワークロードに検証済みのアイデンティティーを確実に付与します。これは、設定済みのワークロードアテスタープラグインを使用することで実現されます。Kubernetes 環境では、Kubernetes ワークロードアテスタープラグインが使用されます。
SPIRE と SPIRE Agent は、ノードプラグインを介してノードアテステーションを実行します。プラグインは、エージェントが稼働するノードのアイデンティティーを確認するために使用されます。詳細は、SPIRE エージェントについて を参照してください。
10.1.4. アテステーション リンクのコピーリンクがクリップボードにコピーされました!
アテステーションは、SPIFFE ID と SVID を発行する前に、ノードとワークロードのアイデンティティーを検証するプロセスです。SPIRE Server は、ワークロードの属性と SPIRE Agent が稼働するノードの属性を収集し、それらをワークロードの登録時に定義された一連のセレクターと比較します。比較が成功した場合、エンティティーに認証情報が提供されます。これにより、信頼ドメイン内の正当かつ予期されるエンティティーにのみ、暗号化アイデンティティーが確実に付与されます。SPIFFE/SPIRE には、主に次の 2 種類のアテステーションがあります。
- ノードアテステーション: ノード上で稼働する SPIRE Agent を信頼し、ワークロードのアイデンティティーを要求する権限を付与する前に、システム上のマシンまたはノードのアイデンティティーを検証します。
- ワークロードアテステーション: アテステーションにより検証されたノード上で稼働する SPIRE Agent が、そのノード上のアプリケーションやサービスに SPIFFE ID と SVID を提供する前に、そのアプリケーションやサービスのアイデンティティーを検証します。
詳細は、アテステーション を参照してください。
10.1.5. Zero Trust Workload Identity Manager のコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
Zero Trust Workload Identity Manager の初期リリースでは、次のコンポーネントを利用できます。
10.1.5.1. SPIFFE CSI ドライバー リンクのコピーリンクがクリップボードにコピーされました!
SPIFFE Container Storage Interface (CSI) は、Workload API ソケットを Pod に提供することで、Pod が SPIFFE Verifiable Identity Document (SVID) をセキュアに取得できるようにするプラグインです。SPIFFE CSI ドライバーは、各ノードでドライバーのインスタンスが実行されるように、クラスター上にデーモンセットとしてデプロイされます。このドライバーは、Kubernetes のエフェメラルインラインボリューム機能を使用して、SPIFFE CSI ドライバーによって直接提供されるボリュームを Pod が要求できるようにします。これにより、一時的なストレージを必要とするアプリケーションによるボリュームの使用が簡素化されます。
Pod が起動すると、Kubelet が SPIFFE CSI ドライバーを呼び出して、Pod のコンテナーにボリュームをプロビジョニングしてマウントします。SPIFFE CSI ドライバーは、SPIFFE Workload API を含むディレクトリーを Pod にマウントします。Pod 内のアプリケーションは、Workload API と通信してアプリケーションの SVID を取得します。このドライバーにより、各 SVID が確実に一意になります。
10.1.5.2. SPIRE OpenID Connect ディスカバリープロバイダー リンクのコピーリンクがクリップボードにコピーされました!
SPIRE OpenID Connect ディスカバリープロバイダーは、Open ID 設定エンドポイントとトークン検証用の JWKS URI を公開することで、SPIRE が発行した JWT-SVID と標準の OpenID Connect (OIDC) ユーザーとの互換性を確保するスタンドアロンコンポーネントです。これは、SPIRE ベースのワークロードのアイデンティティーを、OIDC 準拠のトークン、特に外部 API を必要とするシステムと統合するために不可欠です。SPIRE は主にワークロードのアイデンティティーを発行しますが、SPIRE の設定を通じて、追加のワークロード関連のクレームを JWT-SVID に埋め込むことができます。これにより、このクレームをトークンに含め、OIDC 準拠のクライアントに検証させることが可能になります。
10.1.5.3. SPIRE Controller Manager リンクのコピーリンクがクリップボードにコピーされました!
SPIRE Controller Manager は、カスタムリソース定義 (CRD) を使用してワークロードの登録を容易にします。ワークロードの登録を容易にするために、SPIRE Controller Manager は Pod と CRD に対してコントローラーを登録します。これらのリソースに変更が検出されると、ワークロード調整プロセスがトリガーされます。このプロセスは、既存の Pod と CRD に基づいて、どの SPIRE エントリーが存在すべきかを決定します。調整プロセスでは、必要に応じて SPIRE Server 上のエントリーが作成、更新、削除されます。
SPIRE Controller Manager は、SPIRE Server と同じ Pod にデプロイされるように設計されています。Manager は、共有ボリューム内のプライベート UNIX ドメインソケットを使用して SPIRE Server API と通信します。
10.1.6. Zero Trust Workload Identity Manager の機能 リンクのコピーリンクがクリップボードにコピーされました!
10.1.6.1. SPIRE Server およびエージェントのテレメトリー リンクのコピーリンクがクリップボードにコピーされました!
SPIRE Server およびエージェントのテレメトリーは、SPIRE デプロイメントの健全性に関する詳細情報を提供します。メトリクスの形式は、Prometheus Operator が指定する形式です。公開されるメトリクスは、サーバーの健全性とライフサイクル、SPIRE コンポーネントのパフォーマンス、アテステーション、SVID の発行、プラグインの統計情報を理解するのに役立ちます。
10.1.7. Zero Trust Workload Identity Manager ワークフローについて リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift クラスターにおける Zero Trust Workload Identity Manager のワークフローの概要を以下に示します。
- SPIRE、SPIRE Agent、SPIFFE CSI Driver、および SPIRE OIDC Discovery Provider オペランドが、関連付けられているカスタムリソース定義 (CRD) を介して Zero Trust Workload Identity Manager によってデプロイおよび管理されます。
- 次に、関連する Kubernetes リソースに監視が登録され、必要な SPIRE CRD がクラスターに適用されます。
-
ZeroTrustWorkloadIdentityManager の CR (
cluster
という名前のリソース) が、コントローラーによってデプロイおよび管理されます。 SPIRE Server 、SPIRE Agent、SPIFFE CSI Driver、および SPIRE OIDC Discovery Provider をデプロイするために、特定のタイプのカスタムリソースを作成し、
cluster
という名前を付ける必要があります。カスタムリソースのタイプは次のとおりです。-
SPIRE Server -
SpireServer
-
SPIRE Agent -
SpireAgent
-
SPIFFE CSI Driver -
SpiffeCSIDriver
-
SPIRE OIDC ディスカバリープロバイダー -
SpireOIDCDiscoveryProvider
-
SPIRE Server -
- ノードが起動すると、SPIRE Agent が初期化され、SPIRE Server に接続します。
- SPIRE Agent はノードアテステーションプロセスを開始します。エージェントは、ラベル名や namespace などのノードのアイデンティティーに関する情報を収集します。エージェントは、アテステーションを通じて収集した情報を SPIRE Server にセキュアに提供します。
- 次に、SPIRE Server が、設定済みのアテステーションポリシーと登録エントリーに照らしてこの情報を評価します。成功した場合、サーバーはエージェントの SVID とトラストバンドル (CA 証明書) を生成し、これをセキュアに SPIRE Agent に送り返します。
- ノードでワークロードが起動します。ワークロードにはセキュアなアイデンティティーが必要です。ワークロードはエージェントの Workload API に接続し、SVID を要求します。
- SPIRE Agent が要求を受信し、ワークロードアテステーションを開始してワークロードに関する情報を収集します。
- SPIRE Agent が情報を収集した後、その情報が SPIRE Server に送信されます。サーバーは設定された登録エントリーを確認します。
- SPIRE Agent がワークロードの SVID とトラストバンドルを受信し、それをワークロードに渡します。ワークロードは、他の SPIFFE 対応デバイスに SVID を提示して通信できるようになります。