Evidence Collection Checklist

Audit evidence preparation checklist

Public

Purpose

This checklist helps prepare evidence for internal audits and external ISO 27001 certification audits. It identifies what records to collect, where to find them, and how to organise them.

The ISMS covers Maelstrom AI as the organisation, operating two platforms under one team and one ISMS — Provii (zero-knowledge age verification) and downpipes (no-custody backup & disaster recovery for the Cloudflare data layer). Collect evidence for both platforms. Where a control is organisation-level (governance, access control, change management, supplier management) the same record covers both; where it is product-specific (cryptography, infrastructure, backup), gather evidence for each platform, noting the no-custody operating-model boundary for downpipes — the engine and console run in the customer’s own Cloudflare account, under the customer’s keys (a complementary user-entity control), so the customer-operated instances are out of Maelstrom’s direct evidence reach.

Use this checklist:

  • 4 weeks before internal audit
  • 8 weeks before external certification audit
  • Continuously (collect evidence as you go)

General Principles

Evidence Types

Documentary Evidence: Policies, procedures, records Physical Evidence: Configurations, system settings (screenshots) Testimonial Evidence: Interviews, explanations (during audit)

Quality of Evidence

Good evidence is:

  • Relevant. Directly demonstrates control implementation
  • Current. Recent enough to show ongoing compliance
  • Complete. Shows the full process, not just one instance
  • Objective. Factual records, not just assertions

Evidence Organisation

Recommended structure:

Audit-Evidence-YYYY-MM/
├── 01-Policies/
├── 02-Risk-Management/
├── 03-Operational-Security/
├── 04-Access-Control/
├── 05-Cryptography/
├── 06-SDLC-Security/
├── 07-Incident-Response/
├── 08-Records/
└── README.md (index of all evidence)

Clause 4: Context of the Organisation

Evidence ItemLocationDate RangeResponsible
4.1-4.2: Context Analysis/security/context-analysisCurrent versionISMS Owner
4.3: ISMS Scope/security/isms-scopeCurrent versionISMS Owner
Approval recordsGit commit historyLatest approvalISMS Owner

Action: Export latest versions as PDF, include git log showing last review date.


Clause 5: Leadership

Evidence ItemLocationDate RangeResponsible
5.1: Management commitmentManagement review minutesLast 12 monthsISMS Owner
5.2: Information Security Policy/security/information-security-policyCurrent versionISMS Owner
Policy approvalGit commit historyLatest versionISMS Owner
5.3: Roles and Responsibilities/security/roles-responsibilitiesCurrent versionISMS Owner
Role assignmentsTeam roster, access listsCurrentSecurity Lead

Action: Show management review minutes demonstrating leadership engagement. Export policy with approval date.


Clause 6: Planning

Evidence ItemLocationDate RangeResponsible
6.1.1: Risk assessment process/security/risk-methodologyCurrent versionSecurity Lead
6.1.2: Risk treatment/security/risk-registerLast 3 monthsSecurity Lead
Risk assessment recordsRisk register updatesQuarterlySecurity Lead
6.1.3: Information security objectivesInformation Security PolicyCurrent versionISMS Owner
Objectives measurementMetrics reports (incidents, vulnerabilities)Last 12 monthsSecurity Lead
6.2: Planning changesChange management records (PRs, deployment logs)Last 3 monthsSecurity Lead

Action: Show risk register is current (updated within last 3 months). Demonstrate objectives are measured (metrics).


Clause 7: Support

Evidence ItemLocationDate RangeResponsible
7.1: ResourcesBudget allocation, staffing planCurrent yearISMS Owner
Security toolsList of tools (GitHub, Cloudflare, password manager)CurrentSecurity Lead
7.2: CompetenceTraining recordsAll current team + last 12 monthsSecurity Lead
Competence requirementsRoles & ResponsibilitiesCurrentISMS Owner
7.3: AwarenessTraining completion recordsLast 12 monthsSecurity Lead
Policy acknowledgementsSigned acknowledgement formsAll current teamSecurity Lead
7.4: CommunicationSecurity communications (Signal, email, meetings)Last 3 monthsSecurity Lead
7.5: Documented informationISMS documentation (all pages)Current versionsSecurity Lead
Document controlGit commit history (version control)Last 12 monthsSecurity Lead

Action:

  • Collect training completion records (who, when, topic)
  • Screenshot GitHub org members (demonstrates resourcing)
  • Export ISMS documentation with version history

Clause 8: Operation

Evidence ItemLocationDate RangeResponsible
8.1: Operational planningProcedures documented in ISMSCurrent versionsSecurity Lead
8.2: Risk assessmentQuarterly risk assessment recordsLast 12 monthsSecurity Lead
8.3: Risk treatmentRisk treatment implementation evidenceOngoingSecurity Lead

