Control de seguridad v3: Seguridad de DevOps

Seguridad de DevOps cubre los controles relacionados con la ingeniería de seguridad y las operaciones en los procesos de DevOps, incluida la implementación de comprobaciones de seguridad críticas (como las pruebas de seguridad de aplicaciones estáticas o la administración de vulnerabilidades) antes de la fase de implementación para garantizar la seguridad a lo largo del proceso de DevOps; también incluye temas comunes como el modelado de amenazas y la seguridad de suministro de software.

DS-1: realizar el modelado de amenazas

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
16.10, 16.14 SA-15 6.5, 12.2

Principio de seguridad: realice el modelado de amenazas para identificar las posibles amenazas y enumerar los controles de mitigación. Asegúrese de que el modelado de amenazas tiene los siguientes fines:

  • Proteja sus aplicaciones y servicios en la fase de tiempo de ejecución de la producción.
  • Proteja los artefactos, la canalización de CI/CD subyacente y otros entornos de herramientas que se usan para la compilación, las pruebas y la implementación.

El modelado de amenazas debe incluir al menos los siguientes aspectos:

  • Defina los requisitos de seguridad de la aplicación. Asegúrese de que estos requisitos se abordan adecuadamente en el modelado de amenazas.
  • Analice los componentes de las aplicaciones y las conexiones de datos y sus relaciones. Asegúrese de que este análisis también incluye las conexiones ascendentes y descendentes fuera del ámbito de la aplicación.
  • Enumere las posibles amenazas y vectores de ataque a los que se pueden exponer los componentes de la aplicación, las conexiones de datos y los servicios de nivel ascendente y descendente.
  • Identifique los controles de seguridad aplicables que se pueden usar para mitigar las amenazas enumeradas e identificar las brechas de controles (por ejemplo, vulnerabilidades de seguridad) que pueden requerir planes de tratamiento adicionales.
  • Enumere y diseñe los controles que pueden mitigar las vulnerabilidades identificadas.

Guía de Azure: use herramientas de modelado de amenazas como la herramienta de modelado de amenazas de Microsoft que cuenta con la plantilla de modelos de amenazas de Azure insertada para impulsar el proceso de modelado de amenazas. Use el modelo STRIDE para enumerar las amenazas tanto internas como externas e identificar los controles aplicables. Asegúrese de que el proceso de modelado de amenazas incluye los escenarios de amenazas en el proceso de DevOps, como la inyección de código malintencionado a través de un repositorio de artefactos no seguros con una directiva de control de acceso mal configurada.

Si el uso de una herramienta de modelado de amenazas no es aplicable, debe usar como mínimo un proceso de modelado de amenazas basado en cuestionarios para identificar las amenazas.

Asegúrese de que los resultados del análisis o el modelado de amenazas se registran y actualizan cuando se produce un cambio importante que afecte a la seguridad de la aplicación o al panorama de amenazas.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):

DS-2: Garantizar la seguridad de la cadena de suministro de software

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
16.4, 16.6, 16.11 SA-12, SA-15 6.3, 6.5

Principio de seguridad: asegúrese de que el SDLC (ciclo de vida de desarrollo de software) o el proceso de su empresa incluya un conjunto de controles de seguridad para controlar los componentes de software internos y de terceros (incluido el software propietario y de código abierto) donde las aplicaciones tengan dependencias. Defina criterios de acceso para evitar que componentes vulnerables o malintencionados se integren e implementen en el entorno.

Los controles de seguridad de la cadena de suministro de software deben incluir al menos los siguientes aspectos:

  • Identifique las dependencias ascendentes necesarias en la fase de desarrollo, compilación, integración e implementación.
  • Realice un inventario y un seguimiento de los componentes de software internos y de terceros para ver si hay alguna vulnerabilidad conocida cuando haya una corrección disponible en el nivel ascendente.
  • Evalúe las vulnerabilidades y el malware en los componentes de software mediante pruebas de aplicaciones estáticas y dinámicas en busca de vulnerabilidades desconocidas.
  • Asegúrese de que las vulnerabilidades y el malware se mitigan mediante el enfoque adecuado. Esto puede incluir la corrección local o ascendente del código fuente, la exclusión de características o la aplicación de controles de compensación si la mitigación directa no está disponible.

Si se usan componentes de terceros de origen cerrado en el entorno de producción, es posible que tenga una visibilidad limitada de su posición de seguridad. Por lo tanto, debe tener en cuenta controles adicionales, como el control de acceso, el aislamiento de red y la seguridad de los puntos de conexión para minimizar el impacto si hay alguna actividad malintencionada o una vulnerabilidad asociada al componente.

