Seguridad

En esta página se describen las funciones de seguridad incluidas en Google Distributed Cloud (solo software) para VMware, incluida cada capa de su infraestructura, y cómo puedes configurar estas funciones de seguridad para que se adapten a tus necesidades.

Información general

Google Distributed Cloud (solo software) para VMware ofrece varias funciones para proteger tus cargas de trabajo, incluido el contenido de tu imagen de contenedor, el tiempo de ejecución del contenedor, la red del clúster y el acceso al servidor de la API del clúster.

Lo más recomendable es adoptar un enfoque por capas para proteger tus clústeres y cargas de trabajo. Puedes aplicar el principio de mínimos accesos al nivel de acceso que proporcionas a tus usuarios y cargas de trabajo. Es posible que tengas que hacer concesiones para permitir el nivel adecuado de flexibilidad y seguridad.

Autenticación y autorización

Para autenticarte en tus clústeres, puedes usar OpenID Connect (OIDC) o un token de cuenta de servicio de Kubernetes a través de la consola de Cloud.

Para configurar un acceso más granular a los recursos de Kubernetes a nivel de clúster o en espacios de nombres de Kubernetes, se usa el control de acceso basado en roles (RBAC) de Kubernetes. El control de acceso basado en roles te permite crear políticas detalladas que definen a qué operaciones y recursos quieres que accedan los usuarios y las cuentas de servicio. Con RBAC, puedes controlar el acceso de cualquier identidad validada que se proporcione.

Para simplificar y optimizar aún más tu estrategia de autenticación y autorización para Kubernetes Engine, Google Distributed Cloud inhabilita el control de acceso basado en atributos (ABAC) antiguo.

Seguridad del plano de control

Los componentes del plano de control incluyen el servidor de la API de Kubernetes, el programador, los controladores y la base de datos etcd, donde se conserva la configuración de Kubernetes. En GKE, los componentes del plano de control de Kubernetes los gestiona y mantiene Google, mientras que los administradores locales gestionan los componentes del plano de control en Google Distributed Cloud.

En Google Distributed Cloud, los componentes del plano de control se ejecutan en tu red corporativa. Puedes proteger el servidor de la API de Kubernetes con las políticas de red y los firewalls de tu empresa. También puedes asignar una dirección IP interna al servidor de la API y limitar el acceso a esa dirección.

Todas las comunicaciones de Google Distributed Cloud se realizan a través de canales TLS, que se rigen por tres autoridades de certificación (ACs): etcd, clúster y organización.

  • La CA de etcd protege la comunicación del servidor de la API a las réplicas de etcd, así como el tráfico entre las réplicas de etcd. Esta CA tiene una firma automática.
  • La AC del clúster protege la comunicación entre el servidor de la API y todos los clientes internos de la API de Kubernetes (kubelets, controladores y programadores). Esta CA tiene una firma automática.
  • La AC de la organización es una AC externa que se usa para proporcionar la API de Kubernetes a usuarios externos. Gestionas esta CA.

En los planos de control de administrador, las claves se almacenan en el nodo del plano de control. En el caso de los clústeres de usuarios, las claves se almacenan como secretos de Kubernetes en el plano de control de administrador. El servidor de la API se configura con un certificado proporcionado por el usuario firmado por la AC de la organización. El servidor de la API usa la indicación de nombre de servidor (SNI) para determinar si debe usar la clave firmada por la AC del clúster o la clave firmada por la AC de la organización.

La autenticación de clústeres se gestiona mediante certificados y tokens de portador de cuentas de servicio. Como administrador, te autenticas en el plano de control mediante OIDC o con el certificado administrativo (que usas para crear la vinculación de roles inicial o para emergencias).

La rotación de certificados se gestiona de las siguientes formas:

  • En el caso del servidor de la API, los planos de control y los nodos, los certificados se crean o se rotan en cada actualización.
  • Las autoridades certificadoras se pueden rotar en contadas ocasiones o bajo demanda.

Seguridad de los nodos

Google Distributed Cloud despliega tus cargas de trabajo en instancias de VMware, que se adjuntan a tus clústeres como nodos. En las siguientes secciones se muestra cómo usar las funciones de seguridad a nivel de nodo que tienes a tu disposición.

Ubuntu