Action: Show procedures are followed (sample 5 changes, verify they followed change management process).


Clause 9: Performance Evaluation

Evidence ItemLocationDate RangeResponsible
9.1: Monitoring and measurementSecurity metrics reportsLast 12 monthsSecurity Lead
Incident logsIncident response recordsLast 12 monthsSecurity Lead
Vulnerability scansGitHub security alerts, DependabotLast 3 monthsSecurity Lead
9.2: Internal auditInternal audit reportLast auditInternal Auditor
Audit checklist (completed)Audit recordsLast auditSecurity Lead
Corrective action recordsAction trackerSince last auditSecurity Lead
9.3: Management reviewManagement review minutesLast reviewISMS Owner
Management review inputsMetrics, audit results, risk registerLast reviewSecurity Lead

Action:

  • Compile security metrics (incidents, vulnerabilities, training)
  • Include completed internal audit report with findings and corrective actions
  • Include management review minutes

Clause 10: Improvement

Evidence ItemLocationDate RangeResponsible
10.1: Nonconformity and corrective actionCorrective action registerLast 12 monthsSecurity Lead
Corrective action effectivenessFollow-up verification recordsSince actions implementedSecurity Lead
10.2: Continual improvementISMS updates, control improvementsLast 12 monthsSecurity Lead
Improvement logManagement review, retrospectivesLast 12 monthsISMS Owner

Action: Show examples of improvements made (e.g., SOA controls moving from “Planned” to “Implemented”).


Annex A Controls: Selected Examples

A.5.1: Policies for Information Security

EvidenceLocation
Information Security Policy/security/information-security-policy
Policy approvalGit commit (date, approver)
Policy communicationTraining records (all staff read policy)

A.5.15: Access Control

EvidenceLocation
Access Control Policy/security/access-control
Access listsGitHub org members, Cloudflare users (screenshot)
Access review recordsQuarterly review spreadsheet/log
MFA enforcementScreenshots showing MFA required on GitHub, Cloudflare
Provisioning/revocation logsGitHub audit log, onboarding/offboarding checklists

Action: Screenshot GitHub “People” page showing MFA status. Export Cloudflare user list. Provide last access review.


A.5.24: Incident Management Planning and Preparation

EvidenceLocation
Incident Response procedure/security/incident-response
Incident recordsIncident log (last 12 months)
Incident postmortemsCompleted postmortems (if incidents occurred)
Contact informationsecurity@maelstrom.au documented
Test/drill recordsTabletop exercise or real incident response

Action: If no real incidents, document a tabletop exercise (simulated incident, how we’d respond).


EvidenceLocation
Compliance registerAustralian Privacy Act, ISO 27001 (documented in context analysis)
Privacy compliance (Provii)Zero-knowledge architecture (date of birth processed ephemerally at issuance; no PII persisted server-side; verification collects no PII)
Privacy compliance (downpipes)No-custody architecture — Maelstrom holds no customer keys, data or Cloudflare tokens; backups run in the customer’s own Cloudflare account under the customer’s keys, so Maelstrom adds no sub-processor for customer backup data
Supplier contractsCloudflare, GitHub agreements (data processing addendum)

Action: Export Cloudflare/GitHub contract terms. Document the zero knowledge architecture (Provii) and the no-custody architecture (downpipes) as the privacy compliance strategy.


A.8.3: Management of Technical Vulnerabilities

EvidenceLocation
Vulnerability management processDependabot, cargo audit, npm audit (in CI/CD)
Vulnerability scan resultsGitHub security alerts, Dependabot PRs
Patch recordsPRs addressing vulnerabilities (timestamps show <24hr for critical)

Action: Screenshot GitHub security overview (vulnerabilities, Dependabot). Export sample vulnerability → patch → merge timeline.


A.8.9: Configuration Management

EvidenceLocation
Configuration management procedureGit-based configuration (wrangler.toml, CI/CD)
Configuration baselineswrangler.toml in Git (versioned)
Configuration change controlPRs for configuration changes (review required)

Action: Show wrangler.toml in Git. Show sample PR changing configuration (review, approval, CI).


A.8.23: Web Filtering

Status: Not Applicable (no corporate network)

Evidence: N/A justification documented in SOA


A.8.24: Use of Cryptography