Guía de Azure: en el caso de la plataforma GitHub, compruebe la seguridad de la cadena de suministro de software mediante las siguientes funcionalidades o herramientas de GitHub Advanced Security o la característica nativa de GitHub:

  • Use el gráfico de dependencias para examinar, inventariar e identificar todas las dependencias del proyecto y las vulnerabilidades relacionadas a través de la base de datos de asesoramiento.
  • Use Dependabot para asegurarse de que se realiza el seguimiento y la corrección de la dependencia vulnerable, y asegúrese de que el repositorio se mantiene automáticamente al día con las versiones más recientes de los paquetes y aplicaciones de los que depende.
  • Use el análisis de código nativo de GitHub para examinar el código fuente si lo obtiene desde un punto externo.
  • Use Azure Defender for Cloud para integrar la evaluación de vulnerabilidades de la imagen de contenedor en el flujo de trabajo de CI/CD.

En cuanto a Azure DevOps, puede usar extensiones de terceros para implementar controles similares para inventariar, analizar y corregir los componentes de software de terceros y sus vulnerabilidades.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):

DS-3: Infraestructura de DevOps segura

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
16.7 CM-2, CM-6, AC-2, AC-3, AC-6 2.2, 6.3, 7.1

Principio de seguridad: asegúrese de que la infraestructura y la canalización de DevOps siguen los procedimientos recomendados de seguridad en todos los entornos, incluidas las fases de compilación, prueba y producción. Normalmente, esto incluye los controles de seguridad para el ámbito siguiente:

  • Repositorios de artefactos que almacenan código fuente, paquetes e imágenes creados, artefactos de proyecto y datos empresariales.
  • Servidores, servicios y herramientas que hospedan canalizaciones de CI/CD.
  • Configuración de la canalización de CI/CD.

Guía de Azure: como parte del proceso de aplicación de Azure Security Benchmark a los controles de seguridad de la infraestructura de DevOps, debe dar prioridad a los siguientes controles:

  • Proteja los artefactos y el entorno subyacente para asegurarse de que las canalizaciones de CI/CD no se conviertan en vías para insertar código malintencionado. Por ejemplo, revise la canalización de CI/CD para identificar cualquier configuración incorrecta en las áreas principales de Azure DevOps, como Organización, Proyectos, Usuarios, Canalizaciones (Compilación & Versión), Conexiones y Agente de compilación para identificar cualquier configuración incorrecta, como acceso abierto, autenticación débil, configuración de conexión no segura, etc. En el caso de GitHub, use controles similares para proteger los niveles de permisos de la organización.
  • Configure los permisos de identidad o rol y las directivas de derechos en Azure AD, los servicios nativos y las herramientas de CI/CD en la canalización para asegurarse de que los cambios en las canalizaciones están autorizados.
  • Evite proporcionar acceso y privilegios "permanentes" a las cuentas gestionadas por usuarios como desarrolladores o evaluadores; para ello, puede usar características como las identificaciones administradas por Azure y el acceso Just-In-Time.
  • Quite las claves, las credenciales y los secretos del código y los scripts que se usan en los trabajos de flujo de trabajo de CI/CD y guárdelos en el almacén de claves o en Azure Key Vault.
  • Si ejecuta agentes de compilación e implementación auto-hospedados, siga los controles de Azure Security Benchmark, incluidos los de seguridad de red, posición y administración de vulnerabilidades y seguridad de los puntos de conexión para proteger el entorno.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):

DS-4: Integración de pruebas de seguridad estáticas de aplicaciones en una canalización de DevOps

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
16.12 SA-11 6.3, 6.5

Principio de seguridad: asegúrese de que las pruebas de seguridad de aplicaciones estáticas (SAST) forman parte de los controles de acceso en el flujo de trabajo de CI/CD. El acceso se puede establecer en función de los resultados de las pruebas para evitar que los paquetes vulnerables se confirmen en el repositorio o se implementen en otros paquetes o en la producción.

Guía de Azure: integre SAST en la canalización para que el código fuente se pueda examinar automáticamente en el flujo de trabajo de CI/CD. La canalización de Azure DevOps o GitHub puede integrar las herramientas siguientes y las herramientas SAST de terceros en el flujo de trabajo.

  • CodeQL de GitHub para el análisis de código fuente.
  • Analizador binario de Microsoft BinSkim para Windows y análisis binario de *nix.
  • Analizador de credenciales de Azure DevOps y de secretos nativos de GitHub para el examen de credenciales en el código fuente.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):

DS-5: Integración de pruebas de seguridad dinámicas de aplicaciones en una canalización de DevOps

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
16.12 SA-11 6.3, 6.5

Principio de seguridad: asegúrese de que las pruebas de seguridad de aplicaciones estáticas (SAST) forman parte de los controles de acceso en el flujo de trabajo de CI/CD. El acceso se puede establecer en función de los resultados de las pruebas para evitar que la vulnerabilidad se pueda compilar en los paquetes o implementarse en la producción.

Guía de Azure: integre DAST en la canalización para que la aplicación en tiempo de ejecución se pueda probar automáticamente en el flujo de trabajo de CI/CD establecido en Azure DevOps o GitHub. Las pruebas de penetración automatizadas (con validación asistida manual) también deben formar parte del DAST.

