SPIFFE
SPIFFE は、秘密の事前配布なしに、ワークロードへ短命で暗号学的に検証可能な ID を与えるための標準群である。
- カテゴリ: Identity & Policy
- CNCF 成熟度: Graduated
- 言語: Go
- ライセンス: Apache-2.0
- リポジトリ: spiffe/go-spiffe
- ドキュメント基準コミット:
e9973f6(v2.8.1)
何をするものか
SPIFFE (Secure Production Identity Framework For Everyone) は、ワークロード ID のためのベンダ中立な標準群である。定義するのは 3 つ。SPIFFE ID (ワークロードを名付ける spiffe:// URI)、SVID (検証可能な ID ドキュメントである X509-SVID または JWT-SVID)、Workload API (SVID を発行・ローテーションする gRPC API) である。これらの標準を実装するリファレンスのサーバ/エージェントは別プロジェクトの SPIRE にある。
このディープダイブは、アプリケーションが SPIFFE を利用するための正準 Go クライアントライブラリ spiffe/go-spiffe を読む。Workload API をラップし、ワークロード間の相互認証 TLS、X509-SVID と JWT-SVID の取得・検証、トラストバンドル管理を提供する (README.md:5-9)。
ワークロードは長命なクレデンシャルを一切見ない。ローカルの Workload API エンドポイント (Unix ソケット越しの SPIRE Agent) に接続し、エージェントがワークロードをアテステーションし、go-spiffe が新規発行された SVID をアプリの TLS 設定へ流し込む。ID は証明書中の URI であり、認可はその URI を許可集合と照合することである。
いつ使うか
- クラスタ・クラウド・VM をまたいでサービスを動かし、プラットフォームごとの IAM ではなく単一の ID モデルを使いたいとき。
- ピアの ID がホスト名や共有トークンではなく
spiffe://URI であるような、サービス間 mTLS が欲しいとき。 - 別々のトラストドメイン間で信頼を連携させ、一方のワークロードが他方のワークロードを認証できるようにしたいとき。
- 人間やエンドユーザの認証だけが必要な場合は不向き。SPIFFE は人ではなくワークロードを識別する。
- 単一プラットフォームのネイティブなワークロード ID (例: クラウド IAM) で要件が満たせるなら、運用負荷が増えるだけになる。
このディープダイブの構成
- 歴史: 起源・マイルストーン・存在理由。
- アーキテクチャ: コンポーネントとリクエストの流れ。
- 採用事例・エコシステム: 誰が動かし、周囲に何があるか。
- 内部実装: ソースから読んだ重要なコードパス。
- はじめに: インストールと最初の動く構成。
出典
- spiffe/go-spiffe リポジトリ (pinned v2.8.1)。
- SPIFFE and SPIRE Projects Graduate from CNCF。
- SPIFFE project page (CNCF)。
- SPIFFE standards (SPIFFE-ID / SVID / Workload API)。
- spiffe.io and SPIRE case studies。
- Uber: Our Journey Adopting SPIFFE/SPIRE at Scale。
- spiffe/spire ADOPTERS.md。
- go-spiffe v2 Go package reference。