Implementa la seguridad según el diseño

Last reviewed 2025-02-05 UTC

Este principio del pilar de seguridad del Google Cloud framework de Well-Architected proporciona recomendaciones para incorporar funciones, controles y prácticas de seguridad sólidos en el diseño de tus aplicaciones, servicios y plataformas en la nube. Desde la ideación hasta las operaciones, la seguridad es más eficaz cuando se incorpora como parte integral de cada etapa del proceso de diseño.

Descripción general del principio

Como se explica en An Overview of Google's Commitment to Secure by Design, seguro de forma predeterminada y seguro por diseño se suelen usar indistintamente, pero representan enfoques distintos para crear sistemas seguros. Ambos enfoques buscan minimizar las vulnerabilidades y mejorar la seguridad, pero difieren en alcance y en implementación:

  • Seguro de forma predeterminada: Se enfoca en garantizar que la configuración predeterminada de un sistema se establezca en un modo seguro, lo que minimiza la necesidad de que los usuarios o administradores tomen medidas para proteger el sistema. Este enfoque tiene como objetivo proporcionar un nivel de seguridad básico para todos los usuarios.
  • Seguridad desde el diseño: Se hace hincapié en la incorporación proactiva de consideraciones de seguridad durante todo el ciclo de vida del desarrollo de un sistema. Este enfoque consiste en anticipar posibles amenazas y vulnerabilidades de forma temprana, y tomar decisiones de diseño que mitiguen los riesgos. Este enfoque implica usar prácticas de codificación seguras, realizar revisiones de seguridad y aplicar medidas de seguridad durante todo el proceso de diseño. El enfoque de diseño centrado en la seguridad es una filosofía general que guía el proceso de desarrollo y ayuda a garantizar que la seguridad no sea una idea adicional, sino una parte integral del diseño de un sistema.

Recomendaciones

Para implementar el principio de seguridad por diseño en tus cargas de trabajo en la nube, ten en cuenta las recomendaciones de las siguientes secciones:

Elige componentes del sistema que ayuden a proteger tus cargas de trabajo

Esta recomendación es pertinente para todas las áreas de enfoque.

Una decisión fundamental para una seguridad eficaz es la selección de componentes del sistema sólidos, incluidos los componentes de hardware y software, que constituyen tu plataforma, solución o servicio. Para reducir la superficie de ataque de seguridad y limitar los posibles daños, también debes considerar cuidadosamente los patrones de implementación de estos componentes y sus configuraciones.

En el código de tu aplicación, te recomendamos que uses bibliotecas, abstracciones y frameworks de aplicaciones sencillos, seguros y confiables para eliminar clases de vulnerabilidades. Para analizar las vulnerabilidades en las bibliotecas de software, puedes usar herramientas de terceros. También puedes usar Assured Open Source Software, que ayuda a reducir los riesgos para tu cadena de suministro de software usando paquetes de software de código abierto (OSS) que Google usa y protege.

Tu infraestructura debe usar opciones de redes, almacenamiento y procesamiento que admitan un funcionamiento seguro y se alineen con tus requisitos de seguridad y niveles de aceptación de riesgos. La seguridad de la infraestructura es importante tanto para las cargas de trabajo internas como para las que se exponen a Internet.

Para obtener información sobre otras soluciones de Google que admiten esta recomendación, consulta Implementa la seguridad de desplazamiento a la izquierda.

Compila un enfoque de seguridad en capas

Esta recomendación es pertinente para las siguientes áreas de enfoque:

  • Seguridad de la IA y el AA
  • Seguridad de la infraestructura
  • Administración de identidades y accesos
  • Seguridad de los datos

Te recomendamos que implementes seguridad en cada capa de la pila de infraestructura y aplicaciones aplicando un enfoque de defensa en profundidad.

Usa las funciones de seguridad en cada componente de tu plataforma. Para limitar el acceso e identificar los límites del posible impacto (es decir, el radio de explosión) en caso de un incidente de seguridad, haz lo siguiente:

  • Simplifica el diseño de tu sistema para que se adapte a la flexibilidad cuando sea posible.
  • Documenta los requisitos de seguridad de cada componente.
  • Incorpora un mecanismo seguro y sólido para abordar los requisitos de resiliencia y recuperación.

