En esta página, se proporciona una descripción general de las características de seguridad de Container-Optimized OS que se ejecuta en Google Cloud.
Seguridad del SO
En función de Chromium OS, Container-Optimized OS de Google implementa varios principios de diseño de seguridad para proporcionar una plataforma bien configurada a fin de ejecutar servicios de producción.
Huella mínima del SO
Se trata de algo fundamental para la seguridad de Container-Optimized OS. Dado que Container-Optimized OS está optimizado para ejecutar contenedores y que los contenedores empaquetan sus propias dependencias, podemos cortar los paquetes innecesarios y, por lo tanto, minimizar la superficie de ataque del SO.
Inicio verificado y sistema de archivos raíz inmutable
El sistema de archivos raíz de Container-Optimized OS se activa como solo lectura. Además, su suma de verificación se calcula en el momento de la compilación y se verifica mediante el kernel en cada arranque. Este mecanismo evita que los atacantes "se adueñen" de la máquina a través de cambios locales permanentes. Asimismo, otras activaciones no son ejecutables de forma predeterminada. Consulta Sistema de archivos para obtener más detalles.
Configuración sin estado
Si bien tener un sistema de archivos raíz de solo lectura es bueno para la seguridad, esto hace que el sistema sea difícil de usar. Por ejemplo, se necesita poder crear y agregar usuarios para acceder al sistema. Para abordar esta cuestión, se personaliza el sistema de archivos raíz de modo que /etc/
puede escribirse, pero queda sin estado. Esto te permite escribir ajustes de configuración en el entorno de ejecución, pero esos ajustes no persisten en los reinicios. Por lo tanto, cada vez que se inicia un nodo de Container-Optimized OS, se empieza de nuevo. Determinados datos como, por ejemplo, los directorios de inicio de los usuarios, los registros y las imágenes de Docker persisten en los reinicios, dado que ya no forman parte del sistema de archivos raíz.
Kernel endurecido de seguridad
Container-Optimized OS habilita varias funciones del kernel para endurecer la seguridad, como la arquitectura de medición de integridad (IMA), la auditoría, el aislamiento de la tabla de páginas del kernel (KPTI) y algunos módulos de seguridad de Linux (LSM) de Chromium OS. Además, Container-Optimized OS admite funciones de seguridad como comprender y AppArmor que posibilitan la aplicación de políticas de seguridad más precisas.
Valores predeterminados centrados en la seguridad
Container-Optimized OS proporciona otro nivel de endurecimiento; para ello, brinda valores predeterminados orientados a la seguridad para varias características. Esto incluye elementos como sysctl Configuración que inhabilitan ptrace y BPF sin privilegios, bloquean el firewall, etcétera. Estos valores predeterminados, cuando se aplican automáticamente a una flota de instancias, ayudan a proteger el clúster, el proyecto y la organización en su totalidad.
Actualizaciones automáticas
La característica de actualizaciones automáticas de Container-Optimized OS permite la entrega oportuna de parches de seguridad para ejecutar VM. Cuando Kubernetes Engine administra Container-Optimized OS, las actualizaciones automáticas de nodo logran un equilibrio entre seguridad y estabilidad.
Sistema de archivos
La siguiente es una lista de las rutas del sistema de archivos de imagen del nodo de Container-Optimized OS, junto con sus propiedades y uso recomendado:
Ruta | Propiedades | Propósito |
---|---|---|
/ |
|
El sistema de archivos raíz se activa como solo lectura a fin de mantener su integridad. El kernel verifica la integridad del sistema de archivos raíz durante el arranque y, en caso de encontrar errores, no inicia el sistema. |
/home /var |
|
El objetivo de estas rutas es almacenar los datos que se mantienen durante toda la vida del disco de arranque. Se activan desde /mnt/stateful_partition . |
/var/lib/google /var/lib/docker /var/lib/toolbox |
|
Estas rutas son directorios de trabajo que funcionan para los paquetes de Compute Engine (por ejemplo, el servicio de administrador de cuentas), Docker y Toolbox, respectivamente. |
/var/lib/cloud |
|
Esta ruta es el directorio de trabajo del paquete cloud-init . |
/etc |
|
Por lo general, conserva tu configuración (por ejemplo, los servicios systemd definidos a través de cloud-init ). Es una buena idea capturar el estado deseado de tus instancias en cloud-init , ya que cloud-init se aplica cuando una instancia acaba de crearse y cuando se reinicia. |
/tmp |
|
Por lo general, se usa como espacio temporal y no se debe usar para almacenar datos persistentes. |
/mnt/disks |
|
Puedes activar discos persistentes en los directorios de /mnt/disks . |
Firewall
Según la configuración predeterminada, Container-Optimized OS se configura para descartar todas las conexiones TCP/UDP entrantes, con excepción de SSH en el puerto 22. Consulta Cómo configurar el firewall del host para obtener información sobre cómo cambiar la configuración predeterminada para abrir más puertos.
Acceso a instancias
Según la configuración predeterminada, Container-Optimized OS no contiene ninguna cuenta de usuario accesible. Las cuentas de usuario y las claves SSH se administran a través de metadatos de instancia o proyecto o Acceso al SO. El Acceso al SO te permite administrar el acceso a las instancias con la IAM. Permite un control de acceso más preciso (sudo frente a no sudo), llaves SSH identificables, y una política organizativa de acceso.
El daemon de SSH se configura para rechazar la autenticación basada en contraseñas inhabilitar accesos raíz. Sin embargo, esto no impide que los usuarios obtengan privilegios de administrador mediante el uso de sudo. después del acceso, a menos que la cuenta de usuario se administre con Acceso al SO.
Seguridad de la infraestructura
Además de varias funciones de protección en el SO, el equipo de Container-Optimized OS también se toma en serio la cadena de suministro de software y prioriza la seguridad de la infraestructura al desarrollar, implementar y compilar imágenes, según los años de experiencia de Chromium OS y Google en general.
Compilado desde la fuente en Google
Cada paquete en Container-Optimized OS, incluido el propio kernel de Linux, se compila desde la fuente en los repositorios de código de Chromium OS. Esto significa que sabemos exactamente qué está ocurriendo en el SO, quién lo registró, en qué versión se ingresó, entre otras opciones. También nos permite realizar parches y actualizaciones con rapidez en cualquier paquete si se descubre una vulnerabilidad en cualquier nivel.
Respuesta y análisis de vulnerabilidades continuas (CVE)
Un sistema de análisis de CVE nos alerta cuando se descubre una vulnerabilidad en el kernel o en cualquier paquete del SO. Este es el mismo sistema que se usa para detectar vulnerabilidades en Android y Chromium OS. El equipo de Container-Optimized OS responde con prioridad para realizar actualizaciones con parches. El equipo de Container-Optimized OS también trabaja con el equipo de respuesta ante incidentes de Google para hacer que los parches de seguridad más amplios estén disponibles rápidamente en Container-Optimized OS.
Proceso de prueba y calificación
Antes de publicar una imagen nueva de Container-Optimized OS en Google Cloud, se la prueba en varios niveles, esto incluye la prueba fuzz de kernel por syzkaller, pruebas de Kubernetes a nivel de clúster, pruebas de integración con características de Compute Engine, y varias comparativas de rendimiento. Esto asegura la estabilidad y la calidad de nuestros lanzamientos.