I've got my raw notes in this gist. I will summarize the outcomes here:
Pros and cons comparing SPIFFE to the current service identity mechanism in OSM.
The aspects of SPIFFE that we are primarily interested in are the x509 SVIDs and the Spiffe ID.
The SPIFFE specs doesn't specify how you use this identity just how it is encoded in the x509 certificate. In our case we have an existing abstraction around identity. And so we don't need to change our identity mechanism but instead make it compatible with the SPIFFE specs. For more information on OSM identity see identity PR
Some of the benefits I see for this are:
- By adhering specifications it enables integrations with rest of eco system (see "Who uses SPIFFE?" at https://spiffe.io/) that use SPIFFE specifications. Once able to work with the specification things like OPA integrations and OIDC integrations become options
- Opens the door for integrations with SPIRE. Spire has a few advantages that would likely be worth exploring further like workload attestation plugins, federation, certification rotation.
- potential for a way to reason about using across multiple types of workload beyond kubernetes. Though the naming schema is still left up to the implementors. Our current schema might work but needs some additional thought.
Especially explore the scenario if they are used in multi-cluster environment
At this point I believe SPIFFE isn't a requirement for multi-cluster. It could provide a way to simplify federation and allow for Attestation across different platforms.
Rough task list if we migrate from current service identity component to SPIFFE.
There are several stages that could be implemented for the spire integration. This would need to be completed after
- using SPIRE for the Pod to Pod service certificates
- using SPIRE as OSM Certificate Provider. This could be done in two ways:
To be done for SPIRE integrations:
(optional) POC using SPIFFE in OSM
I've got a POC of using SPIFFE IDs and x509 SVIDs at https://github.com/openservicemesh/osm/compare/main...jsturtevant:osm:spiffeid?expand=1. This could be used to do spire prototype.