Migrate project secrets pipeline JWT to use CEL authentication

Problem Statement

Currently, project secrets use two different JWT authentication mechanisms:

  • User JWT: Uses CEL-based authentication (newer approach)
  • Pipeline JWT: Uses native JWT authentication (older approach)

Group secrets, implemented more recently, use CEL-based authentication for both user and pipeline contexts.

This inconsistency creates:

  1. Maintenance burden: Two different authentication code paths to maintain
  2. Migration complexity: Future changes to authentication logic need to handle both mechanisms
  3. Inconsistency: Projects and groups behave differently
  4. Technical debt: The native JWT approach is the older pattern we're moving away from

Proposal

Migrate project secrets pipeline JWT to use CEL-based authentication, matching the group secrets implementation.

Benefits

  1. Consistency: Both project and group secrets use the same authentication mechanism
  2. Simplified maintenance: Only one authentication pattern to maintain
  3. Easier migration: Migrating now (before Beta) is less risky than after customer adoption
  4. Future-proof: Aligns with the direction established by group secrets implementation
  5. Simplified architecture: As noted by @cipherboy-gitlab, we could potentially consolidate to a single auth mount with two roles instead of separate pipeline_jwt and user_jwt mounts

Why Now (Before Beta)?

  • Lower risk: Fewer users/projects to migrate
  • Easier reprovisioning: Can reprovision projects without customer impact
  • Clean slate: Start Beta with consistent architecture
  • Avoid future breaking changes: Migrating after Beta would require customer coordination

Technical Approach

Based on discussion with @cipherboy-gitlab:

  1. Consolidate auth mounts: Since auth is now within the namespace, we could use a single auth mount with two roles (pipeline and user) instead of separate pipeline_jwt and user_jwt mounts
  2. Migrate pipeline role to CEL: Convert the pipeline JWT role to use CEL-based authentication
  3. Update provisioning service: Modify project secrets manager provisioning to create CEL-based pipeline roles
  4. Migration path: Reprovision existing project secrets managers to use the new authentication

Implementation Considerations

  • This should be done before Beta to minimize migration impact
  • Existing projects would need reprovisioning (acceptable pre-Beta)
  • Group secrets already use this pattern, so we have a working reference implementation
  • Long-term, common configuration will be addressed by the next-gen design doc

Acceptance Criteria

  • Project secrets pipeline JWT uses CEL-based authentication
  • Consistent with group secrets authentication mechanism
  • Single auth mount with two roles (if feasible)
  • Existing project secrets managers can be reprovisioned
  • Documentation updated to reflect the authentication mechanism
  • No regression in pipeline secret access functionality
Edited by 🤖 GitLab Bot 🤖