Partilhar via


CI/CD para análise de pipelines com o CLI do Defender for Cloud

O Microsoft Defender for Cloud Command-Line Interface (Defender for Cloud CLI) permite-lhe incorporar a varredura de segurança diretamente nos seus fluxos de trabalho de integração contínua e implementação contínua (CI/CD). A CLI organiza scanners de segurança e pode funcionar localmente para os programadores.

Capacidades chave

  • Avaliação da vulnerabilidade da imagem do contentor e ingestão automática no Cloud Security Explorer.
  • CLI unificada e multiplataforma que funciona com qualquer ferramenta CI/CD.
  • Saída SARIF baseada em padrões que se integra com anotações de pull-request e controlos de qualidade.
  • Autenticação baseada em tokens, limitada a uma única subscrição do Azure, para controlo granular ou autenticação com o conector do Azure DevOps.

Pré-requisitos

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

  • Defender CSPM ativado.

  • Uma das seguintes ferramentas de pipeline CI/CD: Azure Pipelines, GitHub Actions, Jenkins, BitBucket Pipelines, GitLab, Google Cloud Build, Bamboo, CircleCI, Travis CI, TeamCity, Oracle DevOps Services ou AWS CodeBuild.

  • Terminal Windows ou Linux/WSL para varreduras locais no ambiente de trabalho.

  • Permissão de Administrador de Segurança para criar o ID do cliente e os tokens secretos caso se utilize autenticação baseada em tokens, ou um conector Azure DevOps ou GitHub estabelecido no caso de se utilizar autenticação baseada em conectores.

Configuração da autenticação

O Defender for Cloud CLI suporta dois métodos de autenticação para se alinhar com as práticas de segurança empresarial. A autenticação baseada em conector está atualmente disponível e é o método preferido de autenticação para Azure DevOps e GitHub.

  1. Autenticação baseada em conector
  2. Autenticação baseada em token

Configure a sua pipeline de CI/CD

Escolha o exemplo de configuração que corresponda à sua plataforma CI/CD e ao método de autenticação.

Azure DevOps (autenticação baseada em conectores)

- task: MicrosoftDefenderCLI@2
    inputs:
      command: 'run'
      scanType: 'image'
      imageName: $(ImageName)
      break: false

GitHub (autenticação baseada em tokens)

- name: Download Defender for Cloud CLI
  run: |
    curl -L -o defender "https://aka.ms/defender-cli_linux-x64" && chmod +x defender
- name: Run Defender for Cloud CLI Scan (Built)
  run: |
    #replace image-name with the Container image built      
    ./defender scan image '${{ image-name }}'
  continue-on-error: true
  env:
    DEFENDER_TENANT_ID: ${{ secrets.DEFENDER_TENANT_ID }}
    DEFENDER_CLIENT_ID: ${{ secrets.DEFENDER_CLIENT_ID }}
    DEFENDER_CLIENT_SECRET: ${{ secrets.DEFENDER_CLIENT_SECRET }}

Jenkins (autenticação baseada em token)

environment {
  DEFENDER_TENANT_ID=credentials('defender-tenant-id')
  DEFENDER_CLIENT_ID=credentials('defender-client-id')
  DEFENDER_CLIENT_SECRET=credentials('defender-client-secret')
} 

stage('Download & Run Defender for Cloud CLI') {
  steps {
    script {
      node {
        sh 'curl -L -o defender "https://aka.ms/defender-cli_linux-x64"'
        sh 'chmod +x defender'
        sh './defender scan image ${IMAGE_NAME}'
      }
    }
  }
}