Cuando diseñes las capas de seguridad, realiza una evaluación de riesgos para determinar las funciones de seguridad que necesitas para cumplir con los requisitos de seguridad internos y los requisitos regulatorios externos. Te recomendamos que uses un marco de trabajo de evaluación de riesgos estándar de la industria que se aplique a los entornos de nube y que sea pertinente para tus requisitos reglamentarios. Por ejemplo, Cloud Security Alliance (CSA) proporciona Cloud Controls Matrix (CCM). La evaluación de riesgos te proporciona un catálogo de riesgos y los controles de seguridad correspondientes para mitigarlos.

Cuando realices la evaluación de riesgos, recuerda que tienes un acuerdo de responsabilidad compartida con tu proveedor de servicios en la nube. Por lo tanto, los riesgos en un entorno de nube difieren de los riesgos en un entorno local. Por ejemplo, en un entorno local, debes mitigar las vulnerabilidades de tu pila de hardware. En cambio, en un entorno de nube, el proveedor de servicios en la nube genera estos riesgos. Además, recuerda que los límites de las responsabilidades compartidas difieren entre los servicios de IaaS, PaaS y SaaS para cada proveedor de servicios en la nube.

Después de identificar los riesgos potenciales, debes diseñar y crear un plan de mitigación que utilice controles técnicos, administrativos y operativos, así como protecciones contractuales y certificaciones de terceros. Además, un método de modelado de amenazas, como el método de modelado de amenazas de aplicaciones de OWASP, te ayuda a identificar posibles brechas y sugiere acciones para abordarlas.

Usa infraestructura y servicios reforzados y certificados

Esta recomendación es pertinente para todas las áreas de enfoque.

Un programa de seguridad consolidado mitiga las vulnerabilidades nuevas, como se describe en los boletines de seguridad. El programa de seguridad también debe proporcionar soluciones para corregir las vulnerabilidades en las implementaciones existentes y proteger las imágenes de VM y de contenedores. Puedes usar guías de refuerzo específicas para el SO y la aplicación de tus imágenes, así como comparativas como la que proporciona el Centro para la seguridad en Internet (CIS).

Si usas imágenes personalizadas para tus VMs de Compute Engine, debes aplicarles parches tú mismo. Como alternativa, puedes usar las imágenes de SO seleccionadas que proporciona Google, a las que se les aplican parches con regularidad. Para ejecutar contenedores en VMs de Compute Engine, usa imágenes de Container-Optimized OS seleccionadas por Google. Google aplica parches a estas imágenes y las actualiza con regularidad.

Si usas GKE, te recomendamos que habilites las actualizaciones automáticas de nodos para que Google actualice los nodos del clúster con los parches más recientes. Google administra los planos de control de GKE, que se actualizan y se parchan automáticamente. Para reducir aún más la superficie de ataque de tus contenedores, puedes usar imágenes sin distribución. Las imágenes de Distroless son ideales para aplicaciones sensibles a la seguridad, microservicios y situaciones en las que minimizar el tamaño de la imagen y la superficie de ataque es fundamental.

Para las cargas de trabajo sensibles, usa la VM protegida, que evita que se cargue código malicioso durante el ciclo de inicio de la VM. Las instancias de VM protegida proporcionan seguridad de inicio, supervisan la integridad y usan el Módulo de plataforma segura virtual (vTPM).

Para ayudar a proteger el acceso SSH, el Acceso al SO permite que tus empleados se conecten a tus VMs con permisos de Identity and Access Management (IAM) como fuente de información, en lugar de depender de las claves SSH. Por lo tanto, no es necesario que administres claves SSH en toda la organización. El Acceso al SO vincula el acceso de un administrador a su ciclo de vida de empleado, por lo que, cuando los empleados cambian de rol o abandonan tu organización, su acceso se revoca con su cuenta. El Acceso al SO también admite la autenticación de dos factores de Google, que agrega una capa de seguridad adicional contra los ataques de apropiación de cuentas.

