Inicio rápido: Actualización y protección de dependencias de imágenes de contenedor con Dependabot y Copacetic
En este inicio rápido, se le mostrarán los pasos necesarios para configurar Dependabot y Copacetic, lo que le ayudará a automatizar las actualizaciones de dependencias de software y reforzar la seguridad de las imágenes de contenedor en un entorno seguro de la cadena de suministro. Con estas herramientas, puede asegurarse de que las imágenes de contenedor estén siempre actualizadas y seguras.
En esta guía de inicio rápido, ha aprendido a hacer lo siguiente:
- Actualice las dependencias y la seguridad de las imágenes de contenedor mediante Dependabot.
- Dependabot automatiza el proceso de mantener actualizadas las dependencias de las imágenes de contenedor, lo que reduce el riesgo de vulnerabilidades.
- Supervise, examine y revise continuamente las imágenes de contenedor mediante Copacetic.
- Copacetic proporciona supervisión y examen continuos de las imágenes de contenedor, lo que garantiza que son seguros y revisados contra vulnerabilidades conocidas.
Requisitos previos
- Suscripción a Azure. Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
- La versión más reciente de la CLI de Azure instalada y configurada para la suscripción.
- Una instancia de Azure Container Registry (ACR) existente en la suscripción.
Actualización de las dependencias y la seguridad de las imágenes de contenedor mediante Dependabot
Dependabot es una herramienta que automatiza el proceso de mantener actualizadas las dependencias de software. Funciona mediante el examen del repositorio de dependencias obsoletas y la creación de solicitudes de incorporación de cambios para actualizarlas a la versión más reciente. Comprueba si hay actualizaciones en las dependencias diariamente y crea solicitudes de incorporación de cambios para actualizarlas. Puede configurar Dependabot para crear solicitudes de incorporación de cambios para todos los tipos de dependencias, incluidas las imágenes de Docker. Se recomienda usar dependabot para aumentar automáticamente las dependencias en los archivos dockerfiles, los archivos yaml de Kubernetes y los valores de gráfico de Helm para obtener las revisiones de seguridad más recientes y reducir los riesgos de seguridad.
Uso de Dependabot con GitHub
Siga las instrucciones y recomendaciones para administrar eficazmente las solicitudes de incorporación de cambios generadas por Dependabot, mediante Acciones de GitHub para mejorar el rendimiento de Dependabot y solucionar problemas comunes de Los errores de Dependabot.
- Configure Dependabot con GitHub aquí.
Uso de Dependabot con Azure DevOps
Siga las instrucciones para configurar Dependabot con Azure DevOps, lo que garantiza que las dependencias de la imagen de contenedor permanezcan actualizadas con las versiones más recientes y las mejoras de seguridad.
- Conceder permisos: cree una cuenta de servicio con el nombre
YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME)
y conceda los permisos siguientes:
- Forzar "push"
- Contribuir a solicitudes de extracción
- Crear rama
Asegúrese de reemplazar YOUR-PROJECT-NAME
y YOUR-ORGANIZATION-NAME
por los nombres reales del proyecto y la organización.
Configurar Dependabot: para configurar Dependabot, agregue un
dependabot.yml
archivo de configuración al repositorio. Este es un ejemplo del aspecto del archivo de configuración:version: 2 updates: - package-ecosystem: "docker" directory: "/" assignees: - "dependabot"
Esta configuración configura Dependabot para un proyecto que usa Docker, especificando que el directorio raíz ("/") es donde se encuentran los archivos de Docker y asignan Dependabot para controlar las actualizaciones. Puede personalizar la configuración para satisfacer las necesidades del proyecto.
Creación de una canalización de Azure DevOps: para crear una canalización de Azure DevOps, agregue un
azure-pipeline.yml
archivo al repositorio con el siguiente contenido:schedules: - cron: '0 14 * * *' displayName: 'Every day at 7am PST' branches: include: [main] always: true trigger: none jobs: - job: steps: - script: | git clone https://github.com/dependabot/dependabot-core.git cd dependabot-core DOCKER_BUILDKIT=1 docker build \ --build-arg "USER_UID=$(id -u)" \ --build-arg "USER_GID=$(id -g)" \ -t "dependabot/dependabot-core" . cd .. displayName: build dependabot-core Docker image - script: | git clone https://github.com/dependabot/dependabot-script.git cd dependabot-script docker run -v "$(pwd):/home/dependabot/dependabot-script" -w /home/dependabot/dependabot-script dependabot/dependabot-core bundle install -j 3 --path vendor displayName: install dependencies - script: | #!/bin/bash SYSTEM_COLLECTIONURI_TRIM=`echo "${SYSTEM_COLLECTIONURI:22}"` PROJECT_PATH="$SYSTEM_COLLECTIONURI_TRIM$SYSTEM_TEAMPROJECT/_git/$BUILD_REPOSITORY_NAME" echo "path: $PROJECT_PATH" docker run -v "$(pwd)/dependabot-script:/home/dependabot/dependabot-script" \ -w '/home/dependabot/dependabot-script' \ -e AZURE_ACCESS_TOKEN=$(System.AccessToken) \ -e PACKAGE_MANAGER=docker \ -e PROJECT_PATH=$PROJECT_PATH \ -e DIRECTORY_PATH=/ \ -e OPTIONS="$OPTIONS" \ dependabot/dependabot-core bundle exec ruby ./generic-update-script.rb displayName: "run dependabot" env: OPTIONS: | { "kubernetes_updates": true }
Ejecute la canalización: cree y compruebe la nueva canalización de ADO desde el archivo anterior
azure-pipelines.yaml
.
Dependabot puede actualizar las dependencias de la imagen de contenedor en varios escenarios, como:
- Dockerfile
- Kubernetes YAML
- Valores de Helm.yaml
Nota:
La sintaxis permite a Dependabot identificar y actualizar las dependencias de imágenes de contenedor dentro de los archivos de configuración, lo que garantiza mantenerse al día con las versiones más recientes y las revisiones de seguridad.
Al especificar imágenes en los archivos de configuración, use la sintaxis siguiente:
# Dockerfile
foo:
image:
repository: sql/sql
tag: 1.2.3
registry: docker.io
# Helm values.yaml
foo:
image:
repository: sql/sql
tag: 1.2.3
registry: docker.io
Como alternativa, para Helm values.yaml
, puede usar el version
campo para especificar la versión de la imagen:
foo:
image:
repository: sql/sql
version: 1.2.3
Supervisión, examen y revisión continua de imágenes de contenedor mediante Copacetic
Copacetic (copa) es un proyecto de código abierto CNCF respaldado por Microsoft que aplica revisiones directas a las vulnerabilidades del paquete del sistema operativo Linux en imágenes de contenedor, dados los resultados del examen de vulnerabilidades de las herramientas populares del escáner. Copacetic permite aplicar revisiones a los contenedores rápidamente sin ir hacia arriba para una recompilación completa. Esto ayudará a las imágenes de contenedor a volver a implementar rápidamente en producción. Copacetic solo es para vulnerabilidades del sistema operativo Linux. En el caso de las vulnerabilidades de nivel de aplicación, se deben realizar revisiones antes de compilar la imagen.
Uso de Copacetic
Siga la guía de inicio rápido de Copacetic proporciona instrucciones para aplicar revisiones a las imágenes de contenedor mediante el uso de los resultados del examen de vulnerabilidades.
Revise la canalización de ADO de ejemplo para ver un archivo de configuración de canalización de Azure DevOps de ejemplo para usar Copacetic. La canalización está diseñada para integrar Copacetic en el flujo de trabajo de CI/CD, lo que permite supervisar, examinar y aplicar revisiones continuas de imágenes de contenedor para detectar vulnerabilidades.
Copacetic también se puede integrar en flujos de trabajo de Acciones de Github para aplicar revisiones a vulnerabilidades de imagen mediante la acción copacética. Esta acción aplica revisiones a un conjunto de imágenes designadas para un repositorio mediante sus informes de vulnerabilidades asociados.