diff --git a/doc/administration/audit_event_streaming/audit_event_types.md b/doc/administration/audit_event_streaming/audit_event_types.md index 3b61f8f36e120fc25af804b1a50593cd20b0ff44..2a7c3367f6a46645f3d2fdd6c2e5ef7c16e27124 100644 --- a/doc/administration/audit_event_streaming/audit_event_types.md +++ b/doc/administration/audit_event_streaming/audit_event_types.md @@ -145,6 +145,7 @@ Every audit event is associated with an event type. The association with the eve | [`group_shared_runners_minutes_limit_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups shared runners minutes limit is updated. | **{check-circle}** Yes | **{check-circle}** Yes | `groups_and_projects` | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369324) | | [`group_two_factor_grace_period_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups two factor grace period is updated. | **{check-circle}** Yes | **{check-circle}** Yes | `groups_and_projects` | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369326) | | [`group_visibility_level_updated`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106079) | Event triggered when a groups visibility level is updated. | **{check-circle}** Yes | **{check-circle}** Yes | `groups_and_projects` | GitLab [15.7](https://gitlab.com/gitlab-org/gitlab/-/issues/369322) | +| [`inactive_project_scheduled_for_deletion`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130699) | Triggered when inactive project is scheduled for deletion | **{check-circle}** Yes | **{check-circle}** Yes | `compliance_management` | GitLab [16.4](https://gitlab.com/gitlab-org/gitlab/-/issues/423263) | | [`incident_closed_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is closed using a project access token | **{check-circle}** Yes | **{check-circle}** Yes | `incident_management` | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | | [`incident_created_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is created using a project access token | **{check-circle}** Yes | **{check-circle}** Yes | `incident_management` | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | | [`incident_reopened_by_project_bot`](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/121485) | Triggered when an incident is reopened using a project access token | **{check-circle}** Yes | **{check-circle}** Yes | `incident_management` | GitLab [16.1](https://gitlab.com/gitlab-org/gitlab/-/issues/323299) | diff --git a/ee/app/workers/ee/projects/inactive_projects_deletion_cron_worker.rb b/ee/app/workers/ee/projects/inactive_projects_deletion_cron_worker.rb index 2964ccfa818bd3603e32664280d5144275e10b4f..6bb1cefd2ff2e71995611be2e79f013bac54f6cd 100644 --- a/ee/app/workers/ee/projects/inactive_projects_deletion_cron_worker.rb +++ b/ee/app/workers/ee/projects/inactive_projects_deletion_cron_worker.rb @@ -26,12 +26,15 @@ def send_deletion_warning_email?(deletion_warning_email_sent_on, project) def send_notification(project, user) super - ::AuditEventService.new( - user, - project, - action: :custom, - custom_message: "Project is scheduled to be deleted on #{deletion_date} due to inactivity." - ).for_project.security_event + audit_context = { + name: 'inactive_project_scheduled_for_deletion', + author: user, + scope: project, + target: project, + message: "Project is scheduled to be deleted on #{deletion_date} due to inactivity." + } + + ::Gitlab::Audit::Auditor.audit(audit_context) end end end diff --git a/ee/config/audit_events/types/inactive_project_scheduled_for_deletion.yml b/ee/config/audit_events/types/inactive_project_scheduled_for_deletion.yml new file mode 100644 index 0000000000000000000000000000000000000000..29bcd19d2b7af1c77716cd7f1364272e36ced3f1 --- /dev/null +++ b/ee/config/audit_events/types/inactive_project_scheduled_for_deletion.yml @@ -0,0 +1,9 @@ +--- +name: inactive_project_scheduled_for_deletion +description: Triggered when inactive project is scheduled for deletion +introduced_by_issue: https://gitlab.com/gitlab-org/gitlab/-/issues/423263 +introduced_by_mr: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/130699 +feature_category: compliance_management +milestone: '16.4' +saved_to_database: true +streamed: true diff --git a/ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb b/ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb index 11a99f8fc3b2fb7009772915bcae705d5511a7b6..1ecfecf3e5c2f4b8a96b03c88e2c20545109de9d 100644 --- a/ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb +++ b/ee/spec/workers/ee/projects/inactive_projects_deletion_cron_worker_spec.rb @@ -60,6 +60,13 @@ end it 'invokes Projects::InactiveProjectsDeletionNotificationWorker for inactive projects and logs audit event' do + audit_context = { + name: "inactive_project_scheduled_for_deletion", + message: "Project is scheduled to be deleted on #{deletion_date} due to inactivity.", + target: inactive_large_project, + scope: inactive_large_project, + author: admin_bot + } Gitlab::Redis::SharedState.with do |redis| expect(redis).to receive(:hset).with( 'inactive_projects_deletion_warning_email_notified', @@ -70,6 +77,7 @@ expect(::Projects::InactiveProjectsDeletionNotificationWorker).to receive(:perform_async).with( inactive_large_project.id, deletion_date).and_call_original expect(::Projects::DestroyService).not_to receive(:new) + expect(Gitlab::Audit::Auditor).to receive(:audit).with(audit_context).and_call_original expect { worker.perform } .to change { AuditEvent.count }.by(1)