La canalización de Azure DevOps o GitHub admite la integración de herramientas DAST de terceros en el flujo de trabajo de CI/CD.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):

DS-6: Aplicación de seguridad de cargas de trabajo mediante el ciclo de vida de DevOps

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
7.5, 7.6, 7.7, 16.1, 16.7 CM-2, CM-6, AC-2, AC-3, AC-6 6.1, 6.2, 6.3

Principio de seguridad: asegúrese de que la carga de trabajo está protegida durante todo el ciclo de vida de la fase de desarrollo, prueba e implementación. Use Azure Security Benchmark para evaluar los controles (como seguridad de red, administración de identidades y acceso con privilegios, entre otros) que se puedan establecer de forma predeterminada como límites de protección o desplazarse a la izquierda antes de la fase de implementación. En concreto, asegúrese de que los siguientes controles están en el proceso de DevOps:

  • Automatice la implementación mediante herramientas de Azure o de terceros en el flujo de trabajo de CI/CD, la administración de la infraestructura (infraestructura como código) y las pruebas para reducir los errores humanos y la superficie de ataque.
  • Asegúrese de que las VM, las imágenes de contenedor y otros artefactos están protegidos contra la manipulación malintencionada.
  • Examine los artefactos de carga de trabajo (es decir, imágenes de contenedor, dependencias y exámenes SAST y DAST) antes de realizar la implementación en el flujo de trabajo de CI/CD.
  • Implemente la evaluación de vulnerabilidades y la funcionalidad de detección de amenazas en el entorno de producción y use continuamente estas capacidades en tiempo de ejecución.

Guía de Azure: guía para VM de Azure:

  • Use una instancia de Azure Shared Image Gallery para compartir imágenes con diferentes usuarios, entidades de servicio o grupos de AD dentro de su organización y administrar el acceso a estas. Use el control de acceso basado en rol de Azure (Azure RBAC) para asegurarse de que solo los usuarios autorizados pueden acceder a las imágenes personalizadas.
  • Defina las líneas base de configuración seguras para que las VM eliminen credenciales, permisos y paquetes innecesarios. A través de imágenes personalizadas, la plantilla de Azure Resource Manager o la configuración de invitado de Azure Policy puede implementar y aplicar estas líneas base de configuración.

Guía para los servicios de contenedor de Azure:

  • Use Azure Container Registry (ACR) para crear el registro de un contenedor privado donde se pueda restringir un acceso granular a través de Azure RBAC, de modo que solo los servicios y cuentas autorizados puedan acceder a los contenedores en el registro privado.
  • Use Defender para Azure Container Registry para realizar la evaluación de vulnerabilidades de las imágenes de la instancia privada de Azure Container Registry. Además, puede usar Azure Defender for Cloud para mejorar el examen de imágenes de contenedor como parte de los flujos de trabajo de CI/CD.

En el caso de los servicios sin servidor de Azure, adopte controles similares para asegurarse de que los controles de seguridad se desplazan a la izquierda en la fase anterior a la implementación.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):

DS-7: Habilitación del registro y la supervisión en DevOps

Id. de CIS Controls v8 Identificadores de NIST SP 800-53 r4 Id de PCI-DSS v3.2.1
8.2, 8.5, 8.9, 8.11 AU-3, AU-6, AU-12, SI-4 10.1, 10.2, 10.3, 10.6

Principio de seguridad: asegúrese de que el ámbito de registro y supervisión incluye entornos que no sean de producción y elementos de flujo de trabajo de CI/CD que se usan en DevOps (y en cualquier otro proceso de desarrollo). Las vulnerabilidades y amenazas que tienen como destino estos entornos pueden presentar riesgos significativos para el entorno de producción si no se supervisan correctamente. También se deben supervisar los eventos del flujo de trabajo de compilación, prueba e implementación de CI/CD para identificar las desviaciones en los trabajos del flujo de trabajo de CI/CD.

Guía de Azure: habilite y configure las funcionalidades de registro de auditoría en entornos de herramientas de CI/CD que no sean de producción (como Azure DevOps y GitHub) y que se usen a lo largo del proceso de DevOps.

Los eventos del trabajo de CI/CD de Azure DevOps y GitHub para los trabajos de compilación, prueba e implementación también deben supervisarse para poder identificar los resultados de cualquier excepción en los trabajos de CI/CD.

Realice la ingesta de los registros y eventos anteriores en Azure Sentinel u otras herramientas SIEM a través del flujo de registro o la API para asegurarse de que los incidentes de seguridad se supervisan y controlan correctamente.

Siga "Azure Security Benchmark: registro y detección de amenazas" como guía para implementar los controles de registro y supervisión de la carga de trabajo.

Implementación y contexto adicional:

Partes interesadas de seguridad del cliente (Obtenga más información):