Wallarm Docker İmaj İmzalarını Doğrulama¶
Wallarm, Docker imajları için genel anahtarı imzalar ve paylaşır; bu sayede imajların özgünlüğünü doğrulayabilir ve ele geçirilmiş imajlar ile tedarik zinciri saldırıları gibi riskleri azaltabilirsiniz. Bu makale, Wallarm Docker imaj imzalarının doğrulanmasına yönelik talimatları sağlar.
İmzalanan imajların listesi¶
Wallarm aşağıdaki Docker imajlarını imzalar:
-
wallarm/node 4.8.0-1 ve üzeri: tüm Wallarm modüllerini içeren, Wallarm dağıtımı için bağımsız bir artefakt görevi gören NGINX tabanlı Docker imajı
-
NGINX-based Ingress Controller deployment için Helm chart tarafından kullanılan tüm Docker imajları:
-
Sidecar deployment için Helm chart tarafından kullanılan tüm Docker imajları:
-
wallarm/node-native-aio: Wallarm bağlayıcıları için self-hosted Native Node dağıtımı için Docker imajı
Gereksinimler¶
Wallarm Docker imajlarının özgünlüğünü sağlamak için, hem imzalama hem de doğrulama amacıyla Cosign kullanılır.
Docker imaj imzası doğrulamasına geçmeden önce, Cosign komut satırı aracını yerel makinenize veya CI/CD hattınıza kurduğunuzdan emin olun.
Docker imajı imza doğrulamasını çalıştırma¶
Bir Docker imajı imzasını doğrulamak için, aşağıdaki komutları çalıştırın ve WALLARM_DOCKER_IMAGE
değerini ilgili imaj etiketiyle değiştirin:
export WALLARM_DOCKER_IMAGE="wallarm/ingress-controller:4.6.2-1"
cosign verify --key https://repo.wallarm.com/cosign.pub $WALLARM_DOCKER_IMAGE
Çıktı örneğin imaj özetiyle docker-manifest-digest
nesnesini sağlamalıdır:
[{"critical":{"identity":{"docker-reference":"index.docker.io/<WALLARM_DOCKER_IMAGE>"},
"image":{"docker-manifest-digest":"<HASH_ALGORITHM>"},"type":"cosign container image signature"},
"optional":{"Bundle":{"SignedEntryTimestamp":"<VALUE>","Payload":{"body":"<VALUE>",
"integratedTime":<VALUE>,"logIndex":<VALUE>,"logID":"<VALUE>"}}}}]
İmza doğrulaması için Kubernetes policy motorunu kullanma¶
Kyverno veya Open Policy Agent (OPA) gibi motorlar, Kubernetes kümeniz içinde Docker imajı imza doğrulamasına olanak tanır. Doğrulamaya yönelik kuralları olan bir policy hazırlayarak, Kyverno depo veya etiketler dahil tanımlanan ölçütlere göre imaj imza doğrulamasını başlatır. Doğrulama, Kubernetes kaynağı dağıtımı sırasında gerçekleşir.
Wallarm Docker imajı imza doğrulaması için Kyverno policy kullanımına bir örnek:
-
Kümenize Kyverno’yu yükleyin ve tüm pod’ların çalışır durumda olduğundan emin olun.
-
Aşağıdaki Kyverno YAML policy’sini oluşturun:
apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: verify-wallarm-images spec: webhookTimeoutSeconds: 30 validationFailureAction: Enforce background: false failurePolicy: Fail rules: - name: verify-wallarm-images match: any: - resources: kinds: - Pod verifyImages: - imageReferences: - docker.io/wallarm/ingress* - docker.io/wallarm/sidecar* attestors: - entries: - keys: kms: https://repo.wallarm.com/cosign.pub
-
Policy’yi uygulayın:
-
Gereksinimlerinize bağlı olarak Wallarm NGINX Ingress controller veya Sidecar Controller’ı dağıtın. Kyverno policy’si, imajın imzasını kontrol etmek için dağıtım sırasında uygulanacaktır.
-
Doğrulama sonuçlarını analiz etmek için şunu çalıştırın:
İmza doğrulama durumunu özetleyen bir çıktı alacaksınız:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal PolicyApplied 50s (x2 over 50s) kyverno-admission Deployment wallarm-sidecar/wallarm-sidecar-wallarm-sidecar-controller: pass
Normal PolicyApplied 48s kyverno-admission Pod wallarm-sidecar/wallarm-sidecar-wallarm-sidecar-controller-9dcfddfc7-hjbhd: pass
Normal PolicyApplied 40s (x2 over 40s) kyverno-admission Deployment wallarm-sidecar/wallarm-sidecar-wallarm-sidecar-postanalytics: pass
Normal PolicyApplied 35s kyverno-admission Pod wallarm-sidecar/wallarm-sidecar-wallarm-sidecar-postanalytics-554789546f-9cc8j: pass
Sağlanan verify-wallarm-images
policy’sinde failurePolicy: Fail
parametresi bulunur. Bu, imza kimlik doğrulaması başarılı olmazsa tüm chart dağıtımının başarısız olacağı anlamına gelir.