
kubeaudit आपके Kubernetes क्लस्टरों को सामान्य सुरक्षा नियंत्रणों के विरुद्ध ऑडिट करने में आपकी सहायता करता है।
अब क्लस्टरों के लिए Kubernetes >=1.19 चलाना आवश्यक है।
अनपंजीकृत
kubernetes.ioएनोटेशन वाले ओवरराइड लेबल को हटा दिया जाएगा। जल्द ही इसके बजायkubeaudit.ioका उपयोग करना आवश्यक हो जाएगा। अतिरिक्त संदर्भ के लिए इस चर्चा को देखें।
Kubeaudit को अक्टूबर 2024 तक हटाने की योजना है।
हम सक्रिय रूप से ऐसे रखरखावकर्ताओं की तलाश कर रहे हैं जो इस परियोजना की देखरेख लेने में रुचि रखते हैं। यदि आप इसके विकास और रखरखाव को जारी रखने के लिए उत्सुक हैं, तो कृपया हमसे संपर्क करें।
विकल्पों की तलाश करने वाले उपयोगकर्ताओं के लिए, हम Kubebench पर स्विच करने की सलाह देते हैं, जो समान कार्यक्षमता प्रदान करता है और सक्रिय रूप से बनाए रखा जाता है।
समुदाय के योगदान और समर्थन के लिए धन्यवाद।
kubeaudit एक कमांड लाइन टूल और Go पैकेज है जो Kubernetes क्लस्टरों का विभिन्न सुरक्षा संबंधी चिंताओं के लिए ऑडिट करता है, जैसे:
tldr. 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 के तीन मोड हैं:
यदि -f/--manifest फ्लैग का उपयोग करके कोई Kubernetes मेनिफेस्ट फ़ाइल प्रदान की जाती है, तो kubeaudit मेनिफेस्ट फ़ाइल का ऑडिट करेगा।
उदाहरण कमांड:
kubeaudit all -f "/path/to/manifest.yml"
उदाहरण आउटपुट:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Results for ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Message: AppArmor annotation missing. The annotation 'container.apparmor.security.beta.kubernetes.io/container' should be added.
Metadata:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Message: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
-- [error] CapabilityShouldDropAll
Message: Capability not set to ALL. Ideally, you should drop ALL capabilities and add the specific ones you need to the add list.
Metadata:
Container: container
Capability: AUDIT_WRITE
...
यदि किसी न्यूनतम गंभीरता के साथ कोई त्रुटि नहीं मिलती है, तो निम्नलिखित लौटाया जाता है:
All checks completed. 0 high-risk vulnerabilities found
मेनिफेस्ट मोड 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 तीन गंभीरता स्तरों के साथ परिणाम उत्पन्न करता है:
Error: एक सुरक्षा समस्या या अमान्य kubernetes कॉन्फ़िगरेशनWarning: एक सर्वोत्तम अभ्यास अनुशंसाInfo: सूचनात्मक, कोई कार्रवाई आवश्यक नहीं। इसमें वे परिणाम शामिल हैं जो ओवरराइड किए गए हैं।न्यूनतम गंभीरता स्तर --minSeverity/-m फ्लैग का उपयोग करके सेट किया जा सकता है।
डिफ़ॉल्ट रूप से kubeaudit मानव-पठनीय तरीके से परिणाम आउटपुट करेगा। यदि आउटपुट को आगे संसाधित किया जाना है, तो इसे --format json फ्लैग का उपयोग करके JSON पर सेट किया जा सकता है। परिणामों को लॉग के रूप में आउटपुट करने के लिए (पिछला डिफ़ॉल्ट) --format logrus का उपयोग करें। कुछ आउटपुट प्रारूपों में टर्मिनल में परिणामों को पढ़ने में आसान बनाने के लिए रंग शामिल होते हैं। रंगों को अक्षम करने के लिए (उदाहरण के लिए, यदि आप आउटपुट को टेक्स्ट फ़ाइल में भेज रहे हैं), तो आप --no-color फ्लैग का उपयोग कर सकते हैं।
आप --format sarif फ्लैग का उपयोग करके kubeaudit रिपोर्ट को SARIF में उत्पन्न कर सकते हैं। SARIF परिणामों को फ़ाइल में लिखने के लिए, आप > के साथ आउटपुट को रीडायरेक्ट कर सकते हैं। उदाहरण के लिए:
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif
यदि गंभीरता स्तर error के परिणाम हैं, तो kubeaudit निकास कोड 2 के साथ बाहर निकलेगा। इसे --exitcode/-e फ्लैग का उपयोग करके बदला जा सकता है।
kubeaudit को अनुकूलित करने के सभी तरीकों के लिए, ग्लोबल फ्लैग देखें।