-
Notifications
You must be signed in to change notification settings - Fork 72
Description
Summary
This request is to establish a design and create the necessary work items (in this repo and other repos) that are needed to enhance Parsec with a SPIFFE-based identity subsystem.
Details
Investigation required, but necessary work items likely to include:
- Creating a new authenticator module in the service that can verify SPIFFE IDs. The expectation is that we will use the JWT SVID in the auth header of the request, with a new integer auth type, and that verification would be performed by calling the workload API
ValidateJWTSVID
operation to check the JWT and return the SPIFFE identity string (which is then used as the keystore namespace in the familiar way). - Creating a branch in the client library/libraries to populate the auth field with a JWT SVID when the service requires this auth type.
- Creating an appropriate integration test system.
- Documentation updates.
Dependencies
At the moment, the SPIFFE spec does not allow clients to call ValidateJWTSVID
without themselves being a registered SPIFFE workload. The expectation is that Parsec would not be a workload. However, the SPIFFE specification group have agreed that this restriction can be lifted. See spiffe/spiffe#132
Once the spec is changed, SPIRE (as the reference implementation) will also need to honour that change so that Parsec can call the function on a SPIRE-based system. There isn't a GH issue for that yet.
There will be a need to call SPIFFE workload API operations from Rust. We need to investigate whether this can be done by consuming https://github.com/heavypackets/rust-spiffe and adding the necessary JWT operations (since it currently only supports X509).
Definition of Done
This issue can be considered done once we have created a credible set of well-understood issues in this repo and in the other repos for an end-to-end SPIFFE multi-tenant solution. We should by this point be in a position for any contributor(s) to start implementing those pieces without requiring further investigation.