انتقل إلى المحتوى

التحقق من تواقيع صور Docker الخاصة بـWallarm

تقوم Wallarm بتوقيع ومشاركة المفتاح العام لصور Docker الخاصة بها، مما يتيح لك التحقق من صحتها والتخفيف من المخاطر مثل الصور المخترقة وهجمات سلسلة التوريد. تقدم هذه المقالة تعليمات للتحقق من تواقيع صور Docker الخاصة بـWallarm.

قائمة الصور الموقعة

توقع Wallarm الصور التالية لـDocker:

المتطلبات

لضمان صحة صور Wallarm Docker، يُستخدم Cosign لكل من التوقيع والتحقق.

قبل المضي قدما في التحقق من توقيع صورة Docker، تأكد من تثبيت أداة سطر الأوامر Cosign على جهازك المحلي أو ضمن سلسلة التوصيل الخاصة بك.

تنفيذ التحقق من توقيع صورة Docker

للتحقق من توقيع صورة Docker، نفذ الأوامر التالية مع استبدال قيمة WALLARM_DOCKER_IMAGE بالعلامة المحددة للصورة:

export WALLARM_DOCKER_IMAGE="wallarm/ingress-controller:4.6.2-1"
cosign verify --key https://repo.wallarm.com/cosign.pub $WALLARM_DOCKER_IMAGE

يجب أن تُظهِر النتيجة كائن docker-manifest-digest مع بصمة الصورة، على سبيل المثال:

[{"critical":{"identity":{"docker-reference":"index.docker.com/<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>"}}}}]

استخدام محرك السياسة Kubernetes للتحقق من التواقيع

تتيح محركات مثل Kyverno أو Open Policy Agent (OPA) إمكانية التحقق من تواقيع صور Docker ضمن عنقود Kubernetes الخاص بك. من خلال إنشاء سياسة بقواعد للتحقق، تبدأ Kyverno عملية التحقق من التوقيع بناء على معايير محددة، بما في ذلك المستودعات أو العلامات. يحدث التحقق خلال نشر موارد Kubernetes.

إليك مثال على كيفية استخدام سياسة Kyverno للتحقق من تواقيع صور Wallarm Docker:

  1. قم بتثبيت Kyverno على عنقودك وتأكد من أن جميع الحاويات تعمل.

  2. أنشئ سياسة Kyverno YAML التالية:

    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. طبق السياسة:

    kubectl apply -f <PATH_TO_POLICY_FILE>
    
  4. قم بنشر إما وحدة تحكم Ingress NGINX أو وحدة التحكم Sidecar الخاصة بـWallarm، حسب متطلباتك. سيتم تطبيق السياسة من Kyverno خلال النشر لفحص توقيع الصورة.

  5. قم بتحليل نتائج التحقق بتنفيذ:

    kubectl describe ClusterPolicy verify-wallarm-images
    

ستتلقى ملخصاً يوضح حالة التحقق من التوقيع:

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

سياسة verify-wallarm-images المقدمة لديها المعلمة failurePolicy: Fail. هذا يعني أنه إذا لم ينجح التوثيق بالتوقيع، فإن عملية نشر المخطط بأكملها تفشل.