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ólidas 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 Descripción general del compromiso de Google con la seguridad por diseño, seguro de forma predeterminada y seguro por diseño se usan a menudo de forma intercambiable, pero representan enfoques distintos para compilar sistemas seguros. Ambos enfoques tienen como objetivo minimizar las vulnerabilidades y mejorar la seguridad, pero difieren en el alcance y la implementación:
- Seguro de forma predeterminada: Se enfoca en garantizar que la configuración predeterminada de un sistema esté establecida en un modo seguro, lo que minimiza la necesidad de que los usuarios o administradores realicen acciones para proteger el sistema. Este enfoque tiene como objetivo proporcionar un nivel de seguridad de referencia para todos los usuarios.
- Seguro por diseño: Hace hincapié en incorporar de forma proactiva consideraciones de seguridad durante todo el ciclo de vida de desarrollo de un sistema. Este enfoque consiste en anticipar posibles amenazas y vulnerabilidades con anticipación 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 incorporar la seguridad en todo el proceso de diseño. El enfoque de seguridad por diseño 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 para tus cargas de trabajo en la nube, considera las recomendaciones de las siguientes secciones:
- Elige componentes del sistema que ayuden a proteger tus cargas de trabajo
- Compila un enfoque de seguridad en capas
- Usa infraestructura y servicios protegidos y certificados
- Encripta los datos en reposo y en tránsito
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 buscar 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 la cadena de suministro de tu software mediante el uso de 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 operaciones seguras y se alineen con tus requisitos de seguridad y niveles de aceptación de riesgos. La seguridad de la infraestructura es importante para las cargas de trabajo internas y orientadas 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 IA y AA
- Seguridad de la infraestructura
- Administración de identidades y accesos
- Seguridad de los datos
Te recomendamos que implementes la seguridad en cada capa de la pila de aplicaciones y de infraestructura mediante un enfoque de defensa en profundidad.
Usa las funciones de seguridad en cada componente de tu plataforma. Para limitar el acceso y determinar 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 adaptarse 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 normativos externos. Te recomendamos que uses un framework 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 normativos. Por ejemplo, Cloud Security Alliance (CSA) proporciona la 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 posibles riesgos, debes diseñar y crear un plan de mitigación que use 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 protegidos y certificados
Esta recomendación es pertinente para todas las áreas de enfoque.
Un programa de seguridad maduro 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 tus imágenes de VM y contenedor. 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 proporciona el Center of Internet Security (CIS).
Si usas imágenes personalizadas para tus VMs de Compute Engine, debes aplicarles parches tú mismo. También puedes usar imágenes de SO seleccionadas proporcionadas por Google, a las que se les aplican parches con regularidad. Para ejecutar contenedores en VMs de Compute Engine, usa imágenes de Container-Optimized OSseleccionadas 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 últimos parches. 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 distroless. Las imágenes 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 mediante 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 a los ataques de apropiación de cuentas.
En GKE, las instancias de aplicaciones 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 de forma global las configuraciones en todo tu entorno, puedes usar políticas de la organización para establecer restricciones o barreras de protección en los recursos que afectan el comportamiento de tus recursos de la 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 es 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 que se basa 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 cumplir con tus requisitos normativos o de cumplimiento, como la necesidad de rotar las claves de encriptación con regularidad. Cloud KMS Autokey te permite automatizar el aprovisionamiento y la asignación de CMEK. Además, puedes traer tus propias claves que provienen 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 no están controlados por Google ni 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 en 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 en tránsito en 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 Confidential Computing, que proporciona un entorno de ejecución de confianza para tus cargas de trabajo de procesamiento. Para obtener más información, consulta Descripción general de Confidential VMs.