Debido a la gran velocidad de desarrollo en Kubernetes, a menudo hay nuevas funciones de seguridad que puedes usar. En este documento, se describe cómo endurecer los clústeres de Google Distributed Cloud.
En este documento, se priorizan las mitigaciones de seguridad de alto valor que requieren que intervengas durante la creación del clúster. Las funciones menos importantes, la configuración segura predeterminada y las que pueden habilitarse después de la creación del clúster se mencionan más adelante en el documento. Para obtener una descripción general de los temas de seguridad, consulta Seguridad.
Lista de tareas
En la siguiente lista de tareas de implementación, se destacan las prácticas recomendadas para endurecer la implementación de la plataforma de clústeres de GKE. Para obtener más información sobre cada práctica, consulta las secciones de este documento.
Lista de tareas de implementación | Descripción |
---|---|
Identidad y control de acceso | Usa privilegios de cuenta de vSphere: Protege las cuentas de servicio de Google Cloud: Configura OpenID Connect (OIDC): Usa espacios de nombres de Kubernetes y RBAC para restringir el acceso: |
Protección de datos | Encripta máquinas virtuales de vSphere: Administra secretos: |
Protección de la red | Restringe el acceso de red al plano de control y los nodos: Usa políticas de red para restringir el tráfico: |
Seguridad declarativa | Usa el controlador de políticas: |
Mantenimiento | Actualiza GKE Enterprise: Supervisa los boletines de seguridad: |
Supervisa y registra | Establece opciones para el registro de clústeres de GKE: |
Identidad y control de acceso
En esta sección, se proporciona información sobre cómo controlar el acceso a tus clústeres.
Usa privilegios de cuenta de vSphere
La cuenta de usuario de vCenter que usas para instalar Google Distributed Cloud debe tener suficientes privilegios. Por ejemplo, una cuenta de usuario a la que se le asigna la función de administrador de vCenter tiene privilegios para acceder por completo a todos los objetos de vCenter y proporciona acceso completo a un administrador de clústeres de Google Distributed Cloud.
Se recomienda el principio de privilegio mínimo, que otorga solo los privilegios necesarios para instalar con éxito GKE Enterprise. Hemos predefinido el conjunto mínimo de privilegios necesarios para realizar la instalación, así como los comandos necesarios a fin de otorgarlos.
Protege las cuentas de servicio de Google Cloud
Google Distributed Cloud requiere tres cuentas de servicio de Google Cloud:
- Una cuenta de servicio predefinida para acceder al software de Google Distributed Cloud. Lo creas cuando compras GKE Enterprise.
- Una cuenta de servicio de registro que usará Connect para registrar los clústeres de Google Distributed Cloud con Google Cloud
- Una cuenta de servicio de Cloud Logging que usará Cloud Logging para recopilar registros de clústeres
Durante la instalación, debes vincular las funciones de administración de identidades y accesos a estas cuentas de servicio. Esas funciones otorgan privilegios específicos a las cuentas de servicio dentro de tu proyecto y se pueden generar durante la instalación.
Configura la autenticación para los usuarios del clúster
Para configurar la autenticación de usuarios de tu clúster, puedes usar OpenID Connect (OIDC) o el Protocolo ligero de acceso a directorios (LDAP).
Para obtener más información, consulta Servicio de identidad de GKE.
Usa espacios de nombres de Kubernetes y RBAC para restringir el acceso
Para otorgar a los equipos el acceso a Kubernetes de privilegio mínimo, crea espacios de nombres de Kubernetes o clústeres específicos del entorno. Asigna centros de costos y etiquetas adecuadas a cada espacio de nombres para la rendición de cuentas y devolución del cargo. Solo brinda a los desarrolladores el nivel de acceso a su espacio de nombres que necesitan para implementar y administrar su aplicación, sobre todo en producción.
Asigna las tareas que los usuarios deben seguir en el clúster y define los permisos necesarios para completar cada tarea. Para otorgar permisos a nivel de clúster y de espacio de nombres, usa el RBAC de Kubernetes.
Más allá de los permisos para las cuentas de servicio de Google Cloud que se usan para instalar Google Distributed Cloud, IAM no se aplica a los clústeres de Google Distributed Cloud.
Para obtener más información, consulta la siguiente documentación:
- Cuentas de servicio y claves
- Descripción general de la instalación
- Privilegios de la cuenta de usuario de vCenter
Protección de datos
En esta sección, se proporciona información sobre cómo proteger tus datos.
Encripta máquinas virtuales de vSphere
Los nodos del clúster de Google Distributed Cloud se ejecutan en máquinas virtuales (VMs) en tu clúster de vSphere. Google te recomienda que encriptes todos los datos en reposo. Para hacerlo en vSphere, sigue la Guía de configuración y endurecimiento de seguridad de VMware vSphere 7 y la guía de prácticas recomendadas para encriptar VMs.
Esto debe hacerse antes de la instalación de GKE Enterprise.
Administra secretos
Si quieres proporcionar una capa adicional de protección para datos sensibles, como los secretos de Kubernetes almacenados en etcd, configura un administrador de secretos que esté integrado en los clústeres de Google Distributed Cloud.
Si ejecutas cargas de trabajo en varios entornos, es posible que prefieras una solución que funcione para Google Kubernetes Engine y Google Distributed Cloud. Si eliges usar un administrador de secretos externo, como HashiCorp Vault, configúralo antes de integrar tus clústeres de Google Distributed Cloud.
Tienes varias opciones para la administración secreta:
- Puedes usar los secretos de Kubernetes de forma nativa en Google Distributed Cloud. Se espera que los clústeres usen la encriptación de vSphere para las VM como se describió antes, lo que proporciona a los secretos una protección básica de encriptación en reposo. Los secretos no tienen una encriptación mayor de forma predeterminada.
- Puedes usar un administrador de secretos externo, como HashiCorp Vault. Puedes autenticarte en HashiCorp mediante una cuenta de servicio de Kubernetes o de Google Cloud.
Para obtener más información, consulta la siguiente documentación:
Protección de la red
En esta sección, se proporciona información sobre cómo proteger la red.
Restringe el acceso de red al plano de control y a los nodos
Limita la exposición en Internet del plano de control y los nodos de tu clúster. Estas opciones no se pueden cambiar después de la creación del clúster. De forma predeterminada, los nodos del clúster de Google Distributed Cloud se crean con direcciones RFC 1918 y se recomienda no cambiarlos. Implementa reglas de firewall en la red local para restringir el acceso al plano de control.
Usa políticas de red para restringir el tráfico
De forma predeterminada, todos los servicios de un clúster de Google Distributed Cloud pueden comunicarse entre sí. Si deseas obtener información a fin de controlar la comunicación de servicio a servicio según sea necesario para tus cargas de trabajo, consulta las secciones siguientes.
Restringir el acceso de la red a los servicios hace que sea mucho más difícil para los atacantes moverse de forma lateral dentro de tu clúster, y ofrece a los servicios cierta protección contra la denegación accidental o deliberada del servicio. Existen dos maneras recomendadas para controlar el tráfico:
- Para controlar el tráfico de la capa 7 en los extremos de tus aplicaciones, usa Istio. Elige esta opción si te interesa el balanceo de cargas, la autorización de servicios, la limitación, la cuota y las métricas.
- Para controlar el tráfico de la capa 4 entre Pods, usa políticas de red de Kubernetes. Elige esta opción si buscas las funciones básicas de control de acceso que administra Kubernetes.
Puedes habilitar la política de red de Istio y Kubernetes después de crear los clústeres de Google Distributed Cloud. Puedes usarlas en conjunto si es necesario.
Para obtener más información, consulta la siguiente documentación:
Seguridad declarativa
En esta sección, se proporcionan recomendaciones para proteger tus clústeres.
Usa el controlador de políticas
Los controladores de admisión de Kubernetes son complementos que rigen y aplican cómo se usa un clúster de Kubernetes. Los controladores de admisión son una parte importante del enfoque de defensa en profundidad para endurecer el clúster.
Se recomienda usar el Controlador de políticas. El controlador de políticas usa el framework de restricción de OPA para describir y aplicar la política como CRD. Las restricciones que aplicas en el clúster se deben definir en plantillas de restricciones, que se implementan en los clústeres.
Si deseas obtener información a fin de usar las restricciones del controlador de políticas a fin de lograr muchas de las mismas protecciones que PodSecurityPolicies, con la capacidad adicional de probar tus políticas antes de implementarlas, consulta Usa restricciones para aplicar la seguridad del Pod.
Para obtener más información, consulta la siguiente documentación:
Restringe la capacidad de las cargas de trabajo de realizar modificaciones automáticas
Algunas cargas de trabajo de Kubernetes, en especial las del sistema, tienen permiso para realizar modificaciones automáticas. Por ejemplo, algunas cargas de trabajo se escalan automáticamente. Si bien es conveniente, esto puede permitir que un atacante que ya haya vulnerado un nodo pueda escalar más a fondo en el clúster. Por ejemplo, un atacante podría hacer que una carga de trabajo en el nodo se modifique a sí misma para ejecutarse como una cuenta de servicio con más privilegios que exista en el mismo espacio de nombres.
Lo ideal es que a las cargas de trabajo no se les otorgue el permiso para modificarse en primer lugar. Cuando la modificación automática es necesaria, puedes limitar los permisos mediante la aplicación de restricciones de Gatekeeper o del controlador de políticas, como NoUpdateServiceAccount de la biblioteca de Gatekeeper de código abierto, que proporciona varias políticas de seguridad útiles.
Cuando implementas políticas, por lo general, es necesario permitir que los controladores que administran el ciclo de vida del clúster omitan las políticas y las canalizaciones de registro y supervisión. Esto es necesario para que los controladores puedan realizar cambios en el clúster, como aplicar actualizaciones del clúster. Por ejemplo, si implementas la política NoUpdateServiceAccount
en Google Distributed Cloud, debes establecer los siguientes parámetros en Constraint
:
parameters:
allowedGroups:
- system:masters
allowedUsers:
- system:serviceaccount:kube-system:monitoring-operator
- system:serviceaccount:kube-system:stackdriver-operator
- system:serviceaccount:kube-system:metrics-server-operator
- system:serviceaccount:kube-system:logmon-operator
Mantenimiento
En esta sección, se proporciona información sobre el mantenimiento de los clústeres.
Actualizar GKE Enterprise
Kubernetes suele agregar nuevas funciones de seguridad y proporcionar parches de seguridad con frecuencia.
Eres responsable de mantener actualizados los clústeres de Google Distributed Cloud. Revisa las notas de la versión de todas las versiones. Además, planifica la actualización a las versiones de parches nuevas todos los meses y a las versiones secundarias cada tres meses. Obtén más información para actualizar los clústeres.
También eres responsable de actualizar y proteger la infraestructura de vSphere:
- Establecer un proceso para implementar actualizaciones y parches oportunos en tus VM
- Mantente al día con los lineamientos de seguridad de VMware más recientes.
- Sigue las instrucciones para aplicar parches a los hosts.
Supervisa boletines de seguridad
El equipo de seguridad de GKE Enterprise publica boletines de seguridad para las vulnerabilidades de gravedad alta y crítica.
Estos boletines siguen un esquema de numeración común de vulnerabilidades de Google Cloud y están vinculados desde la página principal de boletines de Google Cloud y las notas de la versión de Google Distributed Cloud. Cada página de boletín de seguridad tiene un feed RSS en el que los usuarios pueden suscribirse para recibir actualizaciones.
Cuando se requiere una acción del cliente para abordar estas vulnerabilidades altas y críticas, Google se comunica con los clientes por correo electrónico. Además, Google también puede comunicarse con los clientes con contratos de asistencia a través de canales de asistencia.
Para obtener más información, consulta la siguiente documentación:
Supervisión y registro
Google Distributed Cloud incluye varias opciones para el registro y la supervisión de clústeres, incluidos los servicios administrados basados en la nube, las herramientas de código abierto y la compatibilidad validada con soluciones comerciales de terceros:
- Cloud Logging y Cloud Monitoring, habilitados por agentes en el clúster implementados con Google Distributed Cloud
- Opciones de configuración validadas con soluciones de terceros
Sin importar la solución de registro que elijas en función de los requisitos empresariales, recomendamos encarecidamente que registres y se generen alertas y eventos relevantes de reenvío de registros en un servicio de administración eventos y de la información y seguridad centralizado (SIEM) para la administración de los incidentes de seguridad.
Para obtener más información, consulta la siguiente documentación:
- Registro y supervisión
- Usa Logging y Monitoring
- Registro y supervisión de aplicaciones
- Supervisa Google Distributed Cloud con Elastic Stack
- Recopila registros en GKE Enterprise con Splunk Connect.