From 71ff84cac461e0b3ff1a5a465db7d9b198fa7c5d Mon Sep 17 00:00:00 2001 From: harsimarsandhu Date: Fri, 22 Jul 2022 15:12:48 +0530 Subject: [PATCH] Event type info in group deploy token audit events EE: true Changelog: added --- .../ee/groups/deploy_tokens/create_service.rb | 32 +++++++++++-------- .../groups/deploy_tokens/destroy_service.rb | 20 ++++++------ .../ee/groups/deploy_tokens/revoke_service.rb | 20 ++++++------ .../deploy_tokens/create_service_spec.rb | 17 ++++++++++ .../deploy_tokens/destroy_service_spec.rb | 9 ++++++ .../deploy_tokens/revoke_service_spec.rb | 9 ++++++ 6 files changed, 75 insertions(+), 32 deletions(-) diff --git a/ee/app/services/ee/groups/deploy_tokens/create_service.rb b/ee/app/services/ee/groups/deploy_tokens/create_service.rb index c31f5caa9a39bf..541d2fcfcfb487 100644 --- a/ee/app/services/ee/groups/deploy_tokens/create_service.rb +++ b/ee/app/services/ee/groups/deploy_tokens/create_service.rb @@ -16,21 +16,25 @@ def execute private def audit_event_service(deploy_token, result) - message = if result[:status] == :success - "Created group deploy token with name: #{deploy_token.name} with token_id: #{deploy_token.id} with scopes: #{deploy_token.scopes}." - else - "Attempted to create group deploy token but failed with message: #{result[:message]}" - end + if result[:status] == :success + message = "Created group deploy token with name: #{deploy_token.name} with token_id: #{deploy_token.id} with scopes: #{deploy_token.scopes}." + name = "group_deploy_token_created" + else + message = "Attempted to create group deploy token but failed with message: #{result[:message]}" + name = "group_deploy_token_creation_failed" + end - ::AuditEventService.new( - current_user, - group, - target_id: deploy_token.id, - target_type: deploy_token.class.name, - target_details: deploy_token.name, - action: :custom, - custom_message: message - ).security_event + audit_context = { + name: name, + author: current_user, + scope: group, + target: deploy_token, + message: message, + additional_details: { + action: :custom + } + } + ::Gitlab::Audit::Auditor.audit(audit_context) end end end diff --git a/ee/app/services/ee/groups/deploy_tokens/destroy_service.rb b/ee/app/services/ee/groups/deploy_tokens/destroy_service.rb index cb7f15302e76f9..86eee38251d8b1 100644 --- a/ee/app/services/ee/groups/deploy_tokens/destroy_service.rb +++ b/ee/app/services/ee/groups/deploy_tokens/destroy_service.rb @@ -18,15 +18,17 @@ def execute def audit_event_service(deploy_token) message = "Destroyed group deploy token with name: #{deploy_token.name} with token_id: #{deploy_token.id} with scopes: #{deploy_token.scopes}." - ::AuditEventService.new( - current_user, - group, - target_id: deploy_token.id, - target_type: deploy_token.class.name, - target_details: deploy_token.name, - action: :custom, - custom_message: message - ).security_event + audit_context = { + name: "group_deploy_token_destroyed", + author: current_user, + scope: group, + target: deploy_token, + message: message, + additional_details: { + action: :custom + } + } + ::Gitlab::Audit::Auditor.audit(audit_context) end end end diff --git a/ee/app/services/ee/groups/deploy_tokens/revoke_service.rb b/ee/app/services/ee/groups/deploy_tokens/revoke_service.rb index 4c59f5a555e791..b3cf6ca0745fa7 100644 --- a/ee/app/services/ee/groups/deploy_tokens/revoke_service.rb +++ b/ee/app/services/ee/groups/deploy_tokens/revoke_service.rb @@ -16,15 +16,17 @@ def execute def log_audit_event message = "Revoked group deploy token with name: #{token.name} with token_id: #{token.id} with scopes: #{token.scopes}." - ::AuditEventService.new( - current_user, - group, - target_id: token.id, - target_type: token.class.name, - target_details: token.name, - action: :custom, - custom_message: message - ).security_event + audit_context = { + name: "group_deploy_token_revoked", + author: current_user, + scope: group, + target: token, + message: message, + additional_details: { + action: :custom + } + } + ::Gitlab::Audit::Auditor.audit(audit_context) end end end diff --git a/ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb b/ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb index 690b24bfb2f78e..c07a79d0be14af 100644 --- a/ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb +++ b/ee/spec/services/ee/groups/deploy_tokens/create_service_spec.rb @@ -4,6 +4,7 @@ RSpec.describe Groups::DeployTokens::CreateService do let_it_be(:entity) { create(:group) } + let_it_be(:destination) { create(:external_audit_event_destination, group: entity) } let_it_be(:user) { create(:user) } let(:deploy_token_params) { attributes_for(:deploy_token) } @@ -23,6 +24,14 @@ expect(AuditEvent.last.details[:custom_message]).to eq(expected_message) end + before do + stub_licensed_features(external_audit_events: true) + end + + it_behaves_like 'sends correct event type in audit event stream' do + let_it_be(:event_type) { "group_deploy_token_created" } + end + context 'when group is a sub-group' do let_it_be(:parent_group) { create :group } let_it_be(:group) { create :group, parent: parent_group } @@ -47,6 +56,14 @@ expect(AuditEvent.last.details[:custom_message]).to eq(expected_message) end + + before do + stub_licensed_features(external_audit_events: true) + end + + it_behaves_like 'sends correct event type in audit event stream' do + let_it_be(:event_type) { "group_deploy_token_creation_failed" } + end end end end diff --git a/ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb b/ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb index 09d04fe3ff44b5..a19e26f7ff903b 100644 --- a/ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb +++ b/ee/spec/services/ee/groups/deploy_tokens/destroy_service_spec.rb @@ -4,6 +4,7 @@ RSpec.describe Groups::DeployTokens::DestroyService do let_it_be(:entity) { create(:group) } + let_it_be(:destination) { create(:external_audit_event_destination, group: entity) } let_it_be(:deploy_token) { create(:deploy_token, :group, groups: [entity]) } let_it_be(:user) { create(:user) } let_it_be(:deploy_token_params) { { token_id: deploy_token.id } } @@ -22,6 +23,14 @@ expect(AuditEvent.last.details[:custom_message]).to eq(expected_message) end + before do + stub_licensed_features(external_audit_events: true) + end + + it_behaves_like 'sends correct event type in audit event stream' do + let_it_be(:event_type) { "group_deploy_token_destroyed" } + end + context 'when group is a sub-group' do let_it_be(:parent_group) { create :group } let_it_be(:group) { create :group, parent: parent_group } diff --git a/ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb b/ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb index 87981df0e457da..bdf0bd049ef2bc 100644 --- a/ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb +++ b/ee/spec/services/ee/groups/deploy_tokens/revoke_service_spec.rb @@ -4,6 +4,7 @@ RSpec.describe Groups::DeployTokens::RevokeService do let_it_be(:entity) { create(:group) } + let_it_be(:destination) { create(:external_audit_event_destination, group: entity) } let_it_be(:deploy_token) { create(:deploy_token, :group, groups: [entity]) } let_it_be(:user) { create(:user) } let_it_be(:deploy_token_params) { { id: deploy_token.id } } @@ -22,6 +23,14 @@ expect(AuditEvent.last.details[:custom_message]).to eq(expected_message) end + before do + stub_licensed_features(external_audit_events: true) + end + + it_behaves_like 'sends correct event type in audit event stream' do + let_it_be(:event_type) { "group_deploy_token_revoked" } + end + context 'when group is a sub-group' do let_it_be(:parent_group) { create :group } let_it_be(:group) { create :group, parent: parent_group } -- GitLab