Verwenden von Kubeaudit für die Auditierung von Kubernetes-Clustern
Mit dem Befehlszeilentool Kubeaudit können Sie Kubernetes-Cluster auf diverse Sicherheitsbedenken überprüfen.
- Fehler: Ein Sicherheitsproblem oder eine ungültige Kubernetes-Konfiguration
- Warnung: Eine Best-Practice-Empfehlung
- Info: Dient der Information, keine Handlung erforderlich. Dabei sind auch Ergebnisse enthalten, die überschrieben wurden.
Weitere Informationen zu allen Kubeaudit-Befehlszeilen- und Verwendungsoptionen finden Sie in der Kubeaudit-Dockumentation, die in der GitHub Shopify/Kubeaudit-Bibliothek verfügbar ist.
Führen Sie Kubeaudit mit dem Code-Block unten aus, um die Datei ./config/controller/deployment.yaml
Ihres vollständigen Kubernetes-Inventarisierungsagenten von Flexera zu untersuchen.
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
krm.flexera.com/component: controller
name: krm-controller
spec:
replicas: 1
selector:
matchLabels:
krm.flexera.com/component: controller
template:
metadata:
labels:
krm.flexera.com/component: controller
annotations:
container.apparmor.security.beta.kubernetes.io/controller: unconfined
spec:
serviceAccountName: controller
containers:
- name: controller
args:
- controller
image: public.ecr.aws/flexera/krm:1.7.2
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
readOnlyRootFilesystem: true
runAsNonRoot: false
securityContext:
seccompProfile:
type: RuntimeDefault
strategy: {}
Warnungen und Fehler
Wenn Sie Kubeaudit mit den folgenden Parametern verwenden, erhalten Sie Fehler und Warnungen, um die Sie sich kümmern können: $ kubeaudit all -f ./config/controller/deployment.yaml
Derzeit gibt es die folgenden Warnungen und Fehler für den vollständigen Kubernetes-Inventarisierungsagenten von Flexera:
[WARNING]: kubernetes.io for override labels will soon be deprecated. Please, update them to use kubeaudit.io instead.
---------------- Results for ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: krm-controller
--------------------------------------------
-- [error] AppArmorDisabled
Message: AppArmor is disabled. Die apparmor-Annotation sollte auf 'runtime/default' gesetzt werden oder mit 'localhost/‘ beginnen.
Metadata:
Annotation: container.apparmor.security.beta.kubernetes.io/controller
AnnotationValue: unconfined
Container: controller
-- [error] RunAsNonRootCSCFalse
Message: runAsNonRoot is set to false in the container SecurityContext. Setzen Sie dies entweder auf „true“ oder setzen Sie runAsUser auf einen Wert > 0.
Metadata:
Container: controller
spec.template.spec.containers.securityContext.runAsNonRoot: false
ist für den Betrieb des vollständigen Kubernetes-Inventarisierungsagenten von Flexera erforderlich, daher wird der Fehler RunAsNonRootCSCFalse
erwartet.- Das
ndtrack
-Modul ist nicht in der Lage, Hardware-Inventar von Worker-Knoten korrekt zu erfassen. - Andere Standardprozesse des Agenten erwarten Root-Berechtigungen und arbeiten u. U. nicht korrekt.
ndtrack.sh
kann bei der Injektion in die Container nicht als Root ausgeführt werden und arbeitet möglicherweise nicht korrekt.
spec.template.metadata.annotations.container.apparmor.security.beta.kubernetes.io/controller: unconfined
ist standardmäßig erforderlich, kann jedoch je nach den Sicherheitseinstellungen des Clusters möglicherweise geändert werden, siehe Restrict a Container's Access to Resources with AppArmor (Den Zugriff eines Containers auf Ressourcen mit AppArmor einschränken) in der Online-Dokumentation von Kubernetes.IT Asset Management (Cloud)
Current