Seguridad en tiempo de ejecución - Amazon EKS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Seguridad en tiempo de ejecución

La seguridad en tiempo de ejecución proporciona una protección activa para sus contenedores mientras están en ejecución. La idea es detectar y and/or evitar que se produzcan actividades maliciosas dentro del contenedor. Esto se puede lograr con una serie de mecanismos en el núcleo de Linux o extensiones del núcleo que estén integradas con Kubernetes, como las capacidades de Linux, la computación segura (seccomp) o. AppArmor SELinux También hay opciones como Amazon GuardDuty y herramientas de terceros que pueden ayudar a establecer líneas de base y detectar actividades anómalas con una configuración menos manual de los mecanismos del núcleo de Linux.

importante

Actualmente, Kubernetes no proporciona ningún mecanismo nativo para cargar sec.comp o perfiles en los nodos. AppArmor SELinux Deben cargarse manualmente o instalarse en los nodos cuando se inician. Esto se debe hacer antes de hacer referencia a ellos en tus pods, ya que el programador no sabe qué nodos tienen perfiles. Descubre a continuación cómo herramientas como Security Profiles Operator pueden ayudar a automatizar el aprovisionamiento de perfiles en los nodos.

Contextos de seguridad y controles de Kubernetes integrados

Muchos mecanismos de seguridad en tiempo de ejecución de Linux están estrechamente integrados con Kubernetes y se pueden configurar a través de los contextos de seguridad de Kubernetes. Una de esas opciones es la privileged bandera, que viene de forma false predeterminada y, si está habilitada, equivale básicamente a rootear en el host. Casi siempre es inapropiado habilitar el modo privilegiado en las cargas de trabajo de producción, pero hay muchos más controles que pueden proporcionar privilegios más detallados a los contenedores, según proceda.

Capacidades de Linux

Las capacidades de Linux te permiten otorgar ciertas capacidades a un pod o contenedor sin proporcionar todas las capacidades del usuario root. Algunos ejemplos son: CAP_NET_ADMIN que permite configurar interfaces de red o firewallsCAP_SYS_TIME, o que permite manipular el reloj del sistema.

Seccomp

Con la informática segura (seccomp), puede impedir que una aplicación contenerizada realice determinadas llamadas al sistema operativo anfitrión subyacente. Si bien el sistema operativo Linux tiene unos cientos de llamadas al sistema, la mayor parte de ellas no son necesarias para ejecutar contenedores. Al restringir las llamadas al sistema que puede realizar un contenedor, puede reducir de manera efectiva la superficie de ataque de su aplicación.

Seccomp intercepta las llamadas al sistema y solo permite el paso de las llamadas permitidas. Docker tiene un perfil seccomp predeterminado que es adecuado para la mayoría de las cargas de trabajo de uso general, y otros tiempos de ejecución de contenedores, como containerd, proporcionan valores predeterminados comparables. Puedes configurar tu contenedor o pod para que utilice el perfil seccomp predeterminado del motor de ejecución del contenedor añadiendo lo siguiente a la sección de la especificación del pod: securityContext

securityContext: seccompProfile: type: RuntimeDefault

A partir de la versión 1.22 (en alfa, estable a partir de la 1.27), lo anterior se RuntimeDefault puede usar para todos los pods de un nodo con un único indicador de kubelet. --seccomp-default Entonces, el perfil especificado en solo securityContext es necesario para otros perfiles.

También es posible crear tus propios perfiles para las cosas que requieren privilegios adicionales. Puede resultar muy tedioso hacerlo manualmente, pero hay herramientas como Inspektor Gadget (también se recomienda en la sección de seguridad de la red para generar políticas de red) y Security Profiles Operator que permiten utilizar herramientas como eBPF o registros para registrar los requisitos de privilegios básicos como perfiles seccomp. Además, Security Profiles Operator permite automatizar el despliegue de los perfiles registrados en los nodos para que los utilicen los pods y los contenedores.

AppArmor y SELinux

AppArmor y SELinux se conocen como sistemas de control de acceso obligatorio o MAC. Su concepto es similar al de los seccomp, pero con capacidades diferentes APIs , que permiten el control de acceso para, por ejemplo, rutas específicas de sistemas de archivos o puertos de red. El soporte para estas herramientas depende de la distribución de Linux, con Debian/Ubuntu soporte AppArmor y soporte para RHEL/CentOS/Bottlerocket/Amazon Linux 2023 SELinux. Consulte también la sección de seguridad de la infraestructura para obtener más información al respecto SELinux.

