İçeriğe geç
Subnomic

Registry

Tarama yapan özel bir OCI registry

docker push, tarama çoktan başladı.

Çalışma alanın için özel bir OCI registry. Bir etikete yapılan her push taranır, her bulgu onu düzelten sürümün adını verir, cosign imzaları imza olarak tanınır ve robotlar CI için tam olarak gereken erişimi sağlar.

API
OCI distribution
Tarayıcı
Trivy
İmzalama
cosign · kendi KMS’in
Çok mimarili
evet
~/acme-api
$ docker push registry.subnomic.com/acme/api:1.4.0
1.4.0: digest: sha256:9f3a71c2… size: 3271

Nasıl çalışır

Zaten yazdığın komutlar.

01

Giriş yap

İnsanlar kendi hesaplarıyla giriş yapar. CI, ihtiyaç duyduğu depolarla sınırlı bir robot olarak kendi parolasıyla giriş yapar.

ci
$ echo "$ROBOT_SECRET" |
    docker login registry.subnomic.com \
    -u 'robot$ci-pusher' --password-stdin
Login Succeeded
02

Gönder

Depolar çalışma alanının altında durur ve ilk push’ta özel olarak oluşturulur. Çok mimarili index’ler ve parçalı yüklemeler, Docker ve buildx’in beklediği gibi çalışır.

~/acme-api
$ docker push \
    registry.subnomic.com/acme/api:1.4.0
03

Sonucu oku

Tarama push ile başlar ve onu asla engellemez. Kritik ve yüksek bulgular çalışma alanı sahiplerine e-postayla bildirilir; etiket neyin etkilendiğini ve neyin düzelttiğini gösterir.

Bir depoyla birlikte gelenler

Peşine düşmen gerekmeyen tedarik zinciri durumu.

Her push’ta taranır

Trivy her etiketi geldiği anda tarar ve istediğin zaman yeniden tarayabilirsin. Başarısız olan bir tarama bunu söyler — asla temiz olarak gösterilmez.

Düzeltmesiyle birlikte bulgular

İmaj başına en fazla 200 bulgu, en kötüsü önce; her biri paketiyle, kurulu sürümüyle ve onu düzelten sürümle birlikte.

İstendiğinde SBOM

Herhangi bir etiket için CycloneDX ya da SPDX-JSON malzeme listesi üret; onu bir paket listesi olarak oku ya da indir.

cosign’ı tanır

İki cosign biçiminden herhangi birindeki imza etiketleri imza sayılır: etiket listesinde gizlenir, imzalı olarak gösterilir ve saklama politikasınca asla budanmaz.

Kendi anahtarınla imzala

Anahtarı AWS KMS, GCP KMS, Azure Key Vault ya da HashiCorp Vault’ta tut — ya da durağan hâlde şifrelenen ve asla diske yazılmayan bir anahtar yükle. Döndürülen anahtarlar eski imzaları doğrulamaya devam eder.

Robot hesapları

Tek bir depo ya da tüm çalışma alanı için pull, push ve silme; isteğe bağlı bir son kullanma tarihiyle. Devre dışı bırak, yenile ya da sil; parola bir kez gösterilir.

Saklama kuralları

Bir desenle süzülmüş son N etiketi ya da son N günde push edilen etiketleri tut. Hiçbir şeyin başvurmadığı katmanlar saatte bir toplanır.

Aktarımlar

Başka bir registry’den bir etiketi içe aktar ya da oraya bir etiket dışa aktar. Karşı tarafın kimlik bilgileri o iş için kullanılır ve asla saklanmaz.

Pull istatistikleri

Pull ve push sayıları, kullanılan depolama, günlük pull eğilimi ve en çok pull edilen on depo.

Bulgular

Neyin zafiyetli olduğu ve onu neyin düzelttiği.

Depo listesi önemli sayıları taşır — kritik, yüksek, hiç taranmamış, imzalı ya da değil — böylece ilgi bekleyen imaj, kimse onu açmadan görünür. Ayrıntıyı etiket taşır.

  • Her bulgunun CVE’si, paketi, kurulu sürümü ve düzeltilmiş sürümü vardır; ya da henüz bir düzeltme olmadığını söyler.
  • Kritik ya da yüksek bir sonuç, çalışma alanı sahiplerine uygulamada ve e-postayla bildirilir.
  • İmzalamak bilinçli bir adımdır — çalışma alanı anahtarıyla “Şimdi imzala” — ve kendi pipeline’ın için doğrulama komutları bir kopyalama uzağında.

Uyumluluk

Registry’nin konuştuğu ve henüz yapmadığı şeyler.

Tarama ve imzalama sana bir imaj hakkında bilgi verir; registry’de hiçbir şey bunlar yüzünden bir push’u ya da pull’u reddetmez. İmzaları yayın pipeline’ında ya da admission controller’ında çalışma alanının açık anahtarıyla doğrula.

Desteklenenler

  • OCI imaj manifest’leri ve index’leri, Docker v2 manifest’leri ve manifest listeleri — çok mimarili olanlar dahil
  • Tek parça ve parçalı yüklemeler, çalışma alanı içinde depolar arası mount
  • Etiket ya da digest ile pull, push ve silme; sayfalamalı etiket listesi ve katalog
  • İç içe depo yolları; ilk push’ta oluşturulur ve varsayılan olarak özeldir

Bugün yok

  • —Referrers API — yalnızca digest ile push edilen artifact’ler çöp toplamayla silinir
  • —Değişmez etiketler — bir etiketi yeniden push etmek onu taşır, bu yüzden digest ile deploy et
  • —Anonim pull’lar, pull-through önbellekleme ve sürekli replikasyon
  • —Anahtarsız imzalama ve bir şeffaflık kaydı

Planlar

Ücretsiz dahil her planda.

Her plan

Registry, tarama, SBOM’lar, imzalama ve robotlar ücretli bir eklenti değildir.

Plan sınırı değil

İmajlar planın depolanan baytlarına sayılmaz ve imaj başına bir fiyat yoktur.

Kendi anahtarın

İmzalama, çalışma alanı başına bir anahtar gerektirir — KMS’inde ya da yüklenmiş ve şifrelenmiş olarak.

Sorular

CI’ını taşımadan önce.

CI bir API anahtarıyla giriş yapabilir mi?

Bir robot hesabı kullan: robot$<name> ve parolası. Çalışma alanı API anahtarları yönetim API’sinde çalışır, docker login ile değil. GitHub Actions kurulumu.

Zafiyetli ya da imzasız imajları engeller mi?

Hayır. Tarama ve imza durumu sana bilgi verir; karar senin pipeline’ında kalır ve orada cosign verify ya da bir admission controller bir yayını reddedebilir.

İnsanlar giriş yapmadan pull edebilir mi?

Hayır — her pull bir token gerektirir; yani registry özel imajlar içindir. Gözetimsiz çalışan her şey için yalnızca pull yapabilen bir robot kullan.

Etiketler değişmez mi?

Hayır. Aynı etiketi yeniden push etmek onu yeni imaja taşır; bu yüzden hangi baytların çalıştığı önemliyse digest ile deploy et.

İlk imajını bir dakikada gönder.

Bir çalışma alanı oluştur, giriş yap, push et. Registry ücretsiz plana dahildir.