Skip to content
KafkaGuard
Get started
FeaturesDocsEnterprisePricingBlogToolsGet started
← Blog
compliance

Kafka SOC 2 Compliance Checklist: 55 Controls Auditors Actually Check

Preparing for a SOC 2 audit with Apache Kafka in scope? Here are the 55 controls auditors check — and how to pass them automatically.

KT
KafkaGuard Team·2026-04-27·7 min read

The SOC 2 Auditor Will Ask About Your Kafka Clusters

If Apache Kafka carries customer data, processes payments, or handles healthcare records, it will be in scope for your SOC 2 Type II audit. Most teams don't realise this until the auditor is already in the room.

When it happens, you'll need evidence for questions like:

  • "How do you ensure only authorised principals can read from Kafka topics?"
  • "Is inter-broker communication encrypted in transit?"
  • "How do you detect and respond to misconfigured ACLs?"
  • "What controls prevent wildcard ACLs from granting unrestricted access?"

Manual answers take weeks to gather. KafkaGuard generates audit-ready evidence in 90 seconds.


The 55 Controls — By Category

Security Controls (25)

These map directly to SOC 2 Trust Service Criteria CC6 (Logical Access) and CC7 (System Operations).

ControlWhat it checksSOC 2 Criteria
KG-001SASL authentication enabled on all brokersCC6.1, CC6.3
KG-002SSL/TLS encryption enabledCC6.1, CC6.7
KG-003ACL authorization enabledCC6.1, CC6.3
KG-004No wildcard ACLs (User:*)CC6.3, CC6.6
KG-005TLS certificates not expiring within 30 daysCC6.7
KG-006TLS protocol ≥ 1.2 (no TLS 1.0/1.1)CC6.7
KG-007Inter-broker communication encryptedCC6.7
KG-008ZooKeeper authentication enabledCC6.1
KG-009ZooKeeper ACLs enabledCC6.1
KG-010No default or weak passwordsCC6.1
KG-011SASL mechanism is SCRAM-256, SCRAM-512, or GSSAPICC6.1
KG-012Client authentication requiredCC6.1
KG-013SSL endpoint identification configuredCC6.7
KG-014Security protocol is SSL or SASL_SSLCC6.7
KG-015Monitoring endpoint securedCC7.2
KG-041Audit logging enabledCC7.2, CC7.3
KG-042Log retention ≥ 90 daysCC7.2
KG-043Encryption at rest configuredCC6.7
KG-044Mutual TLS for inter-brokerCC6.7
KG-045No deprecated TLS protocolsCC6.7
KG-046Strong cipher suites only (AES-256-GCM)CC6.7
KG-047Explicit deny ACL rules presentCC6.3
KG-048Admin access restricted (≤ 3 principals)CC6.3
KG-049Data retention policies enforcedCC6.4
KG-056KRaft authorizer compatible with controller listenerCC6.1

Reliability Controls (16)

Map to CC7 (System Availability) and CC9 (Risk Mitigation).

ControlWhat it checksSOC 2 Criteria
KG-016Replication factor ≥ 3CC9.1
KG-017Min in-sync replicas ≥ 2CC9.1
KG-018No under-replicated partitionsCC7.1
KG-019No offline partitionsCC7.1
KG-020Unclean leader election disabledCC9.1
KG-021Log retention configuredCC6.4
KG-022ZooKeeper quorum ≥ 3 nodesCC9.1
KG-023Broker versions consistentCC8.1
KG-024Broker disk usage < 90%CC7.1
KG-025Broker heap usage < 85%CC7.1
KG-026Network threads configuredCC7.1
KG-027Leader election timeout configuredCC7.1
KG-052KRaft controller quorum ≥ 3CC9.1
KG-053All KRaft voters healthyCC7.1
KG-054KRaft metadata log lag ≤ 1000CC7.1
KG-055Confluent version matches Kafka versionCC8.1

Operational Controls (14)

ControlWhat it checks
KG-028Auto-create topics disabled
KG-029Log directories not in /tmp
KG-030Delete topic disabled
KG-031Compression configured
KG-032Log segment bytes ≥ 1GB
KG-033Log retention hours configured
KG-034Network threads ≥ 8
KG-035IO threads ≥ 8
KG-036Send buffer bytes configured
KG-037Receive buffer bytes configured
KG-038Replica fetch max bytes configured
KG-039Message max bytes configured
KG-040GC logging enabled
KG-051Monitoring type configured

The 5 Controls Auditors Care About Most

