Mapear as imagens de contêiner do código na 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 do Kubernetes, pode ser difícil para um profissional de segurança rastrear até o pipeline de CI/CD que criou inicialmente a imagem de contêiner e identificar a pessoa responsável pela correção feita por desenvolvedores. Com as funcionalidades de segurança do DevOps no Gerenciamento da Postura de Segurança na Nuvem (GPSN) do Microsoft Defender, você pode mapear seus aplicativos nativos da nuvem do código para a nuvem e iniciar facilmente fluxos de trabalho de correção feita por desenvolvedores, reduzindo o tempo para a correção de vulnerabilidades em suas imagens de contêiner.
Pré-requisitos
Uma conta do Azure com o Defender para Nuvem integrado. Caso você ainda não tenha uma conta do Azure, crie uma conta gratuitamente.
O ambiente do Azure DevOps ou do GitHub integrado ao Microsoft Defender é automaticamente compartilhado e instalado em todas as organizações conectadas do Azure DevOps. Isso injeta tarefas automaticamente em todos os pipelines do Azure para coletar dados para o mapeamento de contêiner.
Para o Azure DevOps, tenha a extensão Microsoft Security DevOps (MSDO) instalada na organização do Azure DevOps.
Para o GitHub, configure a Ação do Microsoft Security DevOps (MSDO) em seus repositórios do GitHub. Adicionalmente, o Workflow do GitHub precisa ter permissões "id-token: write" para se integrar ao Defender para Nuvem. Para ver um exemplo, confira este YAML.
GPSN do Defender habilitado.
As imagens de contêiner devem ser criadas usando o Docker, e o cliente Docker precisa ter acesso ao servidor Docker durante o processo de compilação.
Mapeie a imagem de contêiner dos pipelines do Azure DevOps para o registro de contêiner
Após criar uma imagem de contêiner em um pipeline de CI/CD do Azure DevOps e enviá-la por push para um registro, veja o mapeamento usando o Cloud Security Explorer:
Entre no portal do Azure.
Vá para Microsoft Defender para Nuvem>Cloud Security Explorer. Pode levar no máximo 4 horas para que o mapeamento da imagem de contêiner apareça no Cloud Security Explorer.
Para ver o mapeamento básico, selecione Imagem de Contêiner>+>Enviadas por push por repositórios de código.
(Opcional) Selecione + em Imagens de Contêiner para adicionar outros filtros à sua consulta, como Tem vulnerabilidades para filtrar apenas imagens de contêiner com CVEs.
Depois de executar a 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.
Veja a seguir um exemplo de uma consulta avançada que utiliza o mapeamento de imagens de contêiner. Começando com uma carga de trabalho do Kubernetes que está exposta à Internet, você pode rastrear todas as imagens de contêiner com CVEs de alta gravidade até o pipeline do Azure DevOps em que a imagem de contêiner foi criada, capacitando um profissional de segurança a iniciar um fluxo de trabalho de correção feita por desenvolvedores.
Observação
Se sua organização do Azure DevOps criou o conector do Azure DevOps antes de 15 de novembro de 2023, acesse Configurações da organização>Extensões > Compartilhadas e instale o decorador de mapeamento de imagens de contêiner. Se você não vir a extensão compartilhada com sua organização, preencha o formulário a seguir.
Mapeie a imagem de contêiner dos fluxos de trabalho do GitHub para o registro de contêiner
Verifique se você integrou um conector do GitHub ao Defender para Nuvem.
Execute o seguinte fluxo de trabalho 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
Após criar uma imagem de contêiner em um fluxo de trabalho do GitHub e enviá-la por push para um registro, veja o mapeamento usando o Cloud Security Explorer:
Entre no portal do Azure.
Vá para Microsoft Defender para Nuvem>Cloud Security Explorer. Pode levar no máximo 4 horas para que o mapeamento da imagem de contêiner apareça no Cloud Security Explorer.
Para ver o mapeamento básico, selecione Imagem de Contêiner>+>Enviadas por push por repositórios de código.
(Opcional) Selecione + em Imagens de Contêiner para adicionar outros filtros à sua consulta, como Tem vulnerabilidades para filtrar apenas imagens de contêiner com CVEs.
Depois de executar a 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.
Veja a seguir um exemplo de uma consulta avançada que utiliza o mapeamento de imagens de contêiner. Começando com uma carga de trabalho do Kubernetes que está exposta à Internet, você pode rastrear todas as imagens de contêiner com CVEs de alta gravidade até o repositório do GitHub em que a imagem de contêiner foi criada, capacitando um profissional de segurança a iniciar um fluxo de trabalho de correção feita por desenvolvedores.
Próximas etapas
- Saiba mais sobre a segurança do DevOps no Microsoft Defender para Nuvem.