EvidenceLocation
Cryptography Policy/security/cryptography-policy
Approved algorithms (Provii)Groth16, RedJubjub, BLAKE2, HMAC-SHA256 documented
Approved algorithms (downpipes)Post-quantum hybrid archive sealing documented in Cryptography Policy
Key management procedureKey generation, storage, rotation documented
Key rotation recordsAudit log of key rotations
JWKSPublic verification keys published
downpipes vendor-side signersAsset Register CRYPTO-008 (Licence Signer), CRYPTO-009 (Update Signer, held offline)

Action: Export cryptography policy. Show JWKS (public keys). Provide audit log entry for last key rotation. For downpipes, show that archives are sealed under customer-held keys (no-custody — Maelstrom holds no customer encryption keys); evidence the two vendor-side signers only (Licence Signer, offline Update Signer).


Operational Evidence

Secure Development Lifecycle

EvidenceLocation
Secure coding guidelinesCryptography Policy, Security Awareness
Code review requirementBranch protection rules (screenshot)
Security scanningCI/CD workflow files (.github/workflows/)
Security scan resultsRecent CI/CD runs (passing scans)
SLSA complianceProvenance attestations on GitHub releases
downpipes update channel integritySignature-pinned, pull-only update channel (updates.downpipes.io); engines verify each update against a pinned public key before applying; signing performed offline by the operator with the Update Signer (never deployed to any Worker)

Action:

  • Screenshot GitHub branch protection (require review, passing CI)
  • Export CI workflow files (show CodeQL, cargo audit, npm audit)
  • Show SLSA provenance on a recent release
  • For downpipes, show a signed, signature-pinned update artefact and evidence the offline-held Update Signer

Logging and Monitoring

EvidenceLocation
Logging policyData Retention Policy
Audit logsCloudflare Workers Logs (Grafana Loki), KV audit logs (sample)
Log retention90 days (audit logs, including IP addresses) documented; critical security event logs are retained for up to 365 days
Log reviewEvidence of logs reviewed (incident investigations, or periodic review)
downpipes self-monitoringScored security posture with regression alerts, hourly canary integrity flights, operator-paging notification rules (the engine runs dark — no standing inbound vendor path)
downpipes consent diagnosticsRedaction-safe signed support bundle plus owner-minted, time-boxed, scoped, immediately-revocable read-only pull credentials (no standing vendor access)

Action: Screenshot Grafana Loki dashboard for the Workers Logs sink. Provide sample audit log entry (redacted if needed). For downpipes, show the security-posture report and canary-flight evidence, and document the consent-diagnostics model (no standing vendor access).


Business Continuity

EvidenceLocation
Business Continuity Plan/security/business-continuity
Backup strategySigning key backups, Git backups documented
Cloudflare data-layer backupMaelstrom’s entire Cloudflare estate is backed up by our own production instance of downpipes (3-2-1 fan-out, post-quantum sealed under operator-held keys) — see Cloudflare Backup Evidence
RTO/RPO definedDocumented for each service (Provii services and the vendor-operated downpipes control-plane and update channel)
DR testEvidence of testing (real incident or tabletop); hourly canary integrity flights and scheduled in-account restore drills from the dogfooded downpipes instance

Action: Document last incident that tested BC plan (or conduct tabletop exercise). Provide the dogfooded downpipes restore-drill and canary-flight reports as continuous backup-verification evidence.


Supplier Management

EvidenceLocation
Supplier Management procedure/security/supplier-management
Critical supplier listCloudflare, GitHub documented
Supplier risk assessmentsDocumented in supplier management
Supplier contractsCloudflare, GitHub ToS + DPA
Supplier monitoringStatus page checks, security advisories reviewed
downpipes sub-processorsNone added for customer data — downpipes is no-custody (runs in the customer’s own Cloudflare account under the customer’s keys), so Maelstrom introduces no sub-processor for customer backup data

Action: Export supplier contracts. Screenshot Cloudflare/GitHub status pages (monitoring evidence).


Records to Maintain Ongoing

Access Control

  • GitHub organisation members list (quarterly)
  • Cloudflare account users list (quarterly)
  • Access review completion records (quarterly)
  • Onboarding checklists (per hire)
  • Offboarding checklists (per departure)

Training

  1. Training completion records (per person, per training)
  2. Training acknowledgement forms
  3. Training content (slides, videos, documentation links)

Risk Management

  1. Risk assessment records (quarterly)
  2. Risk register updates (quarterly)
  3. Risk treatment plans (per risk)

Incident Response

  1. Incident reports (per incident)
  2. Incident postmortems (per P0/P1 incident)
  3. Incident log (all incidents)

Change Management

  1. Pull requests (all changes)
  2. Deployment logs (wrangler CLI output, GitHub Actions)
  3. Emergency change log (if any emergency changes)