Ambos AppArmor SELinux están integrados en Kubernetes, pero a partir de la versión 1.28 de Kubernetes los AppArmor perfiles deben especificarse mediante anotaciones, mientras que las SELinux etiquetas se pueden establecer directamente en el campo Opciones del SELinux contexto de seguridad.

Al igual que con los perfiles seccomp, el operador de perfiles de seguridad mencionado anteriormente puede ayudar a implementar los perfiles en los nodos del clúster. (En el futuro, el proyecto también tiene como objetivo generar perfiles para AppArmor y SELinux como lo hace para seccomp).

Recomendaciones

Utilice Amazon GuardDuty para supervisar en tiempo de ejecución y detectar amenazas en sus entornos de EKS

Si actualmente no dispone de una solución para supervisar de forma continua los tiempos de ejecución de EKS, analizar los registros de auditoría de EKS y escanear en busca de malware y otras actividades sospechosas, Amazon recomienda encarecidamente el uso de Amazon GuardDuty a los clientes que deseen proteger sus entornos de AWS de forma sencilla, rápida, segura, escalable y rentable con un solo clic. Amazon GuardDuty es un servicio de supervisión de seguridad que analiza y procesa las fuentes de datos fundamentales, como los eventos de CloudTrail administración de AWS, los registros de eventos de AWS CloudTrail , los registros de flujo de VPC (de instancias de Amazon EC2), los registros de auditoría de Kubernetes y los registros de DNS. También incluye la supervisión del tiempo de ejecución de EKS. Utiliza fuentes de inteligencia sobre amenazas que se actualizan continuamente, como listas de direcciones IP y dominios maliciosos, y aprendizaje automático para identificar actividades inesperadas, potencialmente no autorizadas y maliciosas en su entorno de AWS. Esto puede incluir problemas como la escalada de privilegios, el uso de credenciales expuestas o la comunicación con direcciones IP o dominios maliciosos, la presencia de malware en las instancias de Amazon EC2 y las cargas de trabajo de contenedores de EKS, o el descubrimiento de actividad sospechosa de la API. GuardDuty le informa del estado de su entorno de AWS mediante resultados de seguridad que puede ver en la GuardDuty consola o a través de Amazon EventBridge. GuardDuty también le ayuda a exportar sus hallazgos a un bucket de Amazon Simple Storage Service (S3) y a integrarlos con otros servicios, como AWS Security Hub y Detective.

Vea esta charla técnica en línea de AWS «Detección mejorada de amenazas para Amazon EKS con Amazon GuardDuty : charlas técnicas en línea de AWS» para ver cómo habilitar estas funciones de seguridad adicionales de EKS step-by-step en cuestión de minutos.

Opcionalmente: utilice una solución de terceros para la supervisión del tiempo de ejecución

Crear y administrar los perfiles seccomp y Apparmor puede resultar difícil si no está familiarizado con la seguridad de Linux. Si no tiene tiempo para adquirir los conocimientos necesarios, considere la posibilidad de utilizar una solución comercial de terceros. Muchos de ellos han ido más allá de los perfiles estáticos, como Apparmor y seccomp, y han empezado a utilizar el aprendizaje automático para bloquear o alertar sobre actividades sospechosas. A continuación, en la sección de herramientas, encontrará algunas de estas soluciones. Puede encontrar opciones adicionales en AWS Marketplace for Containers.

Tenga en cuenta las capacidades de add/dropping Linux antes de redactar las políticas de seccomp

Las capacidades implican varias comprobaciones de las funciones del núcleo a las que se puede acceder mediante llamadas al sistema. Si la comprobación falla, la llamada al sistema normalmente devuelve un error. La comprobación se puede realizar justo al principio de una llamada al sistema específica o en una zona más profunda del núcleo, en áreas a las que se puede acceder mediante varias llamadas al sistema diferentes (por ejemplo, escribir en un archivo privilegiado específico). Seccomp, por otro lado, es un filtro de llamadas al sistema que se aplica a todas las llamadas al sistema antes de que se ejecuten. Un proceso puede configurar un filtro que le permita revocar su derecho a ejecutar determinadas llamadas al sistema o argumentos específicos para determinadas llamadas al sistema.

Antes de usar seccomp, considere si las capacidades de adding/removing Linux le proporcionan el control que necesita. Consulte Configurar las capacidades de los contenedores para obtener más información.

Comprueba si puedes lograr tus objetivos mediante las políticas de seguridad de Pod (PSPs)

Las políticas de seguridad de Pod ofrecen muchas formas diferentes de mejorar tu postura de seguridad sin introducir una complejidad excesiva. Explore las opciones disponibles PSPs antes de aventurarse a crear perfiles seccomp y Apparmor.

Herramientas y recursos