Compartilhar via


CI/CD em verificação de pipeline com a CLI do Defender para Nuvem

A Interface de Linha de Comando do Microsoft Defender para Nuvem (CLI do Defender para Nuvem) permite inserir a verificação de segurança diretamente em seus fluxos de trabalho de CI/CD (integração contínua e implantação contínua). A CLI orquestra scanners de segurança e pode ser executada localmente para desenvolvedores.

Principais capacidades

  • Avaliação de vulnerabilidade de imagem de contêiner e ingestão automática no Cloud Security Explorer.
  • CLI unificada e multiplataforma que funciona com qualquer ferramenta de CI/CD.
  • Saída SARIF baseada em padrões que se integra com anotações de pull requests e padrões de qualidade.
  • Autenticação baseada em token com escopo para uma única assinatura do Azure para controle detalhado ou autenticação do Conector do Azure DevOps.

Pré-requisitos

  • Uma assinatura do Azure com o Defender para Nuvem integrado. Caso você ainda não tenha uma conta do Azure, crie uma conta gratuitamente.

  • GPSN do Defender habilitada.

  • Uma das seguintes ferramentas de pipeline de 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 do Windows ou Linux/WSL para verificações locais da área de trabalho.

  • Permissão de de Administrador de Segurança para criar a ID do cliente e tokens secretos se estiver usando autenticação baseada em token ou um conector do Azure DevOps ou GitHub estabelecido, se estiver usando autenticação baseada em conector.

Configuração de autenticação

A CLI do Defender para Nuvem dá suporte a dois métodos de autenticação para se alinhar às práticas de segurança da empresa. A "Connector-based authentication" está atualmente disponível e é o método preferido de autenticação para o Azure DevOps e o GitHub.

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

Configurar seu pipeline de CI/CD

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

Azure DevOps (autenticação baseada em conector)

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

GitHub (autenticação baseada em token)

- 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}'
      }
    }
  }
}