Compartir a través de


Inicio rápido: Mantenerse al día con las actualizaciones y la seguridad de las dependencias de imágenes de contenedor mediante Dependabot y Copacetic

En esta guía de inicio rápido, le guiaremos por el proceso para configurar y usar Dependabot y Copacetic para simplificar, mantener y mantenerse al día con las actualizaciones de dependencias de software y mejorar la seguridad de las imágenes de contenedor en la cadena de suministro segura de contenedores.

Estas herramientas automatizarán el proceso, lo que garantizará 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. Supervise, examine y revise continuamente las imágenes de contenedor mediante Copa.

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 para configurar Dependabot con GitHub aquí.

Uso de Dependabot con Azure DevOps

  • Siga las instrucciones para configurar Dependabot con Azure DevOps:
  1. Conceda permisos mediante la creación de una cuenta de servicio con el nombre YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) con los permisos siguientes:

    -Force Push -Contribute to pull requests -Create branch

Permisos del servicio de compilación

  1. Configure Dependabot agregando un dependabot archivo de configuración similar al de este ejemplo:

      version: 2
      updates:
        - package-ecosystem: "docker"
          directory: "/"
          assignees:
            - "dependabot"
    

  2. Cree una canalización de Azure DevOps agregando un azure-pipeline.yaml archivo 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 }
    

  3. Ejecute la canalización Create and verify new ADO pipeline from above file (Crear y comprobar la nueva canalización de ADO desde el archivo anterior azure-pipelines.yaml ).

Actualmente Dependabot admite la actualización de dependencias de imágenes de contenedor en varios escenarios, como Dockerfile, Kubernetes YAML y valores de Helm.yaml. Al especificar imágenes en los archivos de configuración, puede seguir esta sintaxis:

-Dockerfile -Kubernetes YAML -Helm values.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.


# 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

  1. Siga la guía de inicio rápido para empezar a usar Copa.

  2. Canalización de ADO de ejemplo:

    -Puede encontrar una canalización de Azure DevOps de ejemplo para usar Copa aquí.

Copa también se puede integrar en flujos de trabajo de Acciones de Github para aplicar revisiones a vulnerabilidades de imagen mediante la acción copacetica. Esta acción aplica revisiones a un conjunto de imágenes designadas para un repositorio mediante sus informes de vulnerabilidades asociados.

Pasos siguientes