Skip to main content

Logging and Monitoring Policy (A.8.15, A.8.16)

Document ID: logging-monitoring-policy
Version: 1.0
Effective from: 2025-01-01
Owner: Founder / CEO
Review cycle: Annual


Purpose

Define what events are logged, how logs are protected, and how anomalous behaviour is detected and alerted.

Events to log

Event categorySystemLog destination
Authentication attempts (success + failure)sigmashake-ssoWorkers Logpush + D1 audit_events
API key usageCloudflare API GatewayCloudflare audit log
Evidence collection outcomessigmashake-complianceD1 evidence_runs + R2
Compliance gaps opened/closedsigmashake-complianceD1 gaps
Deployment eventsCloudflare WorkersWrangler deploy audit + deployments collector
Staff portal accesssigmashake-complianceD1 audit trail
Webhook events (Stripe, GitHub)sigmashake-complianceevidence_runs

Log retention

Log typeRetentionStorage
Evidence objects90 days immutable (Object Lock) + indefinite in practiceR2 EVIDENCE
Audit packages3 yearsR2 AUDIT_PACKAGES
D1 evidence_runsIndefinite (D1 is durable)D1
Cloudflare analytics30 days (free plan) / longer with paidCloudflare
SSO audit events90 daysD1 audit_events

Log protection

  • Evidence blobs are signed (Ed25519) and stored in R2 with Object Lock in Compliance mode
  • Daily Merkle roots make log tampering cryptographically detectable
  • D1 evidence_runs is append-only by design; no DELETE or UPDATE operations on evidence rows

Monitoring

WhatHowCadence
Collector stalenesscron-health opens gap if collector > 1.5× cadenceDaily
Anomalous SSO activitysso-audit-sync processes Okta/SSO audit eventsDaily
Worker tail consumerstail-consumer-coverage verifies log tail is activeWeekly
WAF rule statewaf-state verifies WAF is active and rules unchangedWeekly

Alerting

Discord webhook (COMPLIANCE_DISCORD_WEBHOOK) receives:

  • Evidence collection errors
  • New gap rows (severity ≥ warn)
  • Signing key rotation reminders
  • Manifest chain breaks

Evidence

CollectorCadenceControl
sso-audit-syncDailyA.5.16, A.8.15, A.8.16
cron-healthDailyA.5.36, A.8.16
tail-consumer-coverageWeeklyA.8.15, A.8.16
waf-stateWeeklyA.8.20, A.8.21, A.8.23