Skip to main content

Audit Logging & Compliance

ChainLaunch Pro includes comprehensive audit logging for compliance, security monitoring, and troubleshooting. This guide covers how to use audit logs, configure logging, and generate compliance reports.

Overview

The audit logging system tracks:

  • User Actions - Who did what, when, and from where
  • Resource Changes - Before/after snapshots of modifications
  • Permission Changes - Role and permission assignments
  • System Events - Backups, restores, deployments
  • Security Events - Authentication, authorization denials
  • API Access - All API calls and their results

Audit Log Components

User Information

  • User ID - Unique identifier for the user
  • Username - User's login name
  • Email - User's email address
  • IP Address - Source IP of the request
  • Session ID - Unique session identifier

Action Information

  • Action Type - CREATE, READ, UPDATE, DELETE, EXECUTE, SIGN, etc.
  • Resource Type - Network, Node, Key, User, etc.
  • Resource ID - Unique identifier for the affected resource
  • Resource Name - Human-readable name
  • Timestamp - When the action occurred (UTC)

Change Details

  • Before State - Previous values (for updates)
  • After State - New values (for updates)
  • Status - Success, Failed, Denied
  • Error Message - Details if action failed
  • Duration - Execution time in milliseconds

Request Information

  • HTTP Method - GET, POST, PUT, DELETE, etc.
  • Endpoint - API endpoint called
  • Request ID - Unique request identifier for tracing
  • User Agent - Client software information
  • Response Code - HTTP status code (200, 403, 500, etc.)

Viewing Audit Logs

Via UI

Navigate to Audit Logs:

  1. Go to Settings → Audit Logs
  2. View recent activities with filtering options
  3. Click an entry to see full details

Filter By:

  • User - Select specific user
  • Action - CREATE, UPDATE, DELETE, EXECUTE, etc.
  • Resource Type - Network, Node, Key, User, etc.
  • Resource - Specific resource name
  • Date Range - Custom time period
  • Status - Success or Failed

Via API

Get Recent Audit Logs:

curl -X GET "http://localhost:8080/api/v1/audit-logs?limit=50&offset=0" \
-H "Authorization: Bearer YOUR_API_KEY"

Filter by User:

curl -X GET "http://localhost:8080/api/v1/audit-logs?user_id=user-123" \
-H "Authorization: Bearer YOUR_API_KEY"

Filter by Date Range:

curl -X GET "http://localhost:8080/api/v1/audit-logs?start_date=2024-01-01&end_date=2024-01-31" \
-H "Authorization: Bearer YOUR_API_KEY"

Filter by Action Type:

curl -X GET "http://localhost:8080/api/v1/audit-logs?action=NETWORK_CREATE" \
-H "Authorization: Bearer YOUR_API_KEY"

Get Full Event Details:

curl -X GET "http://localhost:8080/api/v1/audit-logs/{logId}" \
-H "Authorization: Bearer YOUR_API_KEY"

Audit Log Examples

Network Creation

{
"id": "audit-log-1",
"timestamp": "2024-01-15T10:30:00Z",
"user": "alice@example.com",
"action": "NETWORK_CREATE",
"resource_type": "network",
"resource_name": "prod-fabric-network",
"status": "success",
"details": {
"network_type": "fabric",
"orderer_count": 3,
"peer_count": 4
},
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0..."
}

Node Configuration Update

{
"id": "audit-log-2",
"timestamp": "2024-01-15T11:45:00Z",
"user": "bob@example.com",
"action": "NODE_UPDATE",
"resource_type": "node",
"resource_name": "peer-org1",
"status": "success",
"before": {
"cpu_limit": "4",
"memory_limit": "8Gi"
},
"after": {
"cpu_limit": "8",
"memory_limit": "16Gi"
},
"ip_address": "192.168.1.101"
}

Permission Denial

{
"id": "audit-log-3",
"timestamp": "2024-01-15T12:00:00Z",
"user": "charlie@example.com",
"action": "NETWORK_DELETE",
"resource_type": "network",
"resource_name": "prod-fabric-network",
"status": "denied",
"error_message": "User lacks NETWORK_DELETE permission",
"ip_address": "192.168.1.102"
}

API Key Revocation

{
"id": "audit-log-4",
"timestamp": "2024-01-15T13:15:00Z",
"user": "admin@example.com",
"action": "API_KEY_REVOKE",
"resource_type": "api_key",
"resource_name": "ci-cd-key",
"status": "success",
"reason": "Key expiration policy",
"ip_address": "192.168.1.100"
}

Audit Log Retention

Default Policy

  • Active Logs: Last 90 days available in UI
  • Archive: Logs older than 90 days automatically archived
  • Compliance Backups: All logs included in system backups

Configuring Retention

Via Configuration File:

audit:
retention_days: 365 # Keep for 1 year
archive_interval_days: 30 # Archive after 30 days
backup_with_audit_logs: true # Include in backups
max_log_size_gb: 10 # Rotate when hitting size

Via API:

curl -X POST http://localhost:8080/api/v1/settings/audit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"retention_days": 365,
"archive_after_days": 30,
"include_in_backups": true
}'

Generating Compliance Reports

Activity Report

Via UI:

  1. Go to Settings → Audit Logs
  2. Click Generate Report
  3. Select Activity Report
  4. Choose date range
  5. Click Generate and download CSV

