Cloud Native Computing Foundationは、インキュベーションレベルのプロジェクトとしてSPIFFEとSPIREを受け入れた。SPIFFEは、プラットフォームに依存しない暗号化IDを使用してソフトウェアサービスを認証するための標準を定義する。SPIREは、本番環境に対応したSPIFFE APIの実装である。
SPIFFE(Secure Production Identity Framework for Everyone)仕様は、ダイナミックで異種の環境内で機能するように設計されており、ワークロードを相互認証する手段を提供する。仕様の基本は、APIを介して利用可能なSVID(SPIFFE Verifiable Identity Documents)と呼ばれる、短命の暗号化IDドキュメントの概念である。ワークロードは、これらのドキュメントを利用して、他のワークロードを認証できる。
SPIFFEは、AWS、GCP、Azure内のワークロードをサポートし、ベアメタルで実行する。Kubernetes、Docker、Vault、MySQL、Envoyと統合できる。現在、Istio Citadel、Consul、Kumaなど、多くのプロジェクトがSPIFFE仕様に従ってIDを発行している。
CNCF Special Interest Group for Security(SIG-Security)は、SPIFFEとSPIREのセキュリティ評価を実施した。重大な問題は見つからなかった。彼らは、セキュリティに重点を置いた設計についてチームを賞賛した。
SPIFFEフレームワーク内では、ワークロードは、単一の目的のために特定の状態でデプロイされるソフトウェアの一部である。これは、物理ノードまたは仮想ノードから個々の実行中のプロセスまで、何でもかまわない。SPIFFEは、悪意のあるワークロードが別のワークロードの資格情報を盗むことができないように、各ワークロードが十分に分離されていることを前提としている。
各ワークロードには、特定の信頼ドメイン内でワークロードを一意に識別するSPIFFE IDが割り当てられる。このIDは、spiffe://trust domain/workload identifier
の形式のURIである。たとえば、spiffe://acme.com/biling/payments
は有効なSPIFFE IDになる。
信頼ドメインは、システムの信頼ルートに対応し、そのシステムは、SPIFFEインフラストラクチャと個別に対応付けされる。同じ信頼ドメインに存在するすべてのワークロードには、信頼ドメインのルートキーに対して検証できるIDドキュメントが発行される。異なる場所または異なるセキュリティ慣行(テストと本番など)の環境にあるワークロードは、別の信頼ドメインに保持することをお勧めする。
ワークロードは、SPIFFE Verifiable Identity Document(SVID)を使用して、リソースに対してIDを証明できる。SVIDは、SPIFFE IDの信頼ドメイン内のオーサリティによって署名されている場合に有効と見なされる。SVID内には、そのサービスのIDを表す単一のSPIFFE IDがある。これは、X.509証明書またはJWTとしてエンコードされる。トークンはリプレイ攻撃を受けやすい可能性があるため、可能な場合はX.509を使用することをお勧めする。ただし、L7プロキシまたはロードバランサーがワークロード間にある場合は、JWTアプローチが唯一のオプションかもしれない。
SPIFFEは、IDドキュメントを取得するためのワークロードAPIも提供する。X.509形式のドキュメントの場合、APIは、SPIFFE ID、そのIDに関連付けられた秘密鍵、対応する短命のX.509証明書、証明書一式(信頼バンドルと呼ばれる)を提供する。その秘密鍵は、ワークロードに代わってデータに署名するために使用できる。その証明書一式は、ワークロードが、信頼ドメイン内の他のワークロードによって提示されたX.509-SVIDを検証するために使用できる。
AWS EC2メタデータサーバAPIとGoogle GCEインスタンスメタデータAPIの構造と同様に、ワークロードAPIでは、呼び出し元のワークロードが自身のIDを知っている必要はなく、呼び出しを開始するための有効な認証トークンを持っている必要もない。これにより、アプリケーションをワークロードのシークレットと一緒にデプロイする必要がなくなる。欠陥のあるキーによるリスクを最小限に抑えるために、すべての秘密キーと対応する証明書は短命であり、頻繁かつ自動的にローテーションされる。必要に応じてローテーションを強制するオプションがある。
SPIFFEワークロードAPIへのインターフェースを提供するGoクライアントライブラリがある。さらに、SPIFFE Helperユーティリティは、ワークロードAPIに直接書き込むことができないアプリケーションと統合するときに使用できる。最後に、SPIREエージェントバイナリはワークロードAPIのクライアントとして実行でき、資格情報を取得するためのいくつかのユーティリティを提供する。
SPIFFEとSPIREは、Apace-2.0ライセンスの下でGitHubからダウンロードできる。この発表により、SPIFFEとSPIREは、gRPC、NATS、Falcoなどの他のインキュベーションレベルのプロジェクトに参加する。