doc/user/application_security/configuration/security_configuration_profiles.md
{{< details >}}
{{< /details >}}
{{< history >}}
{{< /history >}}
Security configuration profiles are centralized settings that define how and when security scanners run across your projects. Use security configuration profiles to manage security scanners across your organization efficiently. A profile-based approach applies best practices with minimal manual setup.
<i class="fa-youtube-play" aria-hidden="true"></i> For an overview, see Introducing security configuration profiles.
When you apply a profile to a group, it is applied to each individual project within that group. Profiles are not attached to the group itself, and there is no inheritance between profiles or subgroups.
Use default profiles to enable pre-configured security scanning within minutes and with minimal configuration.
To assess and manage your profiles, use the security inventory for your group as your central dashboard.
To view a high-level status (Enabled, Not Enabled, or Failed) of scanners in the group like SAST, DAST, and secret detection:
To configure a specific project:
To save time, you can apply security settings to multiple projects at once:
GitLab provides default profiles that are preconfigured scanner settings so you can enable security scanning with minimal configuration.
When you apply the secret detection profile, you enable the recommended baseline protection for secrets across your entire development workflow. The profile activates the following scan triggers:
To view technical details about the secret detection profile:
The system uses visual cues in the inventory to indicate whether your projects are protected:
Unlike pipeline-based scans, push protection does not have a last scan date because it runs in real time during the push process.
When working with security configuration profiles, you might encounter the following issues.
Push protection is event-based, not schedule-based. It intercepts secrets in real time during the git push process. Because it is active at the moment of the push command, there is no last scan date like you would expect with pipeline-based scanners.
This can occur when a project uses legacy settings while also being assigned a new profile.
To resolve this issue:
.gitlab-ci.yml file to rely solely on the profile-based configuration.[!note] The inventory tooltip is being refined to reflect the combined status of both legacy and profile-based settings.
If you're migrating from legacy scanner configuration to profile-based configuration, note the following differences:
Profile-based configuration is recommended for easier management and greater consistency across projects.