Via API:

curl -X POST http://localhost:8080/api/v1/reports/activity \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"format": "csv"
}' \
--output activity-report.csv

User Access Report

Via UI:

  1. Go to Settings → Audit Logs
  2. Click Generate Report
  3. Select User Access Report
  4. Choose user (or all users)
  5. Click Generate and download

Via API:

curl -X POST http://localhost:8080/api/v1/reports/user-access \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_id": "user-123",
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"format": "pdf"
}' \
--output user-access-report.pdf

Permission Changes Report

Track all RBAC modifications:

curl -X GET "http://localhost:8080/api/v1/audit-logs?action=permission_changed&days=30" \
-H "Authorization: Bearer YOUR_API_KEY"

Security Events Report

Identify authentication failures and denied actions:

curl -X GET "http://localhost:8080/api/v1/audit-logs?status=denied&days=30" \
-H "Authorization: Bearer YOUR_API_KEY"

Compliance Certifications

ChainLaunch Pro audit logging supports compliance with:

SOC 2 Type II

  • ✅ Access controls logging
  • ✅ Change management tracking
  • ✅ User activity monitoring
  • ✅ Audit log retention (configurable up to 7 years)
  • ✅ Log integrity verification

HIPAA (Healthcare)

  • ✅ Comprehensive audit trails
  • ✅ User identification and authentication
  • ✅ Access logs with timestamps
  • ✅ Accountability for actions
  • ✅ Data retention policies

GDPR (Data Protection)

  • ✅ Data access logging
  • ✅ Data deletion tracking
  • ✅ Purpose limitation logging
  • ✅ Consent tracking
  • ✅ Right to audit compliance

PCI DSS (Payment Cards)

  • ✅ User access tracking
  • ✅ Administrative action logging
  • ✅ Failed access attempt logging
  • ✅ System logs retention
  • ✅ Log protection mechanisms

FedRAMP (Government)

  • ✅ Audit event types
  • ✅ Audit trail generation
  • ✅ Audit log protection
  • ✅ Audit log retention
  • ✅ Audit log analysis

Log Integrity & Security

Protection Mechanisms

  1. Write-Once Storage - Audit logs cannot be modified once created
  2. Integrity Verification - Cryptographic checksums prevent tampering
  3. Immutable Archive - Archived logs are read-only
  4. Access Control - Only authorized users can view logs
  5. Encryption - Logs encrypted at rest (AES-256)
  6. Backup Verification - Logs verified during backup/restore

Verification

Verify log integrity:

curl -X POST http://localhost:8080/api/v1/audit-logs/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"start_id": "audit-log-1000",
"end_id": "audit-log-2000"
}'

Log Analysis Examples

Find All Network Changes in Last 7 Days

curl -X GET "http://localhost:8080/api/v1/audit-logs?resource_type=network&action=NETWORK_UPDATE&days=7" \
-H "Authorization: Bearer YOUR_API_KEY"

Find Failed API Calls

curl -X GET "http://localhost:8080/api/v1/audit-logs?status=failed" \
-H "Authorization: Bearer YOUR_API_KEY"

Find User Activity for Specific User

curl -X GET "http://localhost:8080/api/v1/audit-logs?user_id=user-123&days=30" \
-H "Authorization: Bearer YOUR_API_KEY"

Find All Deletion Events

curl -X GET "http://localhost:8080/api/v1/audit-logs?action=DELETE&days=90" \
-H "Authorization: Bearer YOUR_API_KEY"

Find Suspicious Activity (Multiple Failures)

curl -X GET "http://localhost:8080/api/v1/audit-logs?status=denied&limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"

Best Practices

1. Regular Audit Review

  • Weekly: Check for failed access attempts
  • Monthly: Review permission changes
  • Quarterly: Generate compliance reports
  • Annually: Perform full security audit

2. Alert on Critical Events

Set up notifications for:

  • User deletion
  • Permission elevation
  • Failed authentication attempts (>5 in 5 minutes)
  • System configuration changes
  • Network deletion

3. Separate Audit Admin Role

Create a dedicated audit administrator role with:

  • Full audit log READ access
  • Report generation permission
  • No other operational permissions

4. Export and Archive

  • Export logs regularly for long-term storage
  • Archive to write-once storage for legal holds
  • Maintain offline backups for disaster recovery
  • Use cryptographic verification

5. Monitor for Anomalies

  • Alert if user performs unusual actions
  • Flag bulk deletions
  • Detect unusual access times
  • Monitor failed login attempts

Troubleshooting

Missing Audit Logs

  1. Check retention settings - Verify logs haven't been purged
  2. Check user permissions - Verify user has audit log access
  3. Check date range - Verify querying correct time period
  4. Check API key permissions - Ensure key includes SYSTEM_MONITOR

Audit Log Export Fails

  1. Check disk space - Ensure sufficient storage for export
  2. Check network connectivity - If exporting to S3/GCS
  3. Check credentials - Verify cloud storage credentials
  4. Check file permissions - Ensure write permissions to export directory

Report Generation Slow

  1. Reduce date range - Query shorter time periods
  2. Filter results - Use specific action or resource type
  3. Archive old logs - Move logs older than 6 months to archive
  4. Check system load - Audit query may be resource intensive

See Also