Skip to content

Investigate and define the work required for SPIFFE-based client identity management #232

@paulhowardarm

Description

@paulhowardarm

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.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestmultitenancyGetting Parsec to provide isolated key stores for multiple clients based on an identity mechanism

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions