refactor: standardize audit logging for ISO27001 compliance
This commit is contained in:
@@ -4,7 +4,7 @@ from flask import request, g
|
||||
from gatehouse_app.api.v1.ssh._helpers import ssh_bp, ssh_key_service
|
||||
from gatehouse_app.exceptions import SSHKeyError, SSHKeyNotFoundError, ValidationError, SSHKeyAlreadyExistsError
|
||||
from gatehouse_app.utils.constants import AuditAction
|
||||
from gatehouse_app.models import AuditLog
|
||||
from gatehouse_app.services.audit_service import AuditService
|
||||
from gatehouse_app.utils.decorators import login_required
|
||||
from gatehouse_app.utils.response import api_response
|
||||
|
||||
@@ -34,7 +34,13 @@ def add_ssh_key():
|
||||
try:
|
||||
ssh_key, is_new = ssh_key_service.add_ssh_key(user_id=user_id, public_key=public_key, description=description)
|
||||
if is_new:
|
||||
AuditLog.log(action=AuditAction.SSH_KEY_ADDED, user_id=user_id, resource_type='SSHKey', resource_id=ssh_key.id, ip_address=request.remote_addr)
|
||||
AuditService.log_action(
|
||||
action=AuditAction.SSH_KEY_ADDED,
|
||||
user_id=user_id,
|
||||
resource_type="SSHKey",
|
||||
resource_id=ssh_key.id,
|
||||
description=f"SSH key added",
|
||||
)
|
||||
return api_response(success=True, message='SSH key added', data=ssh_key.to_dict(), status=201)
|
||||
else:
|
||||
return api_response(success=True, message='SSH key already exists', data=ssh_key.to_dict(), status=200)
|
||||
@@ -68,7 +74,13 @@ def delete_ssh_key(key_id):
|
||||
if ssh_key.user_id != user_id:
|
||||
return api_response(success=False, message='Forbidden', status=403, error_type='FORBIDDEN')
|
||||
ssh_key_service.delete_ssh_key(key_id)
|
||||
AuditLog.log(action=AuditAction.SSH_KEY_DELETED, user_id=user_id, resource_type='SSHKey', resource_id=key_id, ip_address=request.remote_addr)
|
||||
AuditService.log_action(
|
||||
action=AuditAction.SSH_KEY_DELETED,
|
||||
user_id=user_id,
|
||||
resource_type="SSHKey",
|
||||
resource_id=key_id,
|
||||
description=f"SSH key deleted",
|
||||
)
|
||||
return api_response(success=True, message='SSH key deleted', data={'status': 'deleted'}, status=200)
|
||||
except SSHKeyNotFoundError:
|
||||
return api_response(success=False, message='SSH key not found', status=404, error_type='NOT_FOUND')
|
||||
@@ -96,10 +108,25 @@ def verify_ssh_key(key_id):
|
||||
return api_response(success=False, message='signature is required', status=400, error_type='BAD_REQUEST')
|
||||
try:
|
||||
verified = ssh_key_service.verify_ssh_key_ownership(key_id, signature)
|
||||
AuditLog.log(action=AuditAction.SSH_KEY_VERIFIED, user_id=user_id, resource_type='SSHKey', resource_id=key_id, ip_address=request.remote_addr, success=verified)
|
||||
AuditService.log_action(
|
||||
action=AuditAction.SSH_KEY_VERIFIED,
|
||||
user_id=user_id,
|
||||
resource_type="SSHKey",
|
||||
resource_id=key_id,
|
||||
description=f"SSH key verified",
|
||||
success=verified,
|
||||
)
|
||||
return api_response(success=True, message='Verification complete', data={'verified': verified}, status=200)
|
||||
except Exception as e:
|
||||
AuditLog.log(action=AuditAction.SSH_KEY_VALIDATION_FAILED, user_id=user_id, resource_type='SSHKey', resource_id=key_id, ip_address=request.remote_addr, success=False, error_message=str(e))
|
||||
AuditService.log_action(
|
||||
action=AuditAction.SSH_KEY_VALIDATION_FAILED,
|
||||
user_id=user_id,
|
||||
resource_type="SSHKey",
|
||||
resource_id=key_id,
|
||||
description=f"SSH key validation failed",
|
||||
success=False,
|
||||
error_message=str(e),
|
||||
)
|
||||
return api_response(success=False, message=str(e), status=400, error_type='VERIFICATION_FAILED')
|
||||
else:
|
||||
challenge = ssh_key_service.generate_verification_challenge(key_id)
|
||||
|
||||
Reference in New Issue
Block a user