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 ## Related - Discussion in !214892: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/214892#note_2935505109 - Group secrets implementation (reference): Uses CEL for both user and pipeline auth - Slack discussion: https://gitlab.slack.com/archives/C09GSEDT50U/p1733436254123829 ## 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
issue