はじめに
ゼロトラストアーキテクチャにおいて最も重要なのは、「誰が通信しているか」を正確に識別するIdentity(アイデンティティ)です。
Kubernetesでは従来、ServiceAccountがその役割を担っていましたが、マルチクラスタやService Mesh環境では不十分です。
そこで登場するのが:
- SPIFFE:Workload Identityの標準仕様
- SPIRE:SPIFFEを実装するためのOSS
本記事では、SPIFFE/SPIREの実装を体系的に解説します。
1. SPIFFEとは?
SPIFFE(Secure Production Identity Framework for Everyone)は、ワークロードに対して一意なIDを付与するための標準です。
SPIFFE IDの例
spiffe://example.org/ns/default/sa/my-app
- scheme:spiffe://
- trust domain:example.org
- パス:namespace / service account
このIDを使って、サービス間の認証を行います。
2. SPIREとは?
SPIREはSPIFFEを実装するためのリファレンス実装です。
構成要素
| コンポーネント | 役割 |
|---|---|
| SPIRE Server | IDの発行・管理 |
| SPIRE Agent | |
| Workload API |
3. アーキテクチャ
SPIRE Server ↓ SPIRE Agent(Nodeごと) ↓ Workload(Pod) ↓ SPIFFE ID + 証明書発行
SPIREはX.509証明書としてIDを配布します。
4. Kubernetesへの導入手順
① HelmでSPIREインストール
helm repo add spiffe https://spiffe.github.io/helm-charts helm install spire spiffe/spire
② コンポーネント確認
kubectl get pods -n spire
- spire-server
- spire-agent
5. Workload登録(重要)
どのPodにどのSPIFFE IDを割り当てるか定義します。
spire-server entry create \ -spiffeID spiffe://example.org/ns/default/sa/my-app \ -selector k8s:ns:default \ -selector k8s:sa:my-app
selectorでPodを識別します。
6. Pod側でのID取得
WorkloadはSPIRE Agent経由で証明書を取得します。
環境変数
SPIFFE_ENDPOINT_SOCKET=/run/spire/sockets/agent.sock
Goでの取得例
source, _ := workloadapi.NewX509Source(ctx) svid := source.GetX509SVID()
これでSPIFFE IDと証明書が取得できます。
7. mTLS通信の実装
SPIFFE証明書を使って安全な通信を実現します。
tlsConfig := tlsconfig.MTLSClientConfig(source, source, tlsconfig.AuthorizeAny())
これにより、双方のIDを検証します。
8. Istioとの統合
IstioはSPIFFEをネイティブサポートしています。
内部ID
spiffe://cluster.local/ns/default/sa/my-app
連携メリット
- mTLS自動化
- 認証・認可ポリシー統合
9. マルチクラスタ対応
Trust Domain設計
cluster-a → spiffe://a.example.org cluster-b → spiffe://b.example.org
Federation設定
異なるTrust Domain間で信頼関係を構築します。
10. 運用ベストプラクティス
- 証明書は短命(数時間)
- 自動ローテーション必須
- Trust Domainを明確に分離
- 監査ログを収集
11. よくある構成パターン
SPIRE + Istio + Kubernetes ↓ 完全ゼロトラスト環境
- SPIRE → ID発行
- Istio → 通信制御
まとめ
- SPIFFEはWorkload Identityの標準
- SPIREでKubernetesに実装可能
- 証明書ベースでmTLSを実現
- Service Meshと組み合わせると強力
SPIFFE/SPIREは、ゼロトラスト時代のID基盤そのものです。