Skip to main content

Audit Logging Guide

PACKAGE.broker provides structured logging and optional analytics tracking to help you monitor system activity.

Overview

Currently Implemented:

  • Structured JSON logging (all deployments)
  • Optional Analytics Engine events (Cloudflare Workers)
  • Request/response logging with correlation IDs

Planned (see Roadmap):

  • Persistent audit log database table
  • Configurable retention policies
  • Export capabilities for compliance
  • Search and filtering interface

Current Logging Capabilities

Structured Logging

All deployments emit structured JSON logs for:

  • Request/response events
  • Authentication attempts
  • Package downloads
  • Repository sync operations
  • Error conditions

What Events Are Logged

Request Logging

All HTTP requests are logged with:

  • Request ID (for correlation)
  • Timestamp
  • Method and path
  • Response status
  • Duration

Example log entry:

{
"level": "info",
"message": "Request completed",
"timestamp": "2025-01-15T10:30:00Z",
"requestId": "req_abc123",
"context": {
"method": "GET",
"path": "/packages.json",
"status": 200,
"duration": 45
}
}

Analytics Events (Cloudflare Workers)

When Analytics Engine is configured, the following events are tracked:

  • Package downloads
  • Package metadata requests
  • Repository sync operations
  • Authentication events
  • Token usage

Note: Analytics Engine is optional and requires paid Cloudflare Workers plan.

Log Format and Structure

Standard Log Format

All audit logs follow a consistent JSON structure:

{
"timestamp": "ISO 8601 timestamp",
"event": "event_category",
"action": "specific_action",
"user": "user_identifier",
"ip_address": "client_ip",
"user_agent": "client_user_agent",
"details": {
"additional": "context"
},
"severity": "info|warning|error"
}

Log Levels

  • Info: Normal operational events
  • Warning: Unusual but non-critical events
  • Error: Error conditions requiring attention

Accessing Logs

Cloudflare Workers

Workers Logs (Free Tier):

  • Automatic structured JSON logging
  • 3-day retention
  • Access via npx wrangler tail or Cloudflare dashboard

Analytics Engine (Paid Tier):

  • Optional event tracking
  • Query via Analytics Engine API
  • Longer retention available

Docker Deployment

Container Logs:

docker logs package-broker --tail 100

Log Aggregation:

  • Configure logging driver for external aggregation
  • Use Docker logging plugins (e.g., fluentd, loki)
  • Forward to centralized logging system

Planned Features

Planned Feature

The following audit logging features are planned for future releases:

  • Persistent Audit Log Table: Database-backed audit log storage
  • Retention Policies: Configurable log retention periods
  • Export API: Programmatic log export for compliance
  • Search Interface: Dashboard-based log search and filtering

See Roadmap for implementation timeline.

Compliance Considerations

For SOC-2 and ISO 27001 compliance, consider:

  1. Log Aggregation: Forward logs to external SIEM/logging system
  2. Retention: Configure retention policies in your logging infrastructure
  3. Access Control: Restrict log access to authorized personnel
  4. Monitoring: Set up alerts for security events

Next Steps

  • Review SOC-2 Compliance for compliance requirements
  • Check Roadmap for audit logging improvements
  • Configure log aggregation for your deployment environment
    docker exec package-broker-db \
    psql -U postgres -d package_broker \
    -c "COPY audit_logs TO '/tmp/audit_logs.csv' CSV HEADER;"

Exporting to SIEM

Splunk Integration

  1. Configure HTTP Event Collector:

    • Set up Splunk HEC endpoint
    • Configure authentication token
  2. Forward Logs:

    # Use Splunk Universal Forwarder
    # Or configure log forwarding in PACKAGE.broker

Datadog Integration

  1. Set up Datadog Agent:

    • Install Datadog agent
    • Configure log collection
  2. Forward Logs:

    # datadog.yaml
    logs_enabled: true
    logs_config:
    container_collect_all: true

ELK Stack Integration

  1. Configure Logstash:

    input {
    http {
    port => 5044
    }
    }

    filter {
    json {
    source => "message"
    }
    }

    output {
    elasticsearch {
    hosts => ["elasticsearch:9200"]
    }
    }
  2. Forward Logs:

    • Use HTTP input in Logstash
    • Configure PACKAGE.broker to send logs

Tamper-Proof Logging

Strategies

  1. Immutable Storage:

    • Use write-once storage
    • Enable versioning
    • Use append-only logs
  2. Digital Signatures:

    • Sign log entries
    • Verify signatures on read
    • Detect tampering
  3. External Log Aggregation:

    • Send logs to external system immediately
    • Reduce tampering risk
    • Centralized audit trail

Implementation

Example: Append-only log file

# Configure log rotation to append-only
# Use file system permissions to prevent modification
chmod 444 /var/log/package-broker/audit.log

Example: Signed logs

// Sign each log entry
const signature = crypto.sign('sha256', logEntry, privateKey);
const signedEntry = {
...logEntry,
signature: signature.toString('base64')
};

Log Analysis

Common Queries

Failed login attempts:

{
"event": "authentication",
"action": "login_failed"
}

Package downloads by user:

{
"event": "package_access",
"action": "download",
"user": "specific-user"
}

Configuration changes:

{
"event": "configuration"
}

Monitoring Alerts

Set up alerts for:

  • Multiple failed login attempts
  • Unusual access patterns
  • Configuration changes outside business hours
  • High-volume package downloads

Compliance Considerations

GDPR

  • Anonymize IP addresses if required
  • Implement data retention policies
  • Provide log export capabilities
  • Document data processing

SOC 2

  • Retain logs for required period
  • Implement log integrity controls
  • Regular log reviews
  • Document log management procedures

ISO 27001

  • Comprehensive event logging
  • Log retention policies
  • Regular log reviews
  • Tamper-proof logging

Best Practices

  1. Enable Audit Logging:

    • Enable logging on all deployments
    • Configure appropriate log levels
    • Test log collection
  2. Regular Reviews:

    • Review logs weekly
    • Investigate anomalies
    • Document findings
  3. Secure Storage:

    • Encrypt log storage
    • Restrict access to logs
    • Implement backup procedures
  4. Automation:

    • Automate log analysis
    • Set up alerts
    • Automate log exports

Troubleshooting

Logs Not Appearing

  1. Check logging is enabled
  2. Verify log storage configuration
  3. Check disk space
  4. Review log permissions

High Log Volume

  1. Adjust log levels
  2. Filter unnecessary events
  3. Implement log sampling
  4. Use log aggregation

Support

For audit logging questions: