Asignación de imágenes de contenedor del código a la nube

Cuando se identifica una vulnerabilidad en una imagen de contenedor almacenada en un registro de contenedor o que se ejecuta en un clúster Kubernetes, puede ser difícil para cualquier profesional de la seguridad realizar un rastreo hasta llegar a la canalización de CI/CD que creó la imagen de contenedor e identificar al desarrollador propietario de la corrección. Con las funcionalidades de seguridad de DevOps en Administración de la posición de seguridad en la nube (CSPM) de Microsoft Defender, puede asignar las aplicaciones nativas de la nube desde el código a la nube para iniciar fácilmente los flujos de trabajo de corrección del desarrollador y reducir el tiempo de corrección de vulnerabilidades en las imágenes de contenedor.

Prerrequisitos

  • Una cuenta de Azure con Defender for Cloud incorporado. Si aún no tiene una cuenta de Azure, cree una de forma gratuita.

  • Entorno de Azure DevOps o GitHubincorporado a Microsoft Defender for Cloud.

    • Cuando se incorpora un entorno de Azure DevOps a Microsoft Defender for Cloud, la asignación de contenedores de Microsoft Defender para DevOps se compartirá e instalará automáticamente en todas las organizaciones de Azure DevOps conectadas. Esto insertará automáticamente tareas en todas las canalizaciones de Azure para recopilar datos para la asignación de contenedores.
  • En Azure DevOps, extensión de Microsoft Security DevOps (MSDO) instalada en la organización de Azure DevOps.

  • En GitHub, acción de Microsoft Security DevOps Services (MSDO) configurada en los repositorios de GitHub. Además, el flujo de trabajo de GitHub debe tener permisos de "id-token: escritura" para la federación con Defender for Cloud. Para obtener un ejemplo, consulte este YAML.

  • CSPM de Defender activado.

  • Las imágenes de contenedor deben compilarse mediante Docker y el cliente de Docker debe poder acceder al servidor de Docker durante la compilación.

Asignación de una imagen de contenedor desde las canalizaciones de Azure DevOps al registro de contenedor

Después de compilar una imagen de contenedor en una canalización de integración continua y entrega continua de Azure DevOps e insertarla en un registro, consulte la asignación mediante Cloud Security Explorer:

  1. Inicie sesión en Azure Portal.

  2. Vaya a Microsoft Defender for Cloud>Cloud Security Explorer. La asignación de imágenes de contenedor puede tardar un máximo de 4 horas en aparecer en Cloud Security Explorer.

  3. Para ver la asignación básica, seleccione Imágenes de contenedor>+>Insertadas por repositorios de código.

    Screenshot that shows how to find basic mapping of containers.

  4. (Opcional) Seleccione + en Imágenes de contenedor para agregar otros filtros a la consulta, como Tiene vulnerabilidades para filtrar solo imágenes de contenedor con CVE.

  5. Tras ejecutar la consulta, verá la asignación entre el registro de contenedor y la canalización de Azure DevOps. Haga clic en ... junto al borde para ver más detalles sobre dónde se ejecutó la canalización de Azure DevOps.

    Screenshot that shows an advanced query for container mapping results.

El siguiente es un ejemplo de una consulta avanzada que utiliza el mapeo de imágenes de contenedores. A partir de una carga de trabajo de Kubernetes expuesta a Internet, es posible hacer un seguimiento de todas las imágenes de contenedor con CVE de gravedad alta hasta llegar a la canalización de Azure DevOps en la que se creó la imagen de contenedor, lo que permite a un profesional de la seguridad iniciar un flujo de trabajo de corrección del desarrollador.

Screenshot that shows basic container mapping results.

Nota:

Si la organización de Azure DevOps tenía instalada la extensión MSDO antes del 15 de noviembre de 2023, vaya a Configuración de la organización>Extensiones> Compartido e instale el decorador de asignación de imágenes de contenedor. Si no ve la extensión compartida con su organización, rellene el siguiente formulario.

Asignación de una imagen de contenedor desde los flujos de trabajo de GitHub al registro de contenedor

  1. Agregue la herramienta de asignación de imágenes de contenedor al flujo de trabajo de MSDO:
name: Build and Map Container Image

on: [push, workflow_dispatch]

jobs:
  build:
    runs-on: ubuntu-latest
    # Set Permissions
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: '3.8' 
    # Set Authentication to Container Registry of Choice
   - name: Azure Container Registry Login 
        uses: Azure/docker-login@v1 
        with:
        login-server: <containerRegistryLoginServer>
        username: ${{ secrets.ACR_USERNAME }}
        password: ${{ secrets.ACR_PASSWORD }}
    # Build and Push Image
    - name: Build and Push the Docker image 
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: ${{ secrets.IMAGE_TAG }}
          file: Dockerfile
     # Run Mapping Tool in MSDO
    - name: Run Microsoft Security DevOps Analysis
      uses: microsoft/security-devops-action@latest
      id: msdo
      with:
        include-tools: container-mapping

Después de compilar una imagen de contenedor en un flujo de trabajo de GitHub e insertarla en un registro, consulte la asignación mediante Cloud Security Explorer:

  1. Inicie sesión en Azure Portal.

  2. Vaya a Microsoft Defender for Cloud>Cloud Security Explorer. La asignación de imágenes de contenedor puede tardar un máximo de 4 horas en aparecer en Cloud Security Explorer.

  3. Para ver la asignación básica, seleccione Imágenes de contenedor>+>Insertadas por repositorios de código.

    Screenshot that shows basic container mapping.

  4. (Opcional) Seleccione + en Imágenes de contenedor para agregar otros filtros a la consulta, como Tiene vulnerabilidades para filtrar solo imágenes de contenedor con CVE.

  5. Tras ejecutar la consulta, verá la asignación entre el registro de contenedor y el flujo de trabajo de GitHub. Haga clic en ... junto al borde para ver más detalles sobre dónde se ejecutó el flujo de trabajo de GitHub.

El siguiente es un ejemplo de una consulta avanzada que utiliza el mapeo de imágenes de contenedores. A partir de una carga de trabajo de Kubernetes expuesta a Internet, es posible hacer un seguimiento de todas las imágenes de contenedor con CVE de gravedad alta hasta llegar al repositorio de GitHub en el que se creó la imagen de contenedor, lo que permite a un profesional de la seguridad iniciar un flujo de trabajo de corrección del desarrollador.

Screenshot that shows basic container mapping results.

Pasos siguientes