Skip to main content

Compliance Mappings

Purpose: For security and compliance reviewers, maps openCenter controls to CIS Kubernetes Benchmark, NIST 800-53, PCI-DSS, and SOC 2 requirements.

Control Mapping Table

openCenter ControlCIS K8sNIST 800-53PCI-DSSSOC 2
Pod Security Admission (restricted)5.2.1–5.2.13AC-6, SC-72.2, 6.2CC6.1
Kyverno policy enforcement5.2.xCM-7, SI-76.1, 6.2CC6.1, CC7.1
RBAC via rbac-manager + Keycloak5.1.1–5.1.9AC-2, AC-37.1, 7.2CC6.1, CC6.2
SOPS-encrypted secrets in Git1.2.31SC-12, SC-283.4, 3.5CC6.1, CC6.7
NetworkPolicy per namespace5.3.1–5.3.2SC-7, AC-41.2, 1.3CC6.6
TLS on all ingress (cert-manager)SC-8, SC-134.1CC6.7
Audit logging (API server)1.2.22–1.2.25AU-2, AU-310.1–10.3CC7.2
etcd encryption at rest1.2.31SC-283.4CC6.1
Container image signing (Kyverno)SI-76.3CC7.1
FluxCD GitOps (immutable deploys)CM-3, CM-56.4CC8.1
Velero backupCP-9, CP-1012.10A1.2
Kubelet TLS bootstrap4.2.10SC-84.1CC6.7
API server authn/authz1.2.1–1.2.8IA-2, AC-28.1–8.3CC6.1
Disable anonymous auth1.2.1IA-28.1CC6.1
Restrict service account tokens5.1.6AC-67.2CC6.3
Node OS hardening (sysctl)3.2.xCM-62.2CC6.1

CIS Kubernetes Benchmark Coverage

openCenter targets CIS Kubernetes Benchmark v1.8. Coverage by section:

SectionTotal ControlsCovered by DefaultManual Steps Required
1 — Control Plane37316 (audit policy, encryption config)
2 — etcd770
3 — Control Plane Config431 (sysctl hardening)
4 — Worker Nodes13112 (read-only port, protect kernel)
5 — Policies29245 (network policies per tenant)

See Hardening Guide for manual steps.

NIST 800-53 Control Families

FamilyControls AddressedopenCenter Implementation
AC (Access Control)AC-2, AC-3, AC-4, AC-6Keycloak OIDC, RBAC, NetworkPolicy
AU (Audit)AU-2, AU-3, AU-6, AU-12API server audit logs, Loki
CM (Config Management)CM-3, CM-5, CM-6, CM-7GitOps, Kyverno, Kubespray hardening
CP (Contingency)CP-9, CP-10Velero, etcd backup
IA (Identification)IA-2, IA-5Keycloak, OIDC tokens, cert-manager
SC (System Comms)SC-7, SC-8, SC-12, SC-13, SC-28NetworkPolicy, TLS, SOPS, etcd encryption
SI (System Integrity)SI-7Kyverno image verification

PCI-DSS v4.0

RequirementopenCenter ControlEvidence Source
1.2 — Network segmentationCalico NetworkPolicy, namespace isolationkubectl get networkpolicies -A
2.2 — Secure configurationKubespray hardened defaults, sysctlNode config audit
3.4 — Render PAN unreadableSOPS encryption, etcd encryption.sops.yaml, encryption provider config
4.1 — TLS in transitcert-manager ClusterIssuer, Gateway TLSkubectl get certificates -A
6.2 — Secure developmentKyverno policies block unsafe imageskubectl get clusterpolicy
7.1 — Least privilegeRBAC via rbac-managerkubectl get rbacdefinitions
8.1 — User identificationKeycloak OIDC, no shared accountsKeycloak admin console
10.1 — Audit trailAPI server audit logs/var/log/kubernetes/audit.log
12.10 — Incident responseVelero backup + restorevelero backup get

SOC 2 Trust Service Criteria

CriteriaopenCenter ControlEvidence
CC6.1 — Logical accessRBAC, OIDC, namespace isolationRBACDefinition manifests in Git
CC6.2 — Auth mechanismsKeycloak MFA, OIDC tokensKeycloak realm config
CC6.6 — Network boundariesNetworkPolicy, Gateway APIGitOps manifests
CC6.7 — EncryptionTLS (cert-manager), SOPSCertificate resources, .sops.yaml
CC7.1 — Configuration managementGitOps, KyvernoGit commit history, policy reports
CC7.2 — MonitoringPrometheus, Loki, audit logsGrafana dashboards
CC8.1 — Change managementPR-based GitOps workflowGit PR history
A1.2 — RecoveryVelero, etcd backupBackup schedules and restore tests

Generating Evidence

Automated Evidence Collection

# Export Kyverno policy reports
kubectl get policyreports -A -o yaml > evidence/kyverno-reports.yaml

# Export RBAC state
kubectl get rbacdefinitions -o yaml > evidence/rbac-definitions.yaml
kubectl get clusterrolebindings -o yaml > evidence/cluster-role-bindings.yaml

# Export network policies
kubectl get networkpolicies -A -o yaml > evidence/network-policies.yaml

# Export certificate state
kubectl get certificates -A -o yaml > evidence/certificates.yaml

# Export FluxCD reconciliation state
flux get all -A > evidence/flux-state.txt

Audit Report Generation

Use the CLI to generate a compliance snapshot:

# Validate cluster configuration offline
opencenter cluster validate --output json > evidence/config-validation.json

# Validate GitOps manifests
opencenter cluster validate --manifests > evidence/manifest-validation.txt

Continuous Compliance

Schedule periodic evidence collection via a CronJob:

apiVersion: batch/v1
kind: CronJob
metadata:
name: compliance-evidence
namespace: monitoring
spec:
schedule: "0 2 * * 1" # Weekly Monday 2am
jobTemplate:
spec:
template:
spec:
serviceAccountName: compliance-collector
containers:
- name: collector
image: bitnami/kubectl:latest
command:
- /bin/sh
- -c
- |
kubectl get policyreports -A -o json > /evidence/kyverno-$(date +%Y%m%d).json
kubectl get networkpolicies -A -o json > /evidence/netpol-$(date +%Y%m%d).json
volumeMounts:
- name: evidence
mountPath: /evidence
volumes:
- name: evidence
persistentVolumeClaim:
claimName: compliance-evidence-pvc
restartPolicy: OnFailure