Mapeie imagens de contêiner do código para a nuvem

Quando uma vulnerabilidade é identificada em uma imagem de contêiner armazenada em um registro de contêiner ou em execução em um cluster Kubernetes, pode ser difícil para um profissional de segurança rastrear o pipeline de CI/CD que primeiro criou a imagem de contêiner e identificar um proprietário de correção do desenvolvedor. Com os recursos de segurança DevOps no Microsoft Defender Cloud Security Posture Management (CSPM), você pode mapear seus aplicativos nativos da nuvem de código para nuvem para iniciar facilmente fluxos de trabalho de correção de desenvolvedores e reduzir o tempo de correção de vulnerabilidades em suas imagens de contêiner.

Pré-requisitos

  • Uma conta do Azure com o Defender for Cloud integrado. Se ainda não tiver uma conta do Azure, crie uma gratuitamente.

  • O ambiente Azure DevOps ou GitHub integrado ao Microsoft Defender é automaticamente compartilhado e instalado em todas as organizações de DevOps do Azure conectadas. Isso injeta automaticamente tarefas em todos os Pipelines do Azure para coletar dados para mapeamento de contêiner.

  • Para o Azure DevOps, a Extensão Microsoft Security DevOps (MSDO) instalada na organização do Azure DevOps.

  • Para o GitHub, Microsoft Security DevOps (MSDO) Action configurado em seus repositórios do GitHub. Além disso, o fluxo de trabalho do GitHub deve ter permissões de "id-token: write" para federação com o Defender for Cloud. Para obter um exemplo, consulte este YAML.

  • Defender CSPM habilitado.

  • As imagens de contêiner devem ser criadas usando o Docker e o cliente do Docker deve ser capaz de acessar o servidor do Docker durante a compilação.

Mapeie sua imagem de contêiner dos pipelines do Azure DevOps para o registro de contêiner

Depois de criar uma imagem de contêiner em um pipeline de CI/CD do Azure DevOps e enviá-la por push para um registro, consulte o mapeamento usando o Cloud Security Explorer:

  1. Inicie sessão no portal do Azure.

  2. Vá para Microsoft Defender for Cloud>Security Explorer. Pode levar no máximo 4 horas para que o mapeamento de imagem de contêiner apareça no Cloud Security Explorer.

  3. Para ver o mapeamento básico, selecione Imagens+>>de contêiner enviadas por repositórios de código.

    Captura de tela que mostra como encontrar o mapeamento básico de contêineres.

  4. (Opcional) Selecione + por Imagens de contêiner para adicionar outros filtros à sua consulta, como Tem vulnerabilidades para filtrar apenas imagens de contêiner com CVEs.

  5. Depois de executar sua consulta, você verá o mapeamento entre o registro de contêiner e o pipeline do Azure DevOps. Selecione ... ao lado da borda para ver mais detalhes sobre onde o pipeline do Azure DevOps foi executado.

    Captura de tela que mostra uma consulta avançada para resultados de mapeamento de contêiner.

A seguir está um exemplo de uma consulta avançada que utiliza o mapeamento de imagem de contêiner. Começando com uma carga de trabalho do Kubernetes exposta à Internet, você pode rastrear todas as imagens de contêiner com CVEs de alta gravidade até o pipeline de DevOps do Azure onde a imagem do contêiner foi criada, capacitando um profissional de segurança para iniciar um fluxo de trabalho de correção do desenvolvedor.

Captura de tela que mostra os resultados básicos do mapeamento de contêiner.

Nota

Se sua organização do Azure DevOps teve o conector do Azure DevOps criado antes de 15 de novembro de 2023, navegue até Configurações da organização>Extensões > compartilhadas e instale o decorador de mapeamento de imagem de contêiner. Se não vir a extensão partilhada com a sua organização, preencha o seguinte formulário.

Mapeie sua imagem de contêiner dos fluxos de trabalho do GitHub para o registro do contêiner

  1. Certifique-se de integrar um conector GitHub ao Defender for Cloud.

  2. Execute o seguinte fluxo de trabalho do 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. 
    # The example below is for Azure Container Registry. Amazon Elastic Container Registry and Google Artifact Registry are also supported. 
   - 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

Depois de criar uma imagem de contêiner em um fluxo de trabalho do GitHub e enviá-la por push para um registro, consulte o mapeamento usando o Cloud Security Explorer:

  1. Inicie sessão no portal do Azure.

  2. Vá para Microsoft Defender for Cloud>Security Explorer. Pode levar no máximo 4 horas para que o mapeamento de imagem de contêiner apareça no Cloud Security Explorer.

  3. Para ver o mapeamento básico, selecione Imagens+>>de contêiner enviadas por repositórios de código.

    Captura de tela que mostra o mapeamento básico de contêineres.

  4. (Opcional) Selecione + por Imagens de contêiner para adicionar outros filtros à sua consulta, como Tem vulnerabilidades para filtrar apenas imagens de contêiner com CVEs.

  5. Depois de executar sua consulta, você verá o mapeamento entre o registro de contêiner e o fluxo de trabalho do GitHub. Selecione ... ao lado da borda para ver mais detalhes sobre onde o fluxo de trabalho do GitHub foi executado.

A seguir está um exemplo de uma consulta avançada que utiliza o mapeamento de imagem de contêiner. Começando com uma carga de trabalho do Kubernetes exposta à Internet, você pode rastrear todas as imagens de contêiner com CVEs de alta gravidade até o repositório GitHub onde a imagem do contêiner foi criada, capacitando um profissional de segurança para iniciar um fluxo de trabalho de correção do desenvolvedor.

Captura de tela que mostra os resultados básicos do mapeamento de contêiner.

Próximos passos