

# SEC11-BP05 Centralización de servicios para paquetes y dependencias
<a name="sec_appsec_centralize_services_for_packages_and_dependencies"></a>

 Proporcione servicios centralizados para que sus equipos obtengan paquetes de software y otras dependencias. De este modo, se podrán validar los paquetes antes de incluirlos en el software que escriba y se dispondrá de un origen de datos para el análisis del software que se utiliza en su organización. 

 **Resultado deseado:** crea la carga de trabajo a partir de paquetes de software externos además del código que programe. Esto permite implementar más fácilmente funcionalidades de uso reiterado, como un analizador JSON o una biblioteca de cifrado. Centraliza los orígenes de estos paquetes y dependencias para que su equipo de seguridad los valide antes de utilizarlos. Utiliza este planteamiento junto con los flujos de pruebas manuales y automatizadas para aumentar la confianza en la calidad del software que desarrolla. 

 **Patrones comunes de uso no recomendados:** 
+  Obtiene paquetes de repositorios arbitrarios de Internet. 
+  No prueba los nuevos paquetes antes de ponerlos a disposición de los creadores. 

**Beneficios de establecer esta práctica recomendada:**
+  Mejor comprensión de los paquetes que se utilizan en el software que se crea. 
+  Poder notificar a los equipos de carga de trabajo cuándo es necesario actualizar un paquete en función de la comprensión de quién utiliza qué. 
+  Reducción del riesgo de que se incluya en el software un paquete con problemas. 

 **Nivel de riesgo expuesto si no se establece esta práctica recomendada: **medio 

## Guía para la implementación
<a name="implementation-guidance"></a>

 Proporcione servicios centralizados para paquetes y dependencias de una manera que resulte sencilla de consumir a los creadores. Los servicios centralizados pueden ser lógicamente centrales en lugar de implementarse como un sistema monolítico. Este método le permite proporcionar servicios de una manera que satisfaga las necesidades de los creadores. Debe implementar una forma eficaz de agregar paquetes al repositorio cuando se produzcan actualizaciones o surjan nuevos requisitos. Los servicios de AWS como [AWS CodeArtifact](https://aws.amazon.com/codeartifact/) o las soluciones similares de socios de AWS son una forma de ofrecer esta capacidad. 

### Pasos para la implementación
<a name="implementation-steps"></a>
+ Implemente un servicio de repositorio lógicamente centralizado que esté disponible en todos los entornos en los que se desarrolla software. 
+ Incluya el acceso al repositorio como parte del proceso de aprovisionamiento de cuentas de Cuenta de AWS.
+ Consolide la automatización para probar paquetes antes de que se publiquen en un repositorio.
+ Mantenga métricas de los paquetes, lenguajes y equipos más utilizados y con mayor cantidad de cambios.
+  Proporcione un mecanismo automatizado para que los equipos de creación soliciten nuevos paquetes y proporcionen comentarios. 
+  Analice periódicamente los paquetes del repositorio para identificar la posible repercusión de los problemas que se acaban de detectar. 

## Recursos
<a name="resources"></a>

 **Prácticas recomendadas relacionadas:** 
+  [SEC11-BP02 Automatización de las pruebas a lo largo del ciclo de vida de desarrollo y lanzamiento](sec_appsec_automate_testing_throughout_lifecycle.md) 

 **Documentos relacionados:** 
+ [ DevOps Guidance: DL.CS.2 Sign code artifacts after each build ](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/dl.cs.2-sign-code-artifacts-after-each-build.html)
+ [ Supply chain Levels for Software Artifacts (SLSA) ](https://slsa.dev/)

 **Ejemplos relacionados:** 
+  [Accelerate deployments on AWS with effective governance](https://aws.amazon.com/blogs/architecture/accelerate-deployments-on-aws-with-effective-governance/) 
+  [Tighten your package security with CodeArtifact Package Origin Control toolkit](https://aws.amazon.com/blogs/devops/tighten-your-package-security-with-codeartifact-package-origin-control-toolkit/) 
+  [Multi Region Package Publishing Pipeline](https://github.com/aws-samples/multi-region-python-package-publishing-pipeline) (GitHub) 
+  [Publishing Node.js Modules on AWS CodeArtifact using AWS CodePipeline](https://github.com/aws-samples/aws-codepipeline-publish-nodejs-modules) (GitHub) 
+  [AWS CDK Java CodeArtifact Pipeline Sample](https://github.com/aws-samples/aws-cdk-codeartifact-pipeline-sample) (GitHub) 
+  [Distribute private .NET NuGet packages with AWS CodeArtifact](https://github.com/aws-samples/aws-codeartifact-nuget-dotnet-pipelines) (GitHub) 

 **Videos relacionados:** 
+  [Proactive security: Considerations and approaches](https://www.youtube.com/watch?v=CBrUE6Qwfag) 
+  [The AWS Philosophy of Security (re:Invent 2017)](https://www.youtube.com/watch?v=KJiCfPXOW-U) 
+  [When security, safety, and urgency all matter: Handling Log4Shell](https://www.youtube.com/watch?v=pkPkm7W6rGg) 