In our experience scanning production clusters, these five are the most common audit failures:

1. Wildcard ACLs (KG-004)

User:* grants every principal on the cluster read/write access to every topic. It's the Kafka equivalent of chmod 777. Auditors will flag this immediately.

Fix: Replace with explicit principal-based ACLs. Run kafka-acls --list to inventory current ACLs.

2. No Audit Logging (KG-041)

SOC 2 CC7.2 requires evidence that you can detect who accessed what. Without an authorizer class configured, you have no audit trail.

Fix: Set authorizer.class.name=kafka.security.authorizer.AclAuthorizer (Kafka 3.x) or org.apache.kafka.metadata.authorizer.StandardAuthorizer (Kafka 4.0+ KRaft).

3. Log Retention < 90 Days (KG-042)

Auditors need to see historical access logs. If you purge logs in 7 days, there's nothing to show.

Fix: Set log.retention.hours=2160 (90 days) for compliance-sensitive topics.

4. TLS 1.0/1.1 Enabled (KG-045)

PCI-DSS 4.0 and SOC 2 both require that deprecated TLS versions are disabled. TLS 1.0 has known vulnerabilities.

Fix: Set ssl.enabled.protocols=TLSv1.2,TLSv1.3 on all brokers.

5. No Min-ISR Enforcement (KG-017)

If min.insync.replicas=1, a single broker failure can cause acknowledged writes to be lost — a data integrity issue that directly affects CC9.1 (risk mitigation).

Fix: Set min.insync.replicas=2 and acks=all on producers for critical topics.


See a Real Kafka Audit Report

This is an actual KafkaGuard scan output from a live Kafka 3.9 cluster — Team tier, ZooKeeper mode, SASL_SSL + SCRAM-SHA-256, finance-iso policy (55 controls, 88.4% compliance score, full PCI-DSS / SOC 2 / ISO 27001 mapping). The Community edition shows 55 controls without compliance framework IDs; upgrade to Starter for PCI-DSS, SOC 2, and ISO 27001 mappings in every report.

The report shows 48 controls passing (88.4% score) and 7 failing — with exact SOC 2 control IDs and remediation steps for every finding. This is what you hand to your auditor.


Running the Audit in 90 Seconds

# Download KafkaGuard
curl -LO https://github.com/KafkaGuard/kafkaguard-releases/releases/latest/download/kafkaguard_Linux_x86_64.tar.gz
tar -xzf kafkaguard_Linux_x86_64.tar.gz

# Run the full SOC 2 scan
./kafkaguard scan \
  --bootstrap kafka-prod:9095 \
  --security-protocol SASL_SSL \
  --sasl-mechanism SCRAM-SHA-256 \
  --sasl-username auditor \
  --sasl-password <password> \
  --tls-ca-cert /path/to/ca.pem \
  --policy policies/finance-iso.yaml \
  --format pdf,json \
  --out ./audit-evidence

The PDF report includes:

  • Overall compliance score (0–100%)
  • Each control with PASS/FAIL/N/A status
  • SOC 2 CC control IDs pre-mapped for every finding
  • Remediation steps for every failure

Hand the PDF directly to your auditor. No manual evidence gathering required.


What to Do With the Results

  1. CRITICAL/HIGH failures — Fix before the audit window. No exceptions.
  2. MEDIUM failures — Document compensating controls if you can't fix immediately.
  3. LOW failures — Note in your risk register with planned remediation date.
  4. Run again after remediation to verify — takes 90 seconds.

Policy Tiers

KafkaGuard includes three policy tiers. For SOC 2:

  • baseline-dev (21 controls) — Development clusters only
  • enterprise-default (45 controls) — Production; maps to SOC 2 CC6, CC7, CC8, CC9
  • finance-iso (55 controls) ⭐ — Full SOC 2 + PCI-DSS 4.0 + ISO 27001; recommended for regulated industries
# SOC 2 scan with enterprise-default policy
./kafkaguard scan --bootstrap kafka:9095 --policy policies/enterprise-default.yaml -f pdf

Download KafkaGuard — Free

The Community edition is free forever, covers all 55 controls, and produces HTML + JSON reports.

Download KafkaGuard →

ShareX / TwitterLinkedInCopy link
📋

Free Kafka Security Checklist

55 controls auditors check — mapped to PCI-DSS 4.0, SOC 2, and ISO 27001. Get the PDF free.

Used by 200+ platform and security engineers

No spam. Unsubscribe anytime.