

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
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables"></a>

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

## Resumen
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-summary"></a>

La [canalización simple de análisis de código (SCSP)](https://github.com/awslabs/simple-code-scanning-pipeline) 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
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-prereqs"></a>
+ 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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) y [configurado](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ La versión 3.0 o posterior de Python o la versión 9.0.3 o posterior de pip [instaladas](https://www.python.org/downloads/windows/)
+ Git, [instalado](https://github.com/git-guides/install-git)
+ Instálelo [git-remote-codecommit](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-git-remote-codecommit.html#setting-up-git-remote-codecommit-install)en su estación de trabajo local

## Arquitectura
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-architecture"></a>

**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.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/61fe4f99-7dfc-48a8-90e4-a25253cc140d/images/fbc13150-0970-48d6-87bc-84dfaed90d4b.png)


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.

1. 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.

1. 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.

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

1. 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.

1. 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)
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-tools"></a>

**Servicios de AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)le 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](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 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](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 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](https://github.com/awslabs/simple-code-scanning-pipeline/blob/main/README.md). GitHub

**Repositorio de código**

El código de este patrón está disponible en el repositorio [Simple Code Scanning Pipeline (SCSP](https://github.com/awslabs/simple-code-scanning-pipeline)) de. GitHub

## Epics
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-epics"></a>

### Implementación de SCSP
<a name="deploy-the-scsp"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crea la CloudFormation pila. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.html)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 | 

### Uso de la canalización
<a name="use-the-pipeline"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Examine los resultados del análisis. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables.html) | Desarrollador de aplicaciones, AWS DevOps | 

## Resolución de problemas
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-troubleshooting"></a>


| Problema | Solució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](https://console.aws.amazon.com/codesuite/codepipeline/home). Se trata de un problema conocido que parece ser más común las primeras veces que se ejecuta la canalización. | 

## Recursos relacionados
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-resources"></a>

[Proporcione comentarios](https://github.com/awslabs/simple-code-scanning-pipeline/issues) sobre el proyecto de SCSP.

## Información adicional
<a name="deploy-a-pipeline-that-simultaneously-detects-security-issues-in-multiple-code-deliverables-additional"></a>

**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)](https://github.com/awslabs/automated-security-helper) 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](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-mirror-repo-pushes.html) (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](https://github.com/awslabs/simple-code-scanning-pipeline) 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](https://github.com/awslabs/simple-code-scanning-pipeline/blob/main/README.md).

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**.