Google Distributed Cloud usa una versión optimizada de Ubuntu como sistema operativo en el que ejecutar el plano de control y los nodos de Kubernetes. Ubuntu incluye un amplio conjunto de funciones de seguridad modernas y Google Distributed Cloud implementa varias funciones que mejoran la seguridad de los clústeres, como las siguientes:

También hay disponibles otras guías de seguridad para Ubuntu, como las siguientes:

Actualizaciones de nodo

Debes actualizar tus nodos periódicamente. De vez en cuando, pueden surgir problemas de seguridad en el entorno de ejecución de contenedores, en Kubernetes o en el sistema operativo del nodo que requieran que actualices tus nodos con más urgencia. Cuando actualizas tu clúster, el software de cada nodo se actualiza a la versión más reciente.

Proteger tus cargas de trabajo

Kubernetes permite a los usuarios aprovisionar, escalar y actualizar rápidamente cargas de trabajo basadas en contenedores. En esta sección se describen las tácticas que pueden usar los administradores y los usuarios para limitar la capacidad de los contenedores en ejecución de afectar a otros contenedores del clúster, a los hosts en los que se ejecutan y a los Google Cloud servicios Google Cloud habilitados en su proyecto.

Limitar los privilegios de los procesos de los contenedores de pods

Limitar los privilegios de los procesos en contenedores es importante para la seguridad general de tu clúster. Kubernetes Engine te permite definir opciones relacionadas con la seguridad mediante el contexto de seguridad en pods y contenedores. Estos ajustes te permiten cambiar la configuración de seguridad de tus procesos, como:

  • Usuario y grupo con los que se ejecutará.
  • Funciones de Linux disponibles.
  • Apropiación de privilegios.

El sistema operativo de nodo predeterminado, Ubuntu, aplica las políticas de seguridad de Docker AppArmor predeterminadas a todos los contenedores iniciados por Kubernetes. Puedes ver la plantilla del perfil en GitHub. Entre otras cosas, el perfil deniega las siguientes funciones 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*.
  • Montar sistemas de archivos.

Registros de auditoría

Los registros de auditoría de Kubernetes permiten a los administradores conservar, consultar, procesar y enviar alertas sobre los eventos que se producen en sus entornos de Google Distributed Cloud. Los administradores pueden usar la información registrada para hacer análisis forenses, enviar alertas en tiempo real o catalogar cómo se usa una flota de clústeres de Kubernetes Engine y quién la usa.

De forma predeterminada, Google Distributed Cloud registra la actividad de administración. También puedes registrar eventos de acceso a datos, en función de los tipos de operaciones que te interese inspeccionar.

El agente de Connect solo se comunica con el servidor de la API local que se ejecuta en las instalaciones, y cada clúster debe tener su propio conjunto de registros de auditoría. Todas las acciones que los usuarios realicen desde la interfaz de usuario a través de Connect se registran en ese clúster.

Cifrado

Si tus clústeres y cargas de trabajo se conectan de forma segura a los servicios a través de Cloud VPN, puedes usar Cloud Key Management Service (Cloud KMS) para gestionar las claves.Google Cloud Cloud KMS es un servicio de gestión de claves alojado en la nube que te permite gestionar las claves criptográficas de tus servicios. Puedes generar, usar, rotar y eliminar claves criptográficas AES256, RSA 2048, RSA 3072, RSA 4096, EC P256 y EC P384. Cloud KMS está integrado con Gestión de Identidades y Accesos (IAM) y Cloud Audit Logging para que puedas gestionar los permisos de claves concretas y monitorizar cómo se utilizan. Usa Cloud KMS para proteger secretos y otros datos sensibles que necesites almacenar. De lo contrario, puedes elegir una de las siguientes alternativas:

  • Secretos de Kubernetes
  • HashiCorp Vault
  • HSM de red Luna de Thales
  • Google Cloud Módulo de seguridad de hardware (HSM)

Secretos de Kubernetes

Los recursos Secrets de Kubernetes almacenan datos sensibles, como contraseñas, tokens de OAuth y claves SSH, en tus clústeres. Almacenar datos sensibles en secretos es más seguro que hacerlo en ConfigMaps sin cifrar o en especificaciones de pods. Al usar secretos, puedes controlar cómo se usan los datos sensibles y reducir el riesgo de exponer los datos a usuarios no autorizados.