Cryptography

  • Key generation ceremonies (per key)
  • Key rotation records (annually)
  • JWKS updates (per rotation)
  • Key status transitions (Active → Deprecated → Disabled)
  • downpipes vendor-side signer records (Licence Signer, offline Update Signer) — customer-held downpipes encryption keys are no-custody and are not Maelstrom records

Audits

  1. Internal audit reports (annually)
  2. Corrective action register (ongoing)
  3. Management review minutes (quarterly)

Evidence Sources

GitHub

What to export:

  • Organisation settings (screenshot: MFA required, members, teams)
  • Branch protection rules (screenshot)
  • Security overview (vulnerabilities, Dependabot)
  • Recent pull requests (showing code review, CI passing)
  • GitHub Actions workflow files (CI/CD)
  • GitHub Actions run logs (security scans passing)
  • Audit log (access provisioning/revocation)

How:

  • GitHub UI → Organisation Settings → Security & Analysis
  • GitHub UI → Repository → Insights → Security
  • git log for commit history

Cloudflare

What to export:

  • Account users (screenshot)
  • Workers deployments (wrangler CLI logs) — Provii Workers and the vendor-operated downpipes control-plane; the dogfooded downpipes engine/console run in Maelstrom’s own account
  • KV namespaces (list, not contents)
  • Analytics (uptime, traffic)
  • Security events (if any)

How:

  • Cloudflare Dashboard → Account → Members
  • wrangler whoami (authentication)
  • Cloudflare Dashboard → Analytics

downpipes (customer-operated). A downpipes customer’s engine and console run in the customer’s own Cloudflare account under the customer’s keys (a complementary user-entity control), so those running instances are not part of Maelstrom’s Cloudflare account export. Maelstrom evidences the software it builds, the vendor-operated control-plane and update channel, and its own dogfooded production instance.


Local Systems

What to export:

  • Training records (spreadsheet: who, what, when, status)
  • Incident log (spreadsheet or issue tracker)
  • Risk register (current version from docs)
  • Management review minutes (document)
  • Internal audit report (document)

How:

  • Maintain in Google Docs, GitHub Issues, or simple spreadsheet
  • Export as PDF for audit

Audit Preparation Timeline

8 Weeks Before External Audit

  • Review this checklist
  • Identify gaps in evidence
  • Start collecting missing evidence
  • Update ISMS documentation (if outdated)

4 Weeks Before

  • Complete evidence collection
  • Organise evidence into folders
  • Create evidence index (README)
  • Conduct mock internal audit
  • Address any findings from mock audit

2 Weeks Before

  • Finalise evidence package
  • Share evidence index with auditor (if pre-audit review)
  • Prepare team for interviews
  • Review ISMS documents (everyone knows where to find things)

1 Week Before

  1. Confirm evidence access (can auditor access GitHub, Cloudflare if needed?)
  2. Confirm audit logistics (date, time, attendees, agenda)
  3. Final check: all documents current

During Audit

  • Provide evidence as requested
  • Take notes on findings
  • Ask questions if unclear
  • Professional, honest, transparent

After Audit

  • Review findings
  • Develop corrective action plans
  • Implement corrective actions
  • Verify effectiveness
  • Document lessons learned

Tips for Effective Evidence

Do:

  • Keep evidence up-to-date (don’t scramble before audit)
  • Organise evidence logically (auditor can find what they need)
  • Use timestamps (show when actions occurred)
  • Be honest (if something isn’t done, say so, don’t fabricate)

Don’t:

  • Create evidence just for the audit (auditor will see through it)
  • Provide more evidence than requested (stay focused)
  • Hide weaknesses (auditor will find them anyway, honesty builds trust)

  1. Internal Audit Program - What auditors will check
  2. Statement of Applicability - All controls implemented
  3. Management Review - Quarterly review outputs
  4. ISMS Scope Statement - Two-platform scope and the downpipes operating-model boundary
  5. Cloudflare Backup Evidence - Self-hosted downpipes backup of Maelstrom’s Cloudflare estate

Document Information

  • Version. 2.1
  • Effective Date. 2025-01-13 (initial), 2026-06-19 (updated)
  • Last Updated. 2026-06-19
  • Owner. ISMS Owner
  • Review Frequency. Annually (before audit)
  • Next Review. 2027-01-13
  • Classification. Public
  • Change (2.1). downpipes added as second in-scope platform; the legacy backup worker retired in favour of self-hosted downpipes. Added downpipes evidence to the cross-cutting controls (cryptography, supply chain, infrastructure, logging/monitoring, business continuity, supplier management) and reframed the Cloudflare data-layer backup onto Maelstrom’s own production instance of downpipes (linking the renamed Cloudflare Backup Evidence).