Implementación de una canalización que detecte simultáneamente los problemas de seguridad en varios entregables de código - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Implementación de una canalización que detecte simultáneamente los problemas de seguridad en varios entregables de código

Benjamin Morris, Tim Hahn, Sapeksh Madan, Dina Odum y Isaiah Schisler, Amazon Web Services

Resumen

La canalización simple de análisis de código (SCSP) permite crear con dos clics una canalización de análisis de código que ejecuta en paralelo las herramientas de seguridad de código abierto estándares del sector. Esto permite a los desarrolladores comprobar la calidad y la seguridad de su código sin tener que instalar herramientas ni siquiera saber cómo ejecutarlas. Esto lo ayuda a reducir las vulnerabilidades y los errores de configuración en los entregables de código. También reduce la cantidad de tiempo que su organización dedica a instalar, investigar y configurar las herramientas de seguridad.

Antes del SCSP, el análisis de código con este conjunto particular de herramientas requería que los desarrolladores localizaran, instalaran y configuraran manualmente las herramientas de análisis de software. Incluso si se instalan localmente, all-in-one las herramientas, como Automated Security Helper (ASH), requieren configurar un contenedor Docker para poder ejecutarse. Sin embargo, con SCSP, un conjunto de herramientas de análisis de código estándar del sector se ejecuta automáticamente en la Nube de AWS. Con esta solución, utilizas Git para impulsar las entregas de código y, a continuación, recibes un resultado visual con at-a-glance información sobre los errores en las comprobaciones de seguridad.

Requisitos previos y limitaciones

  • Un activo Cuenta de AWS

  • Uno o más entregables de código que desee analizar para detectar problemas de seguridad

  • AWS Command Line Interface (AWS CLI), instalado y configurado

  • La versión 3.0 o posterior de Python o la versión 9.0.3 o posterior de pip instaladas

  • Git, instalado

  • Instálelo git-remote-codecommiten su estación de trabajo local

Arquitectura

Pila de tecnología de destino

  • AWS CodeCommit repositorio

  • AWS CodeBuild proyecto

  • AWS CodePipeline oleoducto

  • Bucket de Amazon Simple Storage Service (Amazon S3)

  • AWS CloudFormation plantilla

Arquitectura de destino

El SCSP para el análisis de código estático es un DevOps proyecto diseñado para proporcionar información de seguridad sobre el código entregable.

El SCSP realiza un análisis de código en una región de AWS.
  1. En el Consola de administración de AWS, inicia sesión en el objetivo. Cuenta de AWS Confirme que se encuentra en el Región de AWS lugar donde desea implementar la canalización.

  2. Utilice la CloudFormation plantilla del repositorio de código para implementar la pila SCSP. Esto crea un CodeCommit repositorio y un CodeBuild proyecto nuevos.

    nota

    Como opción de implementación alternativa, puedes usar un CodeCommit repositorio existente proporcionando el nombre de recurso de Amazon (ARN) del repositorio como parámetro durante el despliegue de la pila.

  3. Clone el repositorio en su estación de trabajo local y, a continuación, añada los archivos a sus respectivas carpetas del repositorio clonado.

  4. Usa Git para añadir, confirmar y enviar los archivos al CodeCommit repositorio.

  5. Al empujarlos al CodeCommit repositorio, se inicia un CodeBuild trabajo. El CodeBuild proyecto utiliza las herramientas de seguridad para escanear los entregables de código.

  6. Revise el resultado de la canalización. Las herramientas de seguridad que detecten problemas de nivel de error provocarán acciones fallidas en la canalización. Corrija estos errores o elimínelos como falsos positivos. Revisa los detalles del resultado de la herramienta en los detalles de la acción en el bucket S3 de la canalización CodePipeline o en él.

Tools (Herramientas)

Servicios de AWS

  • AWS CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y administrarlos a lo largo de su ciclo de vida en todas Cuentas de AWS las regiones.

  • AWS CodeBuild es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar.

  • AWS CodeCommit es un servicio de control de versiones que permite almacenar y administrar repositorios de Git de forma privada, sin necesidad de administrar su propio sistema de control de origen.

Otras herramientas

Para obtener una lista completa de las herramientas que SCSP utiliza para escanear los entregables de código, consulte el léame del SCSP. GitHub

Repositorio de código

El código de este patrón está disponible en el repositorio Simple Code Scanning Pipeline (SCSP) de. GitHub

Epics

TareaDescripciónHabilidades requeridas

Crea la CloudFormation pila.

  1. Inicie sesión en la Consola de administración de AWS.

  2. En la consola, confirme que se encuentra en la región de destino en la que desea implementar la solución. Para obtener más información, consulte Selección de una región.

  3. Elija el enlace siguiente. Esto abre el asistente de creación rápida de pilas CloudFormation.

    https://console.aws.amazon.com/cloudformation/¿casa? #/ -Pipeline-stack.template.json&stackName= stacks/create/review?templateURL=https://proservetools.s3.amazonaws.com/cft/scsp SimpleCodeScanPipeline

  4. En el asistente de creación rápida de pilas, revise la configuración de los parámetros de la pila y realice las modificaciones necesarias según su caso de uso.

  5. Seleccione Acepto que AWS CloudFormation podría crear recursos de IAM y, a continuación, elija Create stack.

Esto crea un CodeCommit repositorio, una CodePipeline canalización, varias definiciones de CodeBuild trabajos y un bucket de S3. Las ejecuciones de compilación y los resultados del análisis se copian en este bucket. Una vez que la CloudFormation pila se haya desplegado por completo, SCSP estará listo para su uso.

