Sdílet prostřednictvím


Rychlý start: Mějte aktuální informace o aktualizacích závislostí imagí kontejneru a zabezpečení pomocí Dependabotu a Copacetic

V této příručce pro rychlý start vás provedeme procesem konfigurace a použití Dependabot a Copacetic ke zjednodušení, údržbě a udržování aktuálních informací o aktualizacích závislostí softwaru a vylepšení zabezpečení imagí kontejnerů v kontejnerech zabezpečeného dodavatelského řetězce.

Tyto nástroje proces automatizují a zajistí, aby image kontejnerů byly vždy aktuální a zabezpečené.

V tomto rychlém startu se naučíte:

Aktualizujte závislosti imagí kontejneru a zabezpečení pomocí Dependabotu. Průběžně monitorujte, kontrolujte a opravujte image kontejnerů pomocí Copa.

Požadavky

Aktualizace závislostí imagí kontejneru a zabezpečení pomocí Dependabotu

Dependabot je nástroj, který automatizuje proces udržování softwarových závislostí v aktualizovaném stavu. Funguje to tak, že v úložišti vyhledáte zastaralé závislosti a vytvoříte žádosti o přijetí změn, abyste je aktualizovali na nejnovější verzi. Každý den kontroluje aktualizace závislostí a vytváří žádosti o přijetí změn, které je aktualizují. Dependabot můžete nakonfigurovat tak, aby vytvářel žádosti o přijetí změn pro všechny typy závislostí, včetně imagí Dockeru. Pokud chcete získat nejnovější opravy zabezpečení a snížit rizika zabezpečení, doporučujeme použít dependabot k automatickému přehánění závislostí v souborech Dockerfiles, souborů yaml souborů yaml a hodnot chartů Helm.

Použití Dependabotu s GitHubem

  • Postupujte podle pokynů k nastavení Dependabotu s GitHubem tady.

Použití Dependabotu s Azure DevOps

  • Postupujte podle pokynů ke konfiguraci Dependabotu s Azure DevOps:
  1. Udělte oprávnění vytvořením účtu služby s názvem YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) s následujícími oprávněními:

    -Force Push -Contribute to pull requests -Create branch

Oprávnění služby sestavení

  1. Nakonfigurujte Dependabot přidáním konfiguračního souboru podobného dependabot tomuto příkladu:

      version: 2
      updates:
        - package-ecosystem: "docker"
          directory: "/"
          assignees:
            - "dependabot"
    

  2. Vytvořte kanál Azure DevOps přidáním azure-pipeline.yaml souboru s následujícím obsahem:

     schedules:
       - cron: '0 14 * * *'
         displayName: 'Every day at 7am PST'
         branches:
           include: [main]
         always: true
    
     trigger: none
    
     jobs:
       - job:
         steps:
         - script: |
             git clone https://github.com/dependabot/dependabot-core.git
             cd dependabot-core
    
             DOCKER_BUILDKIT=1 docker build \
               --build-arg "USER_UID=$(id -u)" \
               --build-arg "USER_GID=$(id -g)" \
               -t "dependabot/dependabot-core" .
             cd ..
           displayName: build dependabot-core Docker image
    
         - script: |
             git clone https://github.com/dependabot/dependabot-script.git
             cd dependabot-script
    
             docker run -v "$(pwd):/home/dependabot/dependabot-script" -w /home/dependabot/dependabot-script dependabot/dependabot-core bundle install -j 3 --path vendor
           displayName: install dependencies
    
         - script: |
             #!/bin/bash
             SYSTEM_COLLECTIONURI_TRIM=`echo "${SYSTEM_COLLECTIONURI:22}"`
             PROJECT_PATH="$SYSTEM_COLLECTIONURI_TRIM$SYSTEM_TEAMPROJECT/_git/$BUILD_REPOSITORY_NAME"
             echo "path: $PROJECT_PATH"
    
             docker run  -v "$(pwd)/dependabot-script:/home/dependabot/dependabot-script" \
                         -w '/home/dependabot/dependabot-script' \
                         -e AZURE_ACCESS_TOKEN=$(System.AccessToken) \
                         -e PACKAGE_MANAGER=docker \
                         -e PROJECT_PATH=$PROJECT_PATH \
                         -e DIRECTORY_PATH=/ \
                         -e OPTIONS="$OPTIONS" \
                         dependabot/dependabot-core bundle exec ruby ./generic-update-script.rb
           displayName: "run dependabot"
           env:
             OPTIONS: |
               { "kubernetes_updates": true }
    

  3. Spusťte kanál Create a ověřte nový kanál ADO z výše uvedeného azure-pipelines.yaml souboru.

V současné době Dependabot podporuje aktualizaci závislostí imagí kontejneru v různých scénářích, včetně souborů Dockerfile, Kubernetes YAML a hodnot Helm.yaml. Při zadávání imagí v konfiguračních souborech můžete postupovat podle této syntaxe:

-Dockerfile -Kubernetes YAML -Helm values.yaml

Poznámka:

Syntaxe umožňuje Dependabotu identifikovat a aktualizovat závislosti image kontejneru v konfiguračních souborech a zajistit tak aktuály nejnovější verze a opravy zabezpečení.


# Dockerfile
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

# Helm values.yaml
foo:
  image:
    repository: sql/sql
    tag: 1.2.3
    registry: docker.io

Alternativně Helm values.yamlmůžete version použít pole k určení verze image:

foo:
  image:
    repository: sql/sql
    version: 1.2.3

Průběžné monitorování, prohledávání a opravy imagí kontejnerů pomocí Copacetic

Copacetic (copa) je opensourcový projekt CNCF založený na Microsoftu, který přímo opravuje chyby zabezpečení balíčku operačního systému Linux v imagích kontejnerů vzhledem k výsledkům kontroly ohrožení zabezpečení z oblíbených nástrojů skeneru. Copacetic umožňuje rychle opravovat kontejnery, aniž by se upstreamovat pro úplné opětovné sestavení. To pomůže imagím kontejnerů rychle znovu nasadit do produkčního prostředí. Copacetic je pouze pro chyby zabezpečení operačního systému Linux. V případě ohrožení zabezpečení na úrovni aplikace je potřeba před sestavením image provést opravy.

Použití kopacetické

  1. Pokud chcete začít používat Copa, postupujte podle úvodní příručky.

  2. Ukázkový kanál ADO:

    – Tady najdete ukázkový kanál Azure DevOps pro použití Copa.

Copa je také možné integrovat do pracovních postupů GitHub Actions a opravit ohrožení zabezpečení obrázků pomocí akce Copacetic Action. Tato akce opraví sadu určených imagí úložiště pomocí souvisejících sestav ohrožení zabezpečení.

Další kroky