Ansichten:
Profilanwendbarkeit: Stufe 1
Die Kubernetes-API speichert Geheimnisse, bei denen es sich um Service-Account-Tokens für die Kubernetes-API oder um Anmeldeinformationen handelt, die von Workloads im Cluster verwendet werden. Der Zugriff auf diese Geheimnisse sollte auf die kleinstmögliche Gruppe von Benutzern beschränkt werden, um das Risiko einer Rechteausweitung zu verringern.
Unangemessener Zugriff auf Geheimnisse, die im Kubernetes-Cluster gespeichert sind, kann einem Angreifer zusätzlichen Zugriff auf den Kubernetes-Cluster oder externe Ressourcen ermöglichen, deren Anmeldedaten als Geheimnisse gespeichert sind.

Auswirkung

Es sollte darauf geachtet werden, den Zugriff auf Geheimnisse für Systemkomponenten, die diesen für ihren Betrieb benötigen, nicht zu entfernen

Prüfung

Überprüfen Sie die Benutzer, die Lese-, Listen- oder Beobachtungszugriff auf Geheimnisobjekte in der Kubernetes-API haben.
Unten finden Sie einen Befehl, der anzeigt, welche Objekte die Berechtigungen "get", "list" oder "watch" für jede übereinstimmende Rolle haben, einschließlich Rollen, die über Platzhalter wie Ressourcen: ["","secrets/"] oder Verben: ["*"] Zugriff gewähren
kubectl get clusterrole,role -A -o json | jq -r ' def wanted: ["get","list","watch"]; .items[] as $r | [ $r.rules[]? | select( ((.apiGroups? // [""]) | any(.=="" or .=="*")) and ((.resources? // []) | any(.=="secrets" or .=="secrets/*" or .=="*")) and ((.verbs? // []) | any(.=="*" or .=="get" or .=="list" or .=="watch")) ) | if ((.verbs? // []) | any(.=="*")) then wanted[] else (.verbs[]? | select(IN("get","list","watch"))) end ] as $verbs | select($verbs | length > 0) | "\($r.kind): \($r.metadata.name) (namespace: \($r.metadata.namespace // "cluster-wide")) | verbs: \($verbs | unique | join(","))" '
Beispielausgabe:
ClusterRole: admin (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: cluster-admin (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: edit (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:aggregate-to-edit (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:cloud-controller-manager (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:controller:generic-garbage-collector (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:controller:namespace-controller (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:controller:resourcequota-controller (namespace: cluster-wide) | verbs: list,watch
ClusterRole: system:gcp-controller-manager (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:gke-common-webhooks (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:glbc-status (namespace: cluster-wide) | verbs: get
ClusterRole: system:kube-controller-manager (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:kubestore-collector (namespace: cluster-wide) | verbs: get,list,watch
ClusterRole: system:node (namespace: cluster-wide) | verbs: get,list,watch
Role: operator (namespace: gmp-public) | verbs: get,list,watch
Role: operator (namespace: gmp-system) | verbs: get,list,watch
Role: system:controller:bootstrap-signer (namespace: kube-system) | verbs: get,list,watch
Role: system:controller:token-cleaner (namespace: kube-system) | verbs: get,list,watch

Wiederherstellung

Wo möglich, entfernen Sie die Zugriffsrechte zum Abrufen, Auflisten oder Beobachten von geheimen Objekten im Cluster.

Standardwert

CLUSTERROLEBINDING                                    SUBJECT
TYPE                      SA-NAMESPACE
cluster-admin                                                  system:masters
Group
system:controller:clusterrole-aggregation-controller           clusterroleaggregation-
controller ServiceAccount kube-system
system:controller:expand-controller                            expand-controller
ServiceAccount kube-system
system:controller:generic-garbage-collector                    generic-garbagecollector
ServiceAccount kube-system
system:controller:namespace-controller                         namespace-controller
ServiceAccount kube-system
system:controller:persistent-volume-binder                     persistent-volumebinder
ServiceAccount kube-system
system:kube-controller-manager                                 system:kube-controllermanager 
    User