Seguridad

En esta página, se describen las funciones de seguridad incluidas en los clústeres de Anthos alojados en AWS (GKE en AWS), incluida cada capa de su infraestructura, y se explica cómo puedes configurar los atributos de seguridad para que se adapten a tus necesidades.

Descripción general

Los clústeres de Anthos alojados en AWS ofrecen varias características para ayudarte a proteger tus cargas de trabajo, incluidos el contenido de tu imagen de contenedor, el entorno de ejecución del contenedor, la red de clústeres y el acceso al servidor de la API del clúster.

Es mejor adoptar un enfoque por capas para proteger los clústeres y las cargas de trabajo. Puedes aplicar el principio de privilegio mínimo al nivel de acceso que proporcionas a los usuarios y las cargas de trabajo. Es posible que debas realizar compensaciones para permitir el nivel adecuado de flexibilidad y seguridad.

Responsabilidades compartidas

Cuando usas clústeres de Anthos en AWS, aceptas asumir ciertas responsabilidades por ellos. Para obtener más información, consulta Responsabilidades compartidas de los clústeres de Anthos.

Autenticación y autorización

Debes autenticarte en un clúster de usuarios en clústeres de Anthos en AWS a través de uno de los siguientes métodos:

Para configurar un acceso más detallado a los recursos de Kubernetes a nivel del clúster o en los espacios de nombres de Kubernetes, usa el Control de acceso basado en funciones (RBAC) de Kubernetes. El RBAC te permite crear políticas detalladas para definir a qué operaciones y recursos pueden acceder los usuarios y las cuentas de servicio. Con el RBAC, puedes controlar el acceso para cualquier identidad proporcionada que se validó.

A fin de simplificar y optimizar aún más la estrategia de autenticación y autorización para Kubernetes Engine, GKE on AWS inhabilita el control de acceso basado en atributos heredados (ABAC).

Encriptación

De forma predeterminada, GKE on AWS encripta los datos en etcd en reposo, los volúmenes de EBS, los Secretos de Kubernetes y los componentes del plano de control con el Servicio de administración de claves de AWS (KMS).

Para encriptar datos sensibles en los clústeres de usuario, puedes usar una de las siguientes opciones:

Secretos de Kubernetes

Los recursos de los secretos de Kubernetes almacenan datos sensibles, como contraseñas, tokens OAuth y llaves SSH, en tus clústeres. Almacenar estos datos sensibles en objetos secretos es más seguro que almacenarlos en ConfigMaps de texto simple o en especificaciones de pod. El uso de secretos te permite controlar la manera en que se usan los datos sensibles y reduce el riesgo de exposición de datos a usuarios no autorizados.

HashiCorp Vault

Los clústeres de Anthos alojados en AWS pueden usar Hashicorp Vault para proteger los secretos en tus clústeres de usuario. Para obtener más información, consulta la sección sobre cómo usar HashiCorp Vault en clústeres de Anthos alojados en AWS.

Seguridad del plano de control

Los componentes del plano de control incluyen el servicio de administración y el servidor de la API de Kubernetes, el programador, los controladores y la base de datos de etcd del clúster de usuario. En los clústeres de Anthos alojados en AWS, los administradores locales administran los componentes del plano de control.

En los clústeres de Anthos alojados en AWS, los componentes del plano de control se ejecutan en AWS. Puedes proteger los clústeres de Anthos en el servidor de API de AWS mediante los grupos de seguridad y las LCA de red.

Todas las comunicaciones en GKE on AWS son a través de los canales de seguridad de la capa de transporte (TLS) regidos por las siguientes autoridades de certificación (CA):

  • La CA de etcd protege la comunicación del servidor de la API a las réplicas de etcd y también el tráfico entre réplicas de etcd. Esta CA está autofirmada.
  • La CA del clúster de usuario protege la comunicación entre el servidor de la API y todos los clientes internos de la API de Kubernetes (kubelets, controladores, programadores). Esta CA está encriptada con KMS.
  • La CA del servicio de administración está encriptada con KMS. Se crea cuando ejecutas anthos-gke init y se almacena en el lugar de trabajo de Terraform. Cuando usas terraform apply para crear el servicio de administración, la clave de CA se pasa como datos del usuario de AWS EC2 y se desencriptan mediante el KMS de AWS cuando se inicia el clúster.

