En esta página, se explica cómo habilitar los registros de auditoría del sistema operativo detallados en los nodos de Google Kubernetes Engine que ejecutan Container-Optimized OS. En esta página, también se explica cómo configurar el agente de registro para enviar registros a Google Cloud's operations suite.
El registro de auditoría del sistema operativo es distinto de Cloud Audit Logging y los registros de auditoría de Kubernetes.
Descripción general
Los registros del sistema operativo en tus nodos proporcionan información valiosa sobre el estado del clúster y las cargas de trabajo, como los mensajes de error, los intentos de acceso y las ejecuciones binarias. Puedes usar esta información para depurar problemas o investigar incidentes de seguridad.
Para recopilar registros de cada nodo en un clúster, usa un DaemonSet que ejecute exactamente un pod en cada uno de los nodos del clúster en los que el DaemonSet es elegible para ser programado. Este pod configura el daemon de registro auditd
en el host y configura el agente de Logging para enviar los registros a Stackdriver o a cualquier otro servicio de transferencia de registros.
Por definición, la auditoría ocurre después de un evento y es una medida de seguridad post mortem. Es probable que los registros auditd, por sí solos, no sean suficientes para detectar intrusiones en tu clúster. Considera cómo usar mejor el registro auditd como parte de tu estrategia general de seguridad.
Limitaciones
Los mecanismos de registro descritos en esta página solo funcionan en los nodos que ejecutan Container-Optimized OS.
Funcionamiento del DaemonSet de registro
En esta sección, se describe cómo funciona el registro de ejemplo de DaemonSet a fin de que puedas configurarlo según tus necesidades. En la siguiente sección, se explica cómo implementar DaemonSet.
En el manifiesto de ejemplo, se define un DaemonSet, un ConfigMap y un Namespace para contenerlos.
El DaemonSet implementa un pod en cada nodo del clúster. El pod contiene dos contenedores. El primero es un contenedor init que inicia el servicio cloud-audit-setup de systemd. El segundo contenedor, fluentd-gcp-cos-auditd
, es para el agente de registro de Google Cloud's operations suite, una aplicación basada en fluentd.
El DaemonSet del registro de ejemplo registra los siguientes eventos:
- Modificaciones de configuración del sistema de
auditd
- Comprobaciones de permisos de AppArmor
- Ejecuciones
execve()
,socket()
,setsockopt()
ymmap()
- Conexiones de red
- Accesos de usuario
- Sesión SSH y todos los demás TTY (incluidas las sesiones
kubectl exec -t
)
Configura el DaemonSet de registro
Configura el DaemonSet de registro con un ConfigMap, fluentd-gcp-config-cos-auditd
. En el ejemplo proporcionado, se envían registros de auditoría a Google Cloud's operations suite, pero puedes configurarlo para que se envíen registros a destinos que no sean Google Cloud's operations suite.
El volumen de los registros generados por auditd
puede ser muy grande y puede generar costos adicionales debido a que consume recursos del sistema y envía más registros que la configuración de registro predeterminada. Puedes configurar filtros para administrar el volumen de registro:
- Puedes configurar filtros en el ConfigMap
fluentd-gcp-config-cos-auditd
para que ciertos datos no se registren. Consulta los instructivos Personaliza registros de Google Cloud's operations suite en GKE y Configura el agente de registro de Google Cloud's operations suite. - También puedes configurar Google Cloud's operations suite para filtrar los registros entrantes. Para obtener más detalles, consulta Exclusiones de registros de Google Cloud's operations suite.
Implementa el DaemonSet de registro
Puedes usar un clúster existente o crear uno nuevo.
Descarga los manifiestos de ejemplo:
curl https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-node-tools/master/os-audit/cos-auditd-logging.yaml > cos-auditd-logging.yaml
Edita los manifiestos de ejemplo para adaptarlos a tus necesidades. Consulta la sección anterior para obtener detalles sobre cómo funciona DaemonSet.
Implementa el DaemonSet y ConfigMap de registro:
kubectl apply -f cos-auditd-logging.yaml
Verifica que los Pods de registro se hayan iniciado. Si definiste un espacio de nombres diferente en tus manifiestos, reemplaza cos-auditd por el nombre del espacio de nombres que usas.
kubectl get pods --namespace=cos-auditd
Si los Pods están en ejecución, el resultado será el siguiente:
NAME READY STATUS RESTARTS AGE cos-auditd-logging-g5sbq 1/1 Running 0 27s cos-auditd-logging-l5p8m 1/1 Running 0 27s cos-auditd-logging-tgwz6 1/1 Running 0 27s
Se implementa un pod en cada nodo del clúster; en este caso, el clúster tiene tres nodos.
Ahora puedes acceder a los registros de auditoría en Google Cloud's operations suite. En el Visor de registros, filtra los resultados por Instancia de VM.
Exporta registros
Para obtener información sobre cómo exportar tus registros, consulta las siguientes páginas:
- Para usar el Visor de registros, consulta Exporta registros.
- Para usar la API de Cloud Logging, consulta Exporta registros en la API.
- Para usar la herramienta de línea de comandos, consulta gcloud logging.
Realiza una limpieza
Para inhabilitar el registro auditd
, borra el DaemonSet de registro y reinicia los nodos. La configuración de auditoría se bloquea una vez habilitada y solo se puede cambiar si se vuelve a crear el nodo.
Borra el DaemonSet, ConfigMap y su Namespace del clúster:
kubectl delete -f cos-auditd-logging.yaml
Reinicia los nodos de tu clúster. Primero, obtén el grupo de instancias al que pertenecen:
instance_group=$(gcloud compute instance-groups managed list \ --format="value(name)" \ --filter=${CLUSTER_NAME})
Luego, obtén las instancias:
instances=$(gcloud compute instance-groups managed list-instances ${instance_group} \ --format="csv(instance)[no-heading][terminator=',']")
Finalmente, vuelve a crear las instancias:
gcloud compute instance-groups managed recreate-instances ${instance_group} \ --instances=${instances}
¿Qué sigue?
- Mira Cloud Forensics 101 (Introducción a detección de intrusiones de Cloud) para comenzar con la detección de intrusiones en la nube.
- Obtén información sobre los registros de auditoría de Kubernetes y la política de auditoría.
- Consulta Descripción general de seguridad.
- Obtén más información sobre Cloud Audit Logging.