Skip to content
Snippets Groups Projects

Audit events for project access tokens

Merged Serena Fang requested to merge project-access-token-audit-events into master
All threads resolved!
Compare and Show latest version
8 files
+ 196
18
Compare changes
  • Side-by-side
  • Inline
Files
8
@@ -11,7 +11,7 @@ def initialize(current_user, resource, params = {})
@@ -11,7 +11,7 @@ def initialize(current_user, resource, params = {})
end
end
def execute
def execute
return error("User does not have permission to create #{resource_type} Access Token") unless has_permission_to_create?
return error("User does not have permission to create #{resource_type} access token") unless has_permission_to_create?
user = create_user
user = create_user
@@ -27,7 +27,7 @@ def execute
@@ -27,7 +27,7 @@ def execute
token_response = create_personal_access_token(user)
token_response = create_personal_access_token(user)
if token_response.success?
if token_response.success?
log_audit_event(token_response.payload[:personal_access_token])
log_event(token_response.payload[:personal_access_token])
success(token_response.payload[:personal_access_token])
success(token_response.payload[:personal_access_token])
else
else
delete_failed_user(user)
delete_failed_user(user)
@@ -37,7 +37,7 @@ def execute
@@ -37,7 +37,7 @@ def execute
private
private
attr_reader :resource_type, :resource
attr_reader :resource_type, :resource, :ip_address
def has_permission_to_create?
def has_permission_to_create?
%w(project group).include?(resource_type) && can?(current_user, :admin_resource_access_tokens, resource)
%w(project group).include?(resource_type) && can?(current_user, :admin_resource_access_tokens, resource)
@@ -107,14 +107,8 @@ def create_membership(resource, user)
@@ -107,14 +107,8 @@ def create_membership(resource, user)
resource.add_user(user, :maintainer, expires_at: params[:expires_at])
resource.add_user(user, :maintainer, expires_at: params[:expires_at])
end
end
def log_audit_event(token)
def log_event(token)
message = "Created project access token with id: %{id}" % { id: token.id }
::Gitlab::AppLogger.info "PROJECT ACCESS TOKEN CREATION: created_by: #{current_user.username}, project_id: #{resource.id}, token_user: #{token.user.name}, token_id: #{token.id}"
EE::AuditEvents::CustomAuditEventService.new(
current_user,
resource,
@ip_address,
message
).for_project.security_event
end
end
def error(message)
def error(message)
@@ -126,3 +120,5 @@ def success(access_token)
@@ -126,3 +120,5 @@ def success(access_token)
end
end
end
end
end
end
 
 
ResourceAccessTokens::CreateService.prepend_if_ee('EE::ResourceAccessTokens::CreateService')
Loading