
يساعدك kubeaudit في تدقيق مجموعات Kubernetes الخاصة بك مقابل ضوابط الأمان الشائعة.
أصبح الآن مطلوبًا أن تعمل الكتلة على Kubernetes >=1.19.
سيتم إهمال التسميات (labels) المتجاوزة التي تحتوي على تعليقات توضيحية (annotations) غير مسجلة من
kubernetes.io. سيكون من الضروري قريبًا استخدامkubeaudit.ioبدلاً من ذلك. يرجى الرجوع إلى هذه المناقشة لمزيد من السياق.
من المقرر إهمال Kubeaudit بحلول أكتوبر 2024.
نحن نبحث بنشاط عن مطورين مهتمين بتولي مسؤولية هذا المشروع. إذا كنت شغوفًا بمواصلة تطويره وصيانته، فيرجى التواصل معنا.
للمستخدمين الذين يبحثون عن بدائل، نوصي بالانتقال إلى Kubebench، الذي يوفر وظائف مماثلة ويتم صيانته بنشاط.
نشكر المجتمع على مساهماتكم ودعمكم.
kubeaudit هي أداة سطر أوامر وحزمة Go لتدقيق مجموعات Kubernetes لمخاوف أمنية متنوعة، مثل:
باختصار. kubeaudit يضمن لك نشر حاويات آمنة!
لاستخدام kubeaudit كحزمة Go، راجع وثائق الحزمة.
سيركز باقي ملف README هذا على كيفية استخدام kubeaudit كأداة سطر أوامر.
brew install kubeaudit
لدى Kubeaudit إصدارات رسمية مباركة ومستقرة: الإصدارات الرسمية
قد يحتوي الفرع الرئيسي على ميزات أحدث من الإصدارات المستقرة. إذا كنت بحاجة إلى ميزة أحدث غير مدرجة بعد في إصدار، فتأكد من أنك تستخدم أحدث إصدار من Go وقم بتشغيل ما يلي:
go get -v github.com/Shopify/kubeaudit
ابدأ استخدام kubeaudit من خلال البدء السريع أو اعرض جميع الأوامر المدعومة.
المتطلب الأساسي: kubectl v1.12.0 أو أحدث
مع إصدار kubectl v1.12.0 الذي يقدم قابلية الإضافة بسهولة للوظائف الخارجية، يمكن استدعاء kubeaudit كـ kubectl audit عن طريق:
make plugin وجعل $GOPATH/bin متاحًا في مسارك.أو
kubectl-audit وجعله متاحًا في مسارك.لم نعد ننشر الصور إلى Docker Hub (منذ أن أوقفت Docker Hub خطط المؤسسات المجانية). في الوقت الحالي، الصور القديمة لا تزال متاحة ولكن قد تتوقف عن التوفر في أي وقت. سنبدأ في نشر الصور إلى سجل حاويات Github قريبًا.
لتشغيل kubeaudit كوظيفة في مجموعتك، راجع تشغيل kubeaudit في مجموعة.
لدى kubeaudit ثلاثة أوضاع:
إذا تم توفير ملف مانيفست Kubernetes باستخدام العلامة -f/--manifest، سيقوم kubeaudit بتدقيق ملف المانيفست.
مثال الأمر:
kubeaudit all -f "/path/to/manifest.yml"
مثال الإخراج:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- النتائج لـ ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [خطأ] AppArmorAnnotationMissing
الرسالة: التعليق التوضيحي لـ AppArmor مفقود. يجب إضافة التعليق التوضيحي 'container.apparmor.security.beta.kubernetes.io/container'.
البيانات الوصفية:
الحاوية: container
التعليق التوضيحي المفقود: container.apparmor.security.beta.kubernetes.io/container
-- [خطأ] AutomountServiceAccountTokenTrueAndDefaultSA
الرسالة: حساب الخدمة الافتراضي مع الرمز المميز مركب. يجب تعيين automountServiceAccountToken إلى 'false' أو يجب استخدام حساب خدمة غير افتراضي.
-- [خطأ] CapabilityShouldDropAll
الرسالة: لم يتم تعيين القدرة إلى ALL. من الأفضل إسقاط جميع القدرات وإضافة القدرات المحددة التي تحتاجها إلى قائمة الإضافة.
البيانات الوصفية:
الحاوية: container
القدرة: AUDIT_WRITE
...
إذا لم يتم العثور على أي أخطاء ذات خطورة دنيا معينة، يتم إرجاع ما يلي:
تم الانتهاء من جميع الفحوصات. تم العثور على 0 ثغرات عالية الخطورة.
يدعم وضع المانيفست أيضًا الإصلاح التلقائي لجميع المشكلات الأمنية باستخدام الأمر autofix:
kubeaudit autofix -f "/path/to/manifest.yml"
لكتابة المانيفست المُصلَح إلى ملف جديد بدلاً من تعديل الملف المصدر، استخدم العلامة -o/--output.
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
لإصلاح مانيفست بناءً على قواعد مخصصة محددة في ملف تكوين kubeaudit، استخدم العلامة -k/--kconfig.
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
يمكن لـ Kubeaudit اكتشاف ما إذا كان يعمل داخل حاوية في الكتلة. إذا كان الأمر كذلك، فسيحاول تدقيق جميع موارد Kubernetes في تلك الكتلة:
kubeaudit all
سيحاول Kubeaudit الاتصال بكتلة باستخدام ملف kubeconfig المحلي ($HOME/.kube/config). يمكن تحديد موقع kubeconfig مختلف باستخدام العلامة --kubeconfig. لتحديد سياق kubeconfig، استخدم العلامة -c/--context.
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
لمزيد من المعلومات حول ملفات تكوين kubernetes، راجع https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
ينتج Kubeaudit نتائج بثلاث مستويات من الخطورة:
خطأ: مشكلة أمنية أو تكوين Kubernetes غير صحيحتحذير: توصية بأفضل الممارساتمعلومات: إعلامي، لا يتطلب إجراءً. يتضمن ذلك النتائج التي تم تجاوزهايمكن تعيين الحد الأدنى لمستوى الخطورة باستخدام العلامة --minSeverity/-m.
بشكل افتراضي، سيقوم kubeaudit بإخراج النتائج بطريقة قابلة للقراءة البشرية. إذا كان الإخراج مخصصًا لمزيد من المعالجة، يمكن ضبطه لإخراج JSON باستخدام العلامة --format json. لإخراج النتائج كسجلات (الافتراضي السابق) استخدم --format logrus. تتضمن بعض تنسيقات الإخراج ألوانًا لتسهيل قراءة النتائج في الطرفية. لتعطيل الألوان (على سبيل المثال، إذا كنت ترسل الإخراج إلى ملف نصي)، يمكنك استخدام العلامة --no-color.
يمكنك إنشاء تقرير kubeaudit بتنسيق SARIF باستخدام العلامة --format sarif. لكتابة نتائج SARIF إلى ملف، يمكنك إعادة توجيه الإخراج باستخدام >. على سبيل المثال:
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif
إذا كانت هناك نتائج بمستوى خطورة error، فسيخرج kubeaudit برمز خروج 2. يمكن تغيير ذلك باستخدام العلامة --exitcode/-e.
لجميع طرق تخصيص kubeaudit، راجع العلامات العامة.
| الأمر | الوصف | التوثيق |
|---|---|---|
all | تشغيل جميع المدققين المتاحين، أو أولئك المحددين باستخدام تكوين kubeaudit. | docs |
autofix | إصلاح المشكلات الأمنية تلقائيًا. | docs |
version | طباعة إصدار kubeaudit الحالي. |
يمكن أيضًا تشغيل المدققين بشكل فردي.