Skip to content

Generate an audit event if policy limits are exceeded

What does this MR do and why?

Record an audit event when security policy limits are exceeded.

References

Related to #550891 (closed)

Screenshot

image

How to set up and validate locally

  1. Enable the feature flag in the Rails console:

    Feature.enable(:collect_policies_limit_audit_events)
  2. Switch to admin mode and set up the audit event streaming

  1. Set up a project with security policies exceeding the allowed policy limit:

  2. Make any changes to the policy project and wait for Security::PersistSecurityPoliciesWorker to execute

    • Alternatively, execute the worker with the configuration ID from Rails Console.
     @project = Project.find_by_fullpath(project_path)
     @configuration = @project.security_orchestration_policy_configuration
     Security::PersistSecurityPoliciesWorker.new.perform(@configuration.id)
  3. Wait for the worker ( CollectPoliciesLimitAuditEventsWorker ) to execute. Then verify an audit event of type policies_limit_exceeded is recorded.

Example Audit Event JSON
{
  "id": 751,
  "author_id": 1,
  "entity_id": 28,
  "entity_type": "Project",
  "details": {
    "policy_type": "pipeline_execution_policy",
    "policy_type_limit": 5,
    "policies_count": 8,
    "skipped_policies_count": 3,
    "active_policy_names": [
      "PEP 8",
      "PEP",
      "PEP 2",
      "PEP 3",
      "PEP 4"
    ],
    "skipped_policy_names": [
      "PEP 5",
      "PEP 6",
      "PEP 7"
    ],
    "security_policy_project_commit_sha": "997230b9bac15269a837e6d2467197cb93d80529",
    "security_policy_management_project_id": 28,
    "security_orchestration_policy_configuration_id": 17,
    "security_policy_configured_at": "2025-07-01T17:21:04.037Z",
    "event_name": "policies_limit_exceeded",
    "author_name": "Administrator",
    "author_class": "User",
    "target_id": 28,
    "target_type": "Project",
    "target_details": "Policy Limit",
    "custom_message": "Policies limit exceeded for 'Pipeline execution policy' type. Only the first 5 enabled policies will be applied",
    "ip_address": "172.16.123.1",
    "entity_path": "gitlab-org/policy-limit"
  },
  "ip_address": "172.16.123.1",
  "author_name": "Administrator",
  "entity_path": "gitlab-org/policy-limit",
  "target_details": "Policy Limit",
  "created_at": "2025-07-01T17:21:04.282Z",
  "target_type": "Project",
  "target_id": 28,
  "event_type": "policies_limit_exceeded"
}
## MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #550891 (closed)

Edited by Imam Hossain

Merge request reports

Loading