En GKE, las instancias de aplicación se ejecutan dentro de contenedores de Docker. Para habilitar un perfil de riesgo definido y evitar que los empleados realicen cambios en los contenedores, asegúrate de que tus contenedores sean inmutables y sin estado. El principio de inmutabilidad significa que tus empleados no modifican el contenedor ni acceden a él de forma interactiva. Si se debe cambiar el contenedor, debes compilar una imagen nueva y volver a implementarla. Habilita el acceso SSH a los contenedores subyacentes solo en situaciones de depuración específicas.

Para ayudar a proteger las configuraciones de forma global en todo tu entorno, puedes usar políticas de la organización para establecer restricciones o medidas de protección en los recursos que afectan el comportamiento de tus activos de nube. Por ejemplo, puedes definir las siguientes políticas de la organización y aplicarlas de forma global en una Google Cloud organización o de forma selectiva a nivel de una carpeta o un proyecto:

  • Inhabilita la asignación de direcciones IP externas a las VMs.
  • Restringe la creación de recursos a ubicaciones geográficas específicas.
  • Inhabilita la creación de cuentas de servicio o sus claves.

Encripta los datos en reposo y en tránsito

Esta recomendación es pertinente para las siguientes áreas de enfoque:

  • Seguridad de la infraestructura
  • Seguridad de los datos

La encriptación de datos es un control fundamental para proteger la información sensible y una parte clave de la administración de datos. Una estrategia eficaz de protección de datos incluye el control de acceso, la segmentación de datos y la residencia geográfica, la auditoría y la implementación de la encriptación basada en una evaluación cuidadosa de los requisitos.

De forma predeterminada, Google Cloud encripta los datos de los clientes almacenados en reposo, sin que debas realizar ninguna acción. Además de la encriptación predeterminada,Google Cloud proporciona opciones para la encriptación de sobre y la administración de claves de encriptación. Debes identificar las soluciones que se adapten mejor a tus requisitos de generación, almacenamiento y rotación de claves, ya sea que elijas las claves para tu almacenamiento, procesamiento o cargas de trabajo de macrodatos. Por ejemplo, las claves de encriptación administradas por el cliente (CMEK) se pueden crear en Cloud Key Management Service (Cloud KMS). Las CMEK pueden basarse en software o estar protegidas por HSM para satisfacer tus requisitos regulatorios o de cumplimiento, como la necesidad de rotar las claves de encriptación con regularidad. Autokey de Cloud KMS te permite automatizar el aprovisionamiento y la asignación de CMEK. Además, puedes usar tus propias claves provenientes de un sistema de administración de claves de terceros con Cloud External Key Manager (Cloud EKM).

Te recomendamos que los datos se encripten en tránsito. Google encripta y autentica los datos en tránsito en una o más capas de red cuando los datos se transfieren fuera de los límites físicos que Google no controla o que no actúan en su nombre. Se encriptará todo el tráfico de VM a VM dentro de una red de VPC y entre redes de VPC con intercambio de tráfico. Puedes usar MACsec para encriptar el tráfico en las conexiones de Cloud Interconnect. IPsec proporciona encriptación para el tráfico a través de las conexiones de Cloud VPN. Puedes proteger el tráfico de aplicación a aplicación en la nube con funciones de seguridad como las configuraciones de TLS y mTLS en Apigee y Cloud Service Mesh para aplicaciones alojadas en contenedores.

De forma predeterminada, Google Cloud encripta los datos en reposo y los datos en tránsito en toda la red. Sin embargo, los datos no se encriptan de forma predeterminada mientras están en uso en la memoria. Si tu organización maneja datos confidenciales, debes mitigar las amenazas que comprometen la confidencialidad y la integridad de la aplicación o los datos en la memoria del sistema. Para mitigar estas amenazas, puedes usar la Confidential Computing, que proporciona un entorno de ejecución confiable para tus cargas de trabajo de procesamiento. Para obtener más información, consulta Descripción general de Confidential VMs.