GitLab Secrets Manager - Group-level management
## **Problem Statement** Organizations managing multiple projects within groups need a centralized way to manage secrets at the group level. Currently, secrets can only be managed at the project level, requiring administrators to: * Duplicate secrets across multiple projects * Manage secrets individually for each project * Lack a unified view of secrets across related projects Group-level secrets management addresses these pain points by enabling: * **Centralized Management:** Secrets defined once at the group level * **Inheritance:** Projects automatically access parent group secrets * **Simplified Administration:** Reduced overhead for secret administrators * **Hierarchical Control:** Different access levels for different groups --- ## **Goals & Success Metrics** ### **Primary Goals** 1. **Enable group-level secret creation and management** - Allow _group owners_ to create, update, and delete secrets at the group level 2. **Implement access control** - Provide granular permissions for who can manage group secrets 3. **Support CI/CD integration** - Allow pipelines to fetch group secrets using explicit source specification 4. **Maintain parity with project secrets** - Feature completeness with project-level secrets manager 5. **Ensure security** - Implement proper authentication, authorization, and audit logging ### **Success Metrics** * Group owners can successfully create and manage secrets * Pipelines can fetch group secrets via `source: group/ID` syntax * All group secret operations are audited * Zero security vulnerabilities in group secrets implementation * Feature adoption across organizations with multi-project groups --- ## **Scope & Features** ### **Core Features** #### **1. Enable/Disable Group Secrets Manager** * Group owners can toggle secrets manager on/off * Automatic provisioning of OpenBao namespace and policies * State machine management (provisioning → active → deprovisioning) * Feature flag: `group_secrets_manager` #### **2. Access Control & Permissions** * Granular permission management for group secrets * Support for Users, Roles, and Groups as principals * Permission types: Create, Read, Update, Delete * CEL-based authentication similar to project secrets #### **3. Secret CRUD Operations** * **Create:** Add new secrets with optional rotation intervals * **Read:** Retrieve individual or list all group secrets * **Update:** Modify secret values, descriptions, and protection status * **Delete:** Remove secrets and clean up policies * Stale indicator mechanism for partially failed operations #### **4. Secret Rotation Reminders** * Rotation reminders via background jobs * Notification to group owners/maintainers * Parity with project-level rotation features #### **5. CI/CD Integration** * Pipelines can fetch group secrets using `source: group/ID` syntax * JWT claims include `project_group_ids` for access validation * Support for multiple secret sources in same pipeline * Secrets can only be accessed within the same group/subgroup hierarchy. #### **6. Audit Logging** * Complete audit trail for all group secret operations * Track create, update, delete, enable, disable actions * Include user, timestamp, and operation details #### **7. User Interface** * Navigation menu integration under "Secure" section * View and manage group sections * Create, read, update, and delete group secrets * Specify rotation reminders * Enable/disable toggle in group settings * Permission management in general settings ### **API Endpoints (GraphQL)** **Mutations:** * `groupSecretsManagerInitialize` - Enable secrets manager * `groupSecretsManagerDeprovision` - Disable secrets manager * `groupSecretCreate` - Create new secret * `groupSecretUpdate` - Update secret * `groupSecretDelete` - Delete secret * `groupSecretPermissionUpdate` - Grant/revoke permissions * `groupSecretPermissionDelete` - Remove all permissions **Queries:** * `group.secretsManager` - Get secrets manager status * `groupSecrets` - List all group secrets * `groupSecret(name:)` - Get specific secret * `group.secretPermissions` - List permissions ## **User Experience** ### **Group Owner Workflow** * Navigate to Secure → Secrets Manager 1. Manages secrets with optional rotation intervals * Settings -\> General -\> Permissions and Group Features 1. Enable secrets manager (triggers provisioning) 2. Configure permissions for team members 1. Add/remove users, roles, or groups 2. Assign specific permission types for managing secrets (CRUD) * Secure -\> Audit Events 1. View audit logs for Secrets Manager events ### **Developer Workflow** 1. Access group secrets via CI/CD configuration 2. Specify secret source: `source: group/ID` 3. Pipeline automatically fetches secret from group namespace 4. Secret value available in pipeline environment ``` job: secrets: TEST_SECRET: gitlab_secrets_manager: name: foo source: group/<path_of_the_group> script: - cat $TEST_SECRET ``` ## **Out of scope** * Environment or branch scoping ## **Related Resources** * [Planning Breakdown Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/479575) * [Design Issue](https://gitlab.com/gitlab-org/gitlab/-/issues/545534) * [UX Research](https://gitlab.com/gitlab-org/ux-research/-/issues/3423) * [Parent Epic: GA - GitLab Secrets Manager](https://gitlab.com/groups/gitlab-org/-/work_items/10723)
epic