Este principio del pilar de seguridad del Google Cloud framework de arquitectura proporciona recomendaciones para incorporar funciones, controles y prácticas de seguridad sólidos al diseño de tus aplicaciones, servicios y plataformas en la nube. Desde la fase de ideación hasta la de operaciones, la seguridad es más eficaz cuando se integra como parte fundamental de cada etapa del proceso de diseño.
Descripción general de los principios
Tal como se explica en el artículo Descripción general del compromiso de Google con la seguridad desde el diseño, seguridad integrada y seguridad desde el diseño se suelen usar indistintamente, pero representan enfoques distintos para crear sistemas seguros. Ambos enfoques tienen como objetivo minimizar las vulnerabilidades y mejorar la seguridad, pero se diferencian en el alcance y la implementación:
- Seguro de forma predeterminada: se centra en asegurarse de que los ajustes predeterminados de un sistema estén configurados en un modo seguro, lo que minimiza la necesidad de que los usuarios o los administradores tomen medidas para proteger el sistema. El objetivo de este enfoque es proporcionar un nivel de seguridad básico a todos los usuarios.
- Seguridad desde el diseño: se centra en incorporar de forma proactiva consideraciones de seguridad a lo largo del ciclo de vida del desarrollo de un sistema. Este enfoque consiste en anticipar posibles amenazas y vulnerabilidades en una fase 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 e integrar la seguridad en todo el proceso de diseño. El enfoque de seguridad desde el diseño es una filosofía general que guía el proceso de desarrollo y ayuda a garantizar que la seguridad no sea algo que se piense después, sino que forme parte integral del diseño de un sistema.
Recomendaciones
Para implementar el principio de seguridad desde el diseño en tus cargas de trabajo en la nube, ten en cuenta las recomendaciones de las siguientes secciones:
- Elegir componentes del sistema que ayuden a proteger tus cargas de trabajo
- Crea una estrategia de seguridad por capas
- Usar infraestructura y servicios protegidos y certificados
- Cifrar datos en reposo y en tránsito
Elige componentes del sistema que te ayuden a proteger tus cargas de trabajo
Esta recomendación es pertinente para todas las áreas de interés.
Una decisión fundamental para que la seguridad sea eficaz es la selección de componentes de sistema sólidos, tanto de hardware como de software, que constituyan tu plataforma, solución o servicio. Para reducir la superficie de ataque de seguridad y limitar los posibles daños, también debes tener en cuenta los patrones de despliegue 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 fiables para eliminar clases de vulnerabilidades. Para buscar vulnerabilidades en bibliotecas de software, puedes usar herramientas de terceros. También puedes usar Assured Open Source Software, que te ayuda a reducir los riesgos de tu cadena de suministro de software mediante el uso de paquetes de software libre que Google utiliza y protege.
Tu infraestructura debe usar opciones de redes, almacenamiento y computación que permitan un funcionamiento seguro y se ajusten a 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 están expuestas a Internet.
Para obtener información sobre otras soluciones de Google que admiten esta recomendación, consulta Implementar la seguridad shift-left.
Crea una estrategia de seguridad por capas
Esta recomendación está relacionada con las siguientes áreas de interés:
- Seguridad de la IA y el aprendizaje automático
- Seguridad de la infraestructura
- Gestión de identidades y accesos
- Seguridad de los datos
Te recomendamos que implementes medidas de seguridad en cada capa de tu aplicación y de tu pila de infraestructura aplicando un enfoque de protección reforzada.
Usa las funciones de seguridad de 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 que se produzca un incidente de seguridad, haz lo siguiente:
- Simplifica el diseño de tu sistema para que sea flexible siempre que sea posible.
- Documenta los requisitos de seguridad de cada componente.
- Incorpora un mecanismo seguro y sólido para cumplir los requisitos de resiliencia y recuperación.
Cuando diseñes las capas de seguridad, haz una evaluación de riesgos para determinar las funciones de seguridad que necesitas para cumplir los requisitos de seguridad internos y los requisitos normativos externos. Te recomendamos que utilices un framework de evaluación de riesgos estándar del sector que se aplique a entornos de la nube y que sea pertinente para tus requisitos normativos. Por ejemplo, Cloud Security Alliance (CSA) proporciona la matriz de controles de la nube (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 son diferentes a los riesgos en un entorno local. Por ejemplo, en un entorno local, debes mitigar las vulnerabilidades de tu pila de hardware. Por el contrario, en un entorno de nube, el proveedor de servicios en la nube asume estos riesgos. Además, recuerda que los límites de las responsabilidades compartidas varían entre los servicios IaaS, PaaS y SaaS de cada proveedor de servicios en la nube.
Una vez que hayas identificado 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 lagunas y sugiere acciones para subsanarlas.
Usar infraestructura y servicios protegidos y certificados
Esta recomendación es pertinente para todas las áreas de interés.
Un programa de seguridad consolidado mitiga las nuevas vulnerabilidades, tal como se describe en los boletines de seguridad. El programa de seguridad también debe proporcionar soluciones para corregir las vulnerabilidades de las implementaciones actuales y proteger las imágenes de las máquinas virtuales y los contenedores. Puedes usar guías de protección específicas para el SO y la aplicación de tus imágenes, así como comparativas como la que ofrece el Center of Internet Security (CIS).
Si usas imágenes personalizadas para tus VMs de Compute Engine, debes aplicarles los parches tú mismo. También puedes usar imágenes de SO seleccionadas proporcionadas por Google, que se parchean periódicamente. Para ejecutar contenedores en máquinas virtuales de Compute Engine, usa imágenes de Container-Optimized OS seleccionadas por Google. Google parchea y actualiza estas imágenes periódicamente.
Si usas GKE, te recomendamos que habilites las actualizaciones automáticas de nodos para que Google actualice los nodos de tu clúster con los parches más recientes. Google gestiona los planos de control de GKE, que se actualizan y se les aplican parches 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 sin distribución son ideales para aplicaciones sensibles a la seguridad, microservicios y situaciones en las que es fundamental minimizar el tamaño de la imagen y la superficie de ataque.
En el caso de las cargas de trabajo sensibles, usa VM blindada, que impide que se cargue código malicioso durante el ciclo de arranque de la VM. Las instancias de VM blindadas proporcionan seguridad de arranque, monitorizan la integridad y usan el módulo de plataforma segura virtual (vTPM).
Para proteger el acceso SSH, OS Login permite que tus empleados se conecten a tus VMs mediante permisos de gestión de identidades y accesos (IAM) como fuente de información fiable, en lugar de usar claves SSH. Por lo tanto, no es necesario que gestiones las claves SSH en toda tu organización. Inicio de sesión del SO vincula el acceso de un administrador al ciclo de vida de sus empleados, de modo que, cuando los empleados cambian de rol o dejan tu organización, su acceso se revoca junto con su cuenta. El inicio de sesión del SO también admite la autenticación de dos factores de Google, que añade una capa adicional de seguridad contra los ataques de apropiación de cuentas.
En GKE, las instancias de aplicaciones se ejecutan en contenedores Docker. Para habilitar un perfil de riesgo definido y evitar que los empleados hagan cambios en los contenedores, asegúrate de que estos no tengan estado y sean inmutables. El principio de inmutabilidad implica que tus empleados no pueden modificar el contenedor ni acceder a él de forma interactiva. Si es necesario cambiar el contenedor, crea una imagen nueva y vuelve a desplegarla. Habilita el acceso SSH a los contenedores subyacentes solo en casos de depuración específicos.
Para proteger las configuraciones de todo tu entorno, puedes usar políticas de organización para definir restricciones o barreras de protección en los recursos que afecten al comportamiento de tus activos en la nube. Por ejemplo, puedes definir las siguientes políticas de organización y aplicarlas de forma global en una Google Cloud organización o de forma selectiva a nivel de carpeta o proyecto:
- Inhabilita la asignación de direcciones IP externas a las VMs.
- Restringir la creación de recursos a ubicaciones geográficas específicas.
- Inhabilitar la creación de cuentas de servicio o de sus claves.
Cifrar datos en reposo y en tránsito
Esta recomendación está relacionada con las siguientes áreas de interés:
- Seguridad de la infraestructura
- Seguridad de los datos
El cifrado de datos es un control fundamental para proteger la información sensible y una parte clave de la gobernanza de datos. Una estrategia de protección de datos eficaz incluye el control de acceso, la segmentación de datos y la residencia geográfica, la auditoría y la implementación del cifrado y, que se basa en una evaluación minuciosa de los requisitos.
De forma predeterminada, Google Cloud cifra los datos de los clientes que se almacenan en reposo, sin que tengas que hacer nada. Además del cifrado predeterminado,Google Cloud ofrece opciones de cifrado envolvente y gestión de claves de cifrado. Debes identificar las soluciones que mejor se adapten a tus requisitos de generación, almacenamiento y rotación de claves, en función de si buscas claves para tu almacenamiento, para recursos de computación o para cargas de trabajo de Big Data. Por ejemplo, las claves de cifrado gestionadas por el cliente (CMEKs) se pueden crear en Cloud Key Management Service (Cloud KMS). Las CMEKs pueden ser de software o estar protegidas por HSM para cumplir los requisitos normativos o de cumplimiento, como la necesidad de rotar las claves de encriptado periódicamente. Autokey de Cloud KMS te permite automatizar el aprovisionamiento y la asignación de CMEKs. Además, puedes usar tus propias claves procedentes de un sistema de gestión de claves de terceros mediante Cloud External Key Manager (Cloud EKM).
Recomendamos encarecidamente que los datos se cifren en tránsito. Google encripta y autentica los datos en tránsito en una o más capas de la red cuando estos salen de los límites físicos no controlados por Google o en su nombre. Todo el tráfico entre máquinas virtuales de una red de VPC y entre redes de VPC emparejadas se encripta. Puedes usar MACsec para cifrar el tráfico a través de conexiones de Cloud Interconnect. IPsec proporciona cifrado para el tráfico a través de conexiones de Cloud VPN. Puedes proteger el tráfico de aplicación a aplicación en la nube mediante funciones de seguridad como las configuraciones de TLS y mTLS en Apigee y Cloud Service Mesh para aplicaciones en contenedores.
De forma predeterminada, Google Cloud cifra los datos en reposo y los datos en tránsito en la red. Sin embargo, los datos no se cifran de forma predeterminada mientras se usan en la memoria. Si tu organización trata datos confidenciales, debes mitigar cualquier amenaza que ponga en peligro la confidencialidad y la integridad de la aplicación o de los datos en la memoria del sistema. Para mitigar estas amenazas, puedes usar la computación confidencial, que proporciona un entorno de ejecución de confianza para tus cargas de trabajo de computación. Para obtener más información, consulta la descripción general de las VMs confidenciales.