Para el servicio de administración, las claves del plano de control se almacenan en el plano de control [nodes]{:.external}. Para los clústeres de usuario, las claves se almacenan como Secrets de Kubernetes en el plano de control del servicio de administración.

La autenticación de los clústeres de Anthos alojados en AWS se controla mediante certificados y tokens del portador de la cuenta de servicio. Como administrador, debes autenticarte en el plano de control mediante el certificado administrativo del servicio de administración (que usas para la creación de vínculos de funciones iniciales o con fines de emergencia).

La rotación de certificados se controla de las siguientes maneras:

  • Para el servidor de la API, los planos de control y los nodos, los clústeres de Anthos alojados en AWS rotan los certificados TLS en cada actualización.
  • También puedes Rotar las credenciales de seguridad de forma manual.

Seguridad de nodos

Los clústeres de Anthos en AWS implementan tus cargas de trabajo en grupos de nodos de instancias de AWS EC2. En las siguientes secciones, se explica cómo usar las funciones de seguridad a nivel de nodo en los clústeres de Anthos en AWS.

Ubuntu

Clústeres de Anthos alojados en AWS usan una versión optimizada de Ubuntu como el sistema operativo en el que se ejecutan el plano de control y los nodos de Kubernetes. Ubuntu incluye un amplio conjunto de funciones de seguridad modernas, y clústeres de Anthos alojados en AWS implementan varias funciones que mejoran la seguridad de los clústeres, incluidas las siguientes:

  • Conjunto de paquetes optimizado
  • Kernel de Linux adaptado a Google Cloud
  • Cuentas de usuario restringido y acceso raíz inhabilitado

Las guías de seguridad adicionales están disponibles para Ubuntu, como las que se mencionan a continuación:

Actualizaciones de nodos

Debes actualizar los nodos de forma periódica. Es posible que, cada tanto, los problemas de seguridad en el entorno de ejecución del contenedor, Kubernetes, o el sistema operativo del nodo requieran que actualices los nodos con mayor urgencia. Cuando actualizas el clúster de usuario, el software de cada nodo se actualiza a la última versión. Además, la actualización de los nodos rota las credenciales de encriptación.

Cómo asegurar las cargas de trabajo

Kubernetes permite a los usuarios aprovisionar, escalar y actualizar con rapidez las cargas de trabajo basadas en contenedores. En esta sección, se describen tácticas que puedes usar para limitar los efectos secundarios de ejecutar contenedores en el clúster y los servicios de Google Cloud.

Limita los privilegios del proceso de contenedor del Pod

Limitar los privilegios de los procesos alojados en contenedores es importante para la seguridad del clúster. Puedes configurar opciones relacionadas con la seguridad con el contexto de seguridad de los Pods y los contenedores. Esta configuración te permite cambiar la configuración de seguridad de los procesos. Por ejemplo:

  • Usuario y grupo que ejecuta el proceso
  • Funciones de Linux disponibles
  • Elevación de privilegios

El sistema operativo de clusters predeterminado de Anthos en los nodos en AWS, Ubuntu, aplica las políticas de seguridad de Docker AppArmor a todos los contenedores que inicia Kubernetes. Puedes ver la plantilla del perfil en GitHub. Entre otros aspectos, el perfil les niega las siguientes capacidades a los contenedores:

  • Escribir en archivos directamente en un directorio de ID de proceso (/proc/)
  • Escribir en archivos que no están en /proc/
  • Escribir en archivos de /proc/sys que no sean /proc/sys/kernel/shm*
  • Activar sistemas de archivos

¿Qué sigue?