التحقق من تواقيع صور Docker الخاصة بـWallarm¶
تقوم Wallarm بتوقيع ومشاركة المفتاح العام لصور Docker الخاصة بها، مما يتيح لك التحقق من صحتها والتخفيف من المخاطر مثل الصور المخترقة وهجمات سلسلة التوريد. تقدم هذه المقالة تعليمات للتحقق من تواقيع صور Docker الخاصة بـWallarm.
قائمة الصور الموقعة¶
توقع Wallarm الصور التالية لـDocker:
-
wallarm/node 4.8.0-1 فما فوق: صورة Docker المبنية على NGINX والتي تشتمل على جميع وحدات Wallarm، لتكون بمثابة مكون مستقل لنشر Wallarm
-
جميع صور Docker المستخدمة بواسطة مخطط Helm لـنشر Ingress Controller المبني على NGINX:
-
جميع صور Docker المستخدمة بواسطة مخطط Helm لـنشر Sidecar:
المتطلبات¶
لضمان صحة صور 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:
-
قم بتثبيت Kyverno على عنقودك وتأكد من أن جميع الحاويات تعمل.
-
أنشئ سياسة 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
-
طبق السياسة:
-
قم بنشر إما وحدة تحكم Ingress NGINX أو وحدة التحكم Sidecar الخاصة بـWallarm، حسب متطلباتك. سيتم تطبيق السياسة من Kyverno خلال النشر لفحص توقيع الصورة.
-
قم بتحليل نتائج التحقق بتنفيذ:
ستتلقى ملخصاً يوضح حالة التحقق من التوقيع:
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
. هذا يعني أنه إذا لم ينجح التوثيق بالتوقيع، فإن عملية نشر المخطط بأكملها تفشل.