AWS DevOps, administrador de AWS
TareaDescripciónHabilidades requeridas

Examine los resultados del análisis.

  1. En la consola de Amazon S3, en Buckets, elija el bucket simplecodescanpipeline-deleteresourcespipelinereso.

  2. Elija el directorio scan_results y, a continuación, elija la carpeta con la fecha de análisis más reciente.

  3. Revise los archivos de registro de esta carpeta para revisar cualquier problema detectado por las herramientas de seguridad utilizadas en la canalización. Las herramientas de seguridad que detecten problemas de nivel de error provocarán acciones failed en la canalización. Si se trata de falsos positivos, es necesario corregirlos o suprimirlos.

    nota

    También puede ver los detalles del resultado de la herramienta (tanto para los escaneos aprobados como para los que no) en la CodePipeline consola, en la sección de detalles de las acciones.

Desarrollador de aplicaciones, AWS DevOps

Resolución de problemas

ProblemaSolución

HashiCorp No se están escaneando Terraform ni sus AWS CloudFormation archivos.

Asegúrese de que los archivos Terraform (.tf) y CloudFormation (.yml, .yaml o .json) estén ubicados en las carpetas correspondientes del repositorio clonado. CodeCommit

El comando git clone está fallando.

Asegúrese de haber instalado git-remote-codecommit y de que su CLI tenga acceso a AWS las credenciales que tienen permisos para leer el CodeCommit repositorio.

Un error de simultaneidad, como Project-level concurrent build limit cannot exceed the account-level concurrent build limit of 1.

Vuelva a ejecutar la canalización pulsando el botón Release Change de la CodePipeline consola. Se trata de un problema conocido que parece ser más común las primeras veces que se ejecuta la canalización.

Recursos relacionados

Proporcione comentarios sobre el proyecto de SCSP.

Información adicional

Preguntas frecuentes

¿El proyecto de SCSP es igual al de Automated Security Helper (ASH)?

No. Use ASH cuando desee una herramienta de CLI que ejecute herramientas de análisis de código mediante contenedores. Automated Security Helper (ASH) es una herramienta diseñada para reducir la probabilidad de que se produzca una infracción de seguridad en la nueva configuración de código, infraestructura o recursos de IAM. ASH es una utilidad de línea de comandos que se puede ejecutar de forma local. El uso local requiere que un entorno de contenedores esté instalado y operativo en el sistema.

Utilice SCSP cuando desee una canalización de configuración más sencilla que la de ASH. SCSP no requiere instalaciones locales. SCSP está diseñado para ejecutar comprobaciones de forma individual en una canalización y mostrar los resultados por herramienta. SCSP también evita gran parte de la sobrecarga que supone la configuración de Docker y es independiente del sistema operativo (SO).

¿SCSP es solo para equipos de seguridad?

No, cualquiera puede implementar la canalización para determinar qué partes de su código no superan los controles de seguridad. Por ejemplo, los usuarios que no son usuarios de seguridad pueden usar SCSP para comprobar su código antes de revisarlo con sus equipos de seguridad.

¿Puedo usar SCSP si estoy trabajando con otro tipo de repositorio, como GitLab GitHub, o Bitbucket?

Puede configurar un repositorio git local para que apunte a dos repositorios remotos diferentes. Por ejemplo, puedes clonar un GitLab repositorio existente, crear una instancia de SCSP (especificando CloudFormation las carpetas Terraform y AWS Config Rules Development Kit (AWS RDK), si fuera necesario) y, a continuación, utilizarla git remote add upstream <SCSPGitLink> para apuntar también el repositorio local al repositorio de SCSP. CodeCommit Esto permite que los cambios de código se envíen primero a SCSP, se validen y, después, después de realizar cualquier actualización adicional para corregir los hallazgos, se envíen al repositorio o a Bitbucket GitLab. GitHub Para obtener más información sobre varios controles remotos, consulta Enviar confirmaciones a un repositorio de Git adicional (entrada AWS del blog).

nota

Tenga cuidado con las desviaciones, por ejemplo, evite hacer cambios a través de las interfaces web.

Contribución y adición de sus propias acciones

La configuración de SCSP se mantiene como un GitHub proyecto, que contiene el código fuente de la aplicación AWS Cloud Development Kit (AWS CDK) SCSP. Para añadir comprobaciones adicionales a la canalización, es necesario actualizar la AWS CDK aplicación y, a continuación, sintetizarla o desplegarla en el destino en el que Cuenta de AWS se ejecutará la canalización. Para ello, comience por clonar el GitHub proyecto SCSP y, a continuación, busque el archivo de definición de la pila en la lib carpeta.

Si quieres añadir una marca adicional, la StandardizedCodeBuildProject clase del AWS CDK código facilita la adición de acciones. Proporciona el nombre, la descripción install o los build comandos. AWS CDK crea el CodeBuild proyecto utilizando valores predeterminados razonables. Además de crear el proyecto de construcción, es necesario añadirlo a las CodePipeline acciones de la fase de construcción. Al diseñar una nueva comprobación, la acción debería FAIL si la herramienta de análisis detecta problemas o no se ejecuta. La acción debería PASS si la herramienta de análisis no detecta ningún problema. Para ver un ejemplo de configuración de una herramienta, revise el código de la acción Bandit.

Para obtener más información acerca de las entradas y salidas esperadas, consulte la documentación del repositorio.

Si agrega acciones personalizadas, debe implementar SCSP mediante cdk deploy o cdk synth + CloudFormation deploy. Esto se debe a que los propietarios del repositorio mantienen la CloudFormation plantilla de pila Quick Create.