Seguridad y Gobierno
Autenticación
Todos los componentes del pipeline se protegen con autenticación a nivel de plataforma (OpenShift OAuth vía Keycloak) y a nivel de workload (SCRAM-SHA-512 para clientes Kafka).
KafkaUser con ACLs
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaUser
metadata:
name: cdc-consumer
labels:
strimzi.io/cluster: cdc-cluster
spec:
authentication:
type: scram-sha-512
authorization:
type: simple
acls:
- resource:
type: topic
name: cdc.public.*
patternType: prefix
operations: [Read, Describe]
host: "*"
- resource:
type: group
name: cdc-consumer-group
operations: [Read]
-
scram-sha-512— autenticación basada en credenciales gestionadas por Strimzi -
ACLs restringen qué topics y consumer groups puede acceder cada cliente
-
Strimzi provisiona automáticamente los Secrets de Kubernetes con las credenciales
Encriptación
Private Endpoints
Todos los servicios son internos al cluster OpenShift. El acceso externo se provee únicamente mediante OpenShift Routes con terminación TLS edge:
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: kafka-console
spec:
tls:
termination: edge
insecureEdgeTerminationPolicy: Redirect
to:
kind: Service
name: kafka-console-console-service
Ningún puerto de Kafka broker se expone fuera del cluster.
How it Works
Autenticación SCRAM-SHA-512 en Kafka
SCRAM (Salted Challenge Response Authentication Mechanism) funciona como un handshake de 4 pasos entre el cliente y el broker:
-
El cliente envía su username al broker.
-
El broker responde con un salt aleatorio y el iteration count almacenado para ese usuario.
-
El cliente genera un salted password usando PBKDF2 con SHA-512, calcula una client proof criptográfica, y la envía al broker.
-
El broker verifica la proof contra las credenciales almacenadas y envía una server signature que el cliente valida.
En ningún momento la contraseña viaja en texto plano. Strimzi automatiza todo el ciclo de vida: al crear un KafkaUser CR, el User Operator genera las credenciales SCRAM, las almacena en Kafka, y crea un Secret de Kubernetes con la contraseña para que los clientes la monten como variable de entorno.
TLS: encriptación en tránsito
-
Client → Broker: el listener TLS (port 9093) termina TLS en el broker. Strimzi genera certificados automáticamente usando una CA interna (
cdc-cluster-cluster-ca-cert). -
Broker → Broker: la comunicación inter-broker usa TLS mutuo (mTLS). Cada broker tiene su propio certificado firmado por la CA del cluster.
-
Service Mesh (mTLS ambient): Istio ambient mode agrega una segunda capa de mTLS a nivel L4 (ztunnel), encriptando todo el tráfico TCP entre pods del namespace
kafka-cdc— incluso el tráfico al listenerplain(9092) queda encriptado a nivel de red.
ACLs: autorización granular
Las ACLs de Kafka operan como listas blancas — todo está denegado por default:
-
Cada ACL define un principal (usuario SCRAM), un recurso (topic, group, cluster), un pattern (literal o prefix), y las operaciones permitidas.
-
El authorizer del broker evalúa las ACLs en cada request del cliente.
-
Pattern
prefixpermite reglas flexibles:name: cdc, patternType: prefixautoriza acceso a todos los topics que empiecen concdc(incluyendocdc.public.customers,cdc.public.orders). -
Si ninguna ACL matchea, el request se deniega con un error de autorización.
Gobierno y Compliance
Schema Registry — Reglas de Validación
Apicurio Registry enforza contratos de esquema. Las reglas globales previenen cambios breaking:
{
"rules": {
"VALIDITY": "FULL",
"COMPATIBILITY": "BACKWARD"
}
}
-
VALIDITY: FULL — los esquemas deben ser sintácticamente válidos
-
COMPATIBILITY: BACKWARD — los esquemas nuevos deben ser legibles por consumidores con la versión anterior
Audit Trail
-
Kafka retiene todos los eventos por el periodo de retención configurado (7 días por defecto)
-
Debezium captura el estado completo before/after de cada cambio en la base de datos
-
Los audit logs de OpenShift rastrean el acceso API al cluster
-
Schema Registry mantiene historial de versiones de cada esquema
Explorar esquemas registrados en Apicurio Registry.
Documentación Oficial
-
OpenShift Authentication and Authorization — OAuth, OIDC y RBAC en OpenShift
-
Red Hat build of Keycloak — Identity and Access Management
-
Kafka Security with Strimzi — TLS, SCRAM-SHA-512 y ACLs en Kafka
-
Apicurio Registry — Schema Governance — Reglas de compatibilidad y validación de esquemas
-
OpenShift Network Policies — Seguridad de red a nivel de namespace
-
OpenShift Service Mesh — mTLS — Encriptación automática entre servicios