Catalog enhancement - allow self manage and dedicated teams to restrict users from publishing a component to a catalog
## Overview Users would like to have the option to restrict individual users (or groups of users) from publishing a component to a catalog ## Problems to solve Currently, there is no option to restrict individual users or specific user groups from publishing a component to the CI/CD Catalog, while CI team trying to enforce consistent workflows and guidelines for CI pipeline and component having engineers publish their own components to the catalog may lead to unauthorized or unintended releases without a security/compliance check. ## Potential Proposal The Catalog would only show the published components that exist on the _Catalog_Component_project_allow_list_ and ignores the rest of the published Component in other projects. An error could be raised when a user tries to publish a component from a project that is not on that list. By default, that list will show a wildcard (\*) which means all projects under the same instance are on that allow_list. A new type of policy under policy rules could store this condition. ### Additional information - When the setting is disabled - everyone can publish a component (default behavior) - When the setting is enabled only a group of users can publish a component - How do we apply such a solution for both?com & self manage - Answer: you cant restric .com users from publishing a component to the Catalog, in order to achieve that in .com please refer to https://gitlab.com/gitlab-org/gitlab/-/issues/441102+ Whenever users are trying to publish a component outside of the restricted_sources we should fail the pipeline and provide users with an error message ### MVC approach Provide a simple rails console-based configuration that allows self-managed and GitLab Dedicated customers to restrict component publishing without waiting for the full policy implementation. The solution should allow users to add a new application setting that control components publishing restriction and update the component release pipeline to check permissions to release a component to the Catalog. This MVC approach provides immediate relief for customers while the team works on the comprehensive policy solution. It's addresses the core customer pain points without requiring complex UI or policy framework development. ` ### Relevant research insight - [:dove:️ Dovetail link](https://gitlab.dovetailapp.com/insights/DKhKyheIbfedGOaC12JEq) - [:bookmark: Research issue](https://gitlab.com/gitlab-org/ux-research/-/issues/2559 "CI/CD Catalog for Self Managed customers") - [:bookmark: Research issue 2](https://gitlab.com/gitlab-org/ux-research/-/issues/2899 "Problem validation: Explore admin preferences for maintaining the CI/CD components")
epic