Aracılığıyla paylaş


Hızlı Başlangıç: Dependabot ve Copacetic ile kapsayıcı görüntüsü bağımlılıklarını güncelleştirme ve güvenliğini sağlama

Bu hızlı başlangıçta, yazılım bağımlılık güncelleştirmelerini otomatikleştirmenize ve güvenli bir tedarik zinciri ortamında kapsayıcı görüntülerinin güvenliğini sağlamanıza yardımcı olacak Dependabot ve Copacetic'i yapılandırmak için gereken adımlara tanıtılacaksınız. Bu araçları kullanarak kapsayıcı görüntülerinizin her zaman güncel ve güvenli olmasını sağlayabilirsiniz.

Bu hızlı başlangıçta şunları yapmayı öğrenirsiniz:

  • Dependabot kullanarak kapsayıcı görüntüsü bağımlılıklarını ve güvenliğini güncelleştirin.
    • Dependabot, kapsayıcı görüntüleri bağımlılıklarınızı güncel tutma sürecini otomatikleştirerek güvenlik açığı riskini azaltır.
  • Copacetic kullanarak kapsayıcı görüntülerini sürekli izleme, tarama ve düzeltme eki uygulama.
    • Copacetic, kapsayıcı görüntülerinizin güvenli olmasını ve bilinen güvenlik açıklarına karşı düzeltme eki uygulamalarını sağlayarak sürekli izleme ve tarama sağlar.

Önkoşullar

Dependabot kullanarak kapsayıcı görüntüsü bağımlılıklarını ve güvenliğini güncelleştirme

Dependabot , yazılım bağımlılıklarını güncel tutma sürecini otomatik hale getiren bir araçtır. Deponuzu güncel olmayan bağımlılıklar için tarayarak ve bunları en son sürüme güncelleştirmek için çekme istekleri oluşturarak çalışır. Bağımlılıklarınıza yönelik güncelleştirmeleri günlük olarak denetler ve bunları güncelleştirmek için çekme istekleri oluşturur. Dependabot'u Docker görüntüleri de dahil olmak üzere tüm bağımlılık türleri için çekme istekleri oluşturacak şekilde yapılandırabilirsiniz. En son güvenlik yamalarını almak ve güvenlik risklerini azaltmak için Dockerfiles, Kubernetes yaml dosyaları ve Helm grafik değerleri yaml dosyalarınızdaki bağımlılıkları otomatik olarak azaltmak için dependabot kullanmanızı öneririz.

Dependabot'ı GitHub ile kullanma

Dependabot tarafından tetiklenen çekme isteklerini etkili bir şekilde yönetme, Dependabot'un performansını geliştirmek için GitHub Actions'ı kullanma ve yaygın Dependabot hatalarını giderme yönergelerini ve önerileri izleyin.

Azure DevOps ile Dependabot kullanma

Azure DevOps ile Dependabot'u yapılandırmak ve kapsayıcı görüntüsü bağımlılıklarınızın en son sürümler ve güvenlik geliştirmeleriyle güncel kalmasını sağlamak için yönergeleri izleyin.

  1. İzin Ver: Adıyla YOUR-PROJECT-NAME Build Service (YOUR-ORGANIZATION-NAME) bir hizmet hesabı oluşturun ve aşağıdaki izinleri verin:
  • Göndermeye Zorla
  • Çekme isteklerine katkıda bulunma
  • Dal oluşturma

* Derleme hizmeti izinlerini bulun.*

ve YOUR-ORGANIZATION-NAME değerlerini projenizin ve kuruluşunuzun gerçek adlarıyla değiştirdiğinden YOUR-PROJECT-NAME emin olun.

  1. Dependabot'ı yapılandırma: Dependabot'ı yapılandırmak için deponuza bir dependabot.yml yapılandırma dosyası ekleyin. Yapılandırma dosyanızın nasıl görünebileceğine bir örnek aşağıda verilmişti:

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

Bu yapılandırma, Docker kullanan bir proje için Dependabot'ı ayarlar ve Docker dosyalarının bulunduğu kök dizinin ("/") olduğunu belirtir ve güncelleştirmeleri işlemek için Dependabot atar. Yapılandırmayı projenizin gereksinimlerine uyacak şekilde özelleştirebilirsiniz.

  1. Azure DevOps İşlem Hattı oluşturma: Azure DevOps İşlem Hattı oluşturmak için deponuza aşağıdaki içeriğe sahip bir azure-pipeline.yml dosya ekleyin:

     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 }
    

  2. İşlem hattını çalıştırın: Yukarıdaki azure-pipelines.yaml dosyadan yeni ADO işlem hattı oluşturun ve doğrulayın.

Dependabot aşağıdakiler gibi çeşitli senaryolarda kapsayıcı görüntüsü bağımlılıklarını güncelleştirebilir:

  • Dockerfile
  • Kubernetes YAML
  • Helm values.yaml

Not

Söz dizimi Dependabot'un yapılandırma dosyalarınızdaki kapsayıcı görüntüsü bağımlılıklarını tanımlamasına ve güncelleştirmesine olanak tanıyarak en son sürümlerle ve güvenlik düzeltme ekleriyle güncel kalmanızı sağlar.

Yapılandırma dosyalarınızda görüntü belirtirken aşağıdaki söz dizimini kullanın:


# 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

Alternatif olarak, için Helm values.yamlalanını kullanarak version görüntü sürümünü belirtebilirsiniz:

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

Copacetic kullanarak kapsayıcı görüntülerini sürekli izleme, tarama ve düzeltme eki uygulama

Copacetic (copa), popüler tarayıcı araçlarından gelen güvenlik açığı tarama sonuçları göz önüne alındığında kapsayıcı görüntülerinde Linux işletim sistemi paketi güvenlik açıklarına doğrudan düzeltme eki ekleyen, Microsoft destekli bir CNCF açık kaynak projesidir. Copacetic, tam yeniden derleme için yukarı akışa geçmeden kapsayıcılara hızla yama uygulamanıza olanak tanır. Bu, kapsayıcı görüntülerinin üretime hızla yeniden dağıtabilmesine yardımcı olur. Copacetic yalnızca Linux işletim sistemi güvenlik açıklarına yöneliktir. Uygulama düzeyinde güvenlik açıkları için, görüntü oluşturulmadan önce düzeltme eklerinin yapılması gerekir.

Copacetic kullanma

  1. Copacetic'in güvenlik açığı tarama sonuçlarını kullanarak kapsayıcı görüntülerine düzeltme eki uygulama yönergelerini sağlayan hızlı başlangıç kılavuzunu izleyin.

  2. Copacetic kullanmaya yönelik örnek bir Azure DevOps işlem hattı yapılandırma dosyası için Örnek ADO İşlem Hattı'nı gözden geçirin. İşlem hattı, Copacetic'i CI/CD iş akışınızla tümleştirerek güvenlik açıkları için kapsayıcı görüntülerinin sürekli izlenmesine, taranmasına ve düzeltme ekine izin verecek şekilde tasarlanmıştır.

  3. Copacetic, Copacetic Action kullanılarak görüntü güvenlik açıklarına düzeltme eki uygulamak için Github Actions iş akışlarıyla da tümleştirilebilir. Bu eylem, ilişkili güvenlik açığı raporlarını kullanarak bir depo için belirlenen görüntü kümesine düzeltme eki uygular.

Sonraki adımlar