Aracılığıyla paylaş


Azure Container Registry'de sürekli güncellemeyi yapılandırma

Bu makalede, sürekli yamalama işlemini yüklemeyi, etkinleştirmeyi ve yapılandırmayı öğreneceksiniz. Container kayıt defteri için etkinleştirildiğinde sürekli düzeltme eki uygulaması, kapsayıcı görüntüleri için işletim sistemi (işletim sistemi) düzeyindeki güvenlik açıklarını otomatik olarak tespit eder ve düzeltir.

Önkoşullar

  • Azure Cloud Shell'i veya Azure CLI'nın en düşük 2.15.0 veya sonraki bir sürümüne sahip yerel yüklemesini kullanabilirsiniz.
  • Azure Container Registry (ACR) ile mevcut bir Kaynak Grubunuz var.
  • ACR Görevleri etkinleştirilmiş bir Azure Container Registry'niz var (ACR Görevleri, ACR'nin ücretsiz katmanında desteklenmez).

Sürekli Yama İş Akışını Kurma

CLI uzantısını yüklemek için aşağıdaki komutu çalıştırın:

    az extension add -n acrcssc

Sürekli Yama İş Akışını Etkinleştirme

  1. Az login ile Azure CLI'da oturum açın.
az login
  1. ACR'de oturum açın.
az acr login -n <myRegistry>
  1. Sürekli Yama JSON'unu içeren continuouspatching.json adlı bir dosya oluşturmak için aşağıdaki komutu çalıştırın. JSON dosya adı esnektir.
cat <<EOF > continuouspatching.json
{
    "version": "v1",
    "tag-convention" : "<incremental|floating>",
    "repositories": [{
        "repository": "<Repository Name>",
        "tags": ["<comma-separated-tags>"],   
        "enabled": <true|false>
    }] 
}
EOF

Şema belirli depoları ve etiketleri bir dizi biçiminde alır. Her değişken burada tanımlanır:

  • version , ACR ekibinin hangi şema sürümünde olduğunuzu izlemesine izin verir. Yönerge belirtilmediği sürece bu değişkeni değiştirmeyin.

  • tag-convention isteğe bağlı bir alandır. İzin verilen değerler "artan" veya "kayan" olarak belirlenmiştir. Daha fazla bilgi için Sürekli Yama Uygulamasının Temel Kavramları bölümüne bakın.

  • repositories ayrıntılı depo ve etiket bilgilerini içeren bir dizidir

    • repository depo adını ifade eder
    • tags virgülle ayrılmış bir etiket dizisidir. Joker karakter * , bu depodaki tüm etiketlerin belirtilmesi için kullanılabilir.
    • enabled , belirtilen deponun etkin olup olmadığını belirleyen true veya false Boole değeridir.

Aşağıda, python deposundaki tüm etiketlere (* simgesini kullanarak) ve jammy-20240111 deposundaki özel olarak jammy-20240125 ve ubuntu etiketlerine yama uygulamak isteyen bir müşteri için örnek yapılandırmanın ayrıntıları verilmiştir.

JSON örneği:

{
"version": "v1",
"tag-convention" : "incremental",
"repositories": [{
        "repository": "python",
        "tags": ["*"],
        "enabled": true
    },
    {
        "repository": "ubuntu",
        "tags": ["jammy-20240111", "jammy-20240125"],
        "enabled": true, 
    }]
}
  1. Yapılandırma dosyanızı oluşturduktan sonra, hedeflenen yapıtların JSON ölçütleri tarafından seçildiğini doğrulamak için bir kuru çalıştırma yürütmeniz önerilir. Kuru çalıştırma, sürekli düzeltme eki uygulama döngünüzün ne sıklıkta çalıştığını belirten schedule adlı bir parametre gerektirir. Programlama bayrağı gün cinsinden ölçülür, en az bir gün ve en fazla 30 gün olmak üzere. Örneğin, bir görüntüye her gün düzeltme eki uygulamak istiyorsanız, zamanlamayı 1d olarak, veya 1 gün olarak belirtirsiniz. Haftalık düzeltme eki (haftada bir) istiyorsanız, zamanlamayı 7d veya 7 gün olarak doldurursunuz.

Komut Şeması:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilepath> --schedule <number of days> --dry-run 

Örnek Komut:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --dry-run   

--dry-run bayrağı, JSON dosyası yapılandırmasına göre belirtilen tüm yapıtları çıkarır. Müşteriler doğru yapıtların seçildiğini doğrulayabilir. Örnek ubuntu yapılandırmasıyla aşağıdaki sonuçlar çıktı olarak görüntülenmelidir.

Ubuntu: jammy-20240111
Ubuntu: jammy-20240125

Tüm gerekli/isteğe bağlı bayrakları görmek için yardım komutu:

az acr supply-chain workflow create --help
  1. Kuru çalıştırma sonuçlarından memnun kaldıktan sonra, sürekli düzeltme eki uygulama iş akışınızı resmi olarak oluşturmak için create komutunu --dry-run bayrağı olmadan yeniden çalıştırın.

Uyarı

parametresi, --schedule ayın 1. gününden başlayarak sabit gün çarpanını izler. Bu, şu anlama gelir:

  • Eğer --schedule 7d belirler ve komutu 3. günde çalıştırırsanız, ayın 1'inden itibaren 3. gün sonrasındaki ilk 7 günlük süreyi sayarak, sonraki zamanlanmış çalıştırma ayın 7'sinde olur—çünkü 7, 3'ten sonra gelen ilk 7'nin katıdır.
  • --schedule 3d ise ve bugün ayın 7'siyse, sonraki zamanlanmış çalıştırma ayın 9'unda gerçekleşir; çünkü 9, 7'den sonraki 3'ün katıdır.
  • Bayrak --run-immediately eklediğinizde, bir yama çalışmasının hemen tetiklenmesini sağlarsınız. Sonraki planlanmış çalıştırma, --schedule değeriniz temelinde, ayın birinci gününden itibaren en yakın gün katıyla hizalanmaya devam edecektir.
  • Zamanlama sayacı her ay sıfırlanır . Belirlenen zamanlamaya bakılmaksızın, iş akışınız her ayın ilkinde çalıştırılır, ardından ayın geri kalanı için belirtilen zamanlama değerini izler. Düzeltme eki uygulamam 28 Ocak'ta çalıştırılırsa ve zamanlamam 7 gün ise, sonraki düzeltme ekim Şubat ayının birinde, ardından sekizinde çalışır ve her 7 günde bir devam eder.

Komut Şeması:

az acr supply-chain workflow create -r <registryname> -g <resourcegroupname> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days> --run-immediately

Örnek Komut:

az acr supply-chain workflow create -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d --run-immediately

Başarılı bir komutta (dahil edip etmediğinize bakılmaksızın --run-immediately) şunları görmeniz beklenir:

  • İş akışı görevlerinizin kuyruğa alındığını onaylayan bir başarı iletisi.

  • Yeniden düzeltme eki uygulama işleminin tam olarak ne zaman gerçekleşeceğini izleyebilmeniz için iş akışınızın bir sonraki çalıştırma zamanının planlandığını gösteren bir çıkış parametresi.

Tüm gerekli/isteğe bağlı bayraklar için Yardım komutu.

az acr supply-chain workflow create --help

İş akışı görevlerini görüntülemek için Azure portalını kullanma

  1. İş akışı başarılı olduktan sonra Çalışan görevlerinizi görüntülemek için Azure portalına gidin. Hizmetler -> Depolar'ı seçtiğinizde adlı csscpolicies/patchpolicyyeni bir depo görmeniz gerekir. Bu depo, devamlı yama uygulaması için sürekli kullanılan JSON yapılandırma nesnesini barındırıyor.

Sürekli yamalama için yapılandırma nesnesini barındıran depoyu gösteren ekran görüntüsü.

  1. Ardından, "Hizmetler" altındaki "Görevler" seçeneğini belirleyin. Üç yeni görev görmeniz gerekir:

Sürekli güncelleme için oluşturulan görevleri gösteren ekran görüntüsü.

Görev:

  • cssc-trigger-workflow - Bu görev yapılandırma dosyasını tarar ve ilgili her görüntüde tarama görevini çağırır.
  • cssc-scan-image - Bu görev, görüntüyü işletim sistemi güvenlik açıklarına karşı tarar. Bu görev yalnızca işletim sistemi güvenlik açıkları bulunduğunda düzeltme eki uygulama görevini tetikler.
  • cssc-patch-image - Bu işlem görüntüyü yamalar. Bu görevler, sürekli yama uygulama iş akışınızı yürütmek için birlikte çalışır.
  1. Belirli görev çalıştırmalarını görmek için "Görevler" görünümünde "Çalıştırmalar" seçeneğini de belirleyebilirsiniz. Burada, hata ayıklama günlüğünü görüntülemenin yanı sıra görevin başarılı mı yoksa başarısız mı olduğuna ilişkin durum bilgilerini görüntüleyebilirsiniz.

Sürekli yamalama için çalışan görevleri gösteren ekran görüntüsü.

İş akışı görevlerini görüntülemek için CLI kullanma

Ayrıca, her görev ve genel iş akışı hakkında daha fazla ayrıntı görmek için aşağıdaki CLI show komutunu da çalıştırabilirsiniz. Komutun çıktısı:

  • Takvim
  • Oluşturma tarihi
  • Son değiştirme tarihi, kim tarafından vb. gibi sistem verileri.

Komut Şeması:

az acr supply-chain workflow show -r <registry> -g <resourceGroup> -t continuouspatchv1   

Örnek Komut:

az acr supply-chain workflow show -r myRegistry -g myResourceGroup -t continuouspatchv1 

Tüm gerekli/isteğe bağlı bayraklar için Yardım komutu:

az acr supply-chain workflow show --help

Sürekli Yamama İş Akışını Güncelleme

Sürekli yamalama iş akışınızda düzenlemeler yapmak istediğiniz senaryolarda, güncelleme komutu bunu yapmanın en kolay yöntemidir. Zamanlamanızı veya JSON yapılandırma şemanızı doğrudan CLI'yi güncelleştir komutuyla güncelleştirebilirsiniz.

Komut Şeması:

az acr supply-chain workflow update -r <registry> -g <resourceGroup> -t continuouspatchv1 --config <JSONfilename> --schedule <number of days>

Örnek Komut:

az acr supply-chain workflow update -r myRegistry -g myResourceGroup -t continuouspatchv1 --config ./continuouspatching.json --schedule 1d

Tüm gerekli/isteğe bağlı bayraklar için Yardım komutu:

az acr supply-chain workflow update --help

Zamanlamanızı güncelleştirmek için, önceki komutu zamanlama için yeni bir girişle çalıştırın. JSON yapılandırmanızı güncelleştirmek için dosyada değişiklik yapmanızı, bir kuru çalıştırma çalıştırmasını ve ardından güncelleştirme komutunu çalıştırmanızı öneririz.

Sürekli Yama İş Akışını Silme

Sürekli düzeltme iş akışını silmek için lütfen aşağıdaki CLI komutunu çalıştırın.

Komut Şeması:

az acr supply-chain workflow delete -r <registry> -g <resourceGroup> -t continuouspatchv1 

Örnek Komut:

az acr supply-chain workflow delete -r myregistry -g myresourcegroup -t continuouspatchv1

Tüm gerekli/isteğe bağlı bayraklar için Yardım komutu:

az acr supply-chain workflow delete --help

Bir iş akışı başarıyla silindikten sonra "csscpolicies/patchpolicy" deposu otomatik olarak silinir. İş akışınızı çalıştıran üç görev ve şu anda kuyruğa alınmış olan çalıştırmalar da silinir.