Ana içeriğe geç

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:

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:

  1. Kümenize Kyverno’yu yükleyin ve tüm pod’ların çalışır durumda olduğundan emin olun.

  2. 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
    
  3. Policy’yi uygulayın:

    kubectl apply -f <PATH_TO_POLICY_FILE>
    
  4. 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.

  5. Doğrulama sonuçlarını analiz etmek için şunu çalıştırın:

    kubectl describe ClusterPolicy verify-wallarm-images
    

İ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.