Standard-Pod-Sicherheitsstandards
Dieses Dokument beschreibt, wie RKE2 PodSecurityStandards und NetworkPolicies konfiguriert, um standardmäßig sicher zu sein und gleichzeitig den Betreibern maximale Konfigurationsflexibilität zu bieten.
|
Versionssperre
Dieses Dokument gilt für RKE2 v1.25 und neuer. Bitte beziehen Sie sich auf die Dokumentation zu Pod-Sicherheitsrichtlinien für die Standardrichtlinieninformationen für RKE2 v1.24 und älter. |
Pod-Sicherheitsstandards
Ab Kubernetes-Version v1.25.0 werden Pod-Sicherheitsrichtlinien (PSP) vollständig aus Kubernetes entfernt und durch Pod-Sicherheitszulassung (PSA) ersetzt. Eine Standardkonfigurationsdatei für die Pod-Sicherheitszulassung wird beim Start des Clusters wie folgt hinzugefügt:
Wenn mit der profile: cis oder profile: cis-1.23 Konfiguration ausgeführt wird:
-
RKE2 wird einen eingeschränkten Pod-Sicherheitsstandard über eine Konfigurationsdatei anwenden, die den
restrictedModus im gesamten Cluster durchsetzt, mit Ausnahme derkube-system,cis-operator-systemundtigera-operatorNamespaces, um den erfolgreichen Betrieb von System-Pods sicherzustellen.
Wenn ohne eine profile Konfiguration ausgeführt wird:
-
RKE2 wird einen uneingeschränkten Pod-Sicherheitsstandard über eine Konfigurationsdatei anwenden, die den
privilegedModus im gesamten Cluster durchsetzt, der einen völlig uneingeschränkten Modus für alle Pods im Cluster erlaubt.
RKE2 wird diese Konfigurationsdatei unter /etc/rancher/rke2/rke2-pss.yaml ablegen. Der Inhalt der Konfigurationsdatei variiert je nach dem CIS-Modus, mit dem Sie RKE2 gestartet haben:
-
CIS-Modus
apiVersion: apiserver.config.k8s.io/v1 kind: AdmissionConfiguration plugins: - name: PodSecurity configuration: apiVersion: pod-security.admission.config.k8s.io/v1beta1 kind: PodSecurityConfiguration defaults: enforce: "restricted" enforce-version: "latest" audit: "restricted" audit-version: "latest" warn: "restricted" warn-version: "latest" exemptions: usernames: [] runtimeClasses: [] namespaces: [kube-system, cis-operator-system, tigera-operator] -
Nicht-CIS-Modus
apiVersion: apiserver.config.k8s.io/v1 kind: AdmissionConfiguration plugins: - name: PodSecurity configuration: apiVersion: pod-security.admission.config.k8s.io/v1beta1 kind: PodSecurityConfiguration defaults: enforce: "privileged" enforce-version: "latest" exemptions: usernames: [] runtimeClasses: [] namespaces: []
Nach dem Platzieren dieser Konfigurationsdatei wird RKE2 den kube-apiserver mit dem folgenden Flag --admission-control-config-file starten, das auf den Pfad der PSA-Konfigurationsdatei gesetzt wird.
Wenn Sie die Standardkonfigurationsdatei für den Pod-Sicherheitsstandard überschreiben möchten, können Sie pod-security-admission-config-file: <path-to-custom-psa-config-file> in die RKE2-Konfigurationsdatei übergeben.
Netzwerkrichtlinien
Wenn RKE2 mit dem profile: cis-1.23 Parameter ausgeführt wird, werden 2 Netzwerkrichtlinien auf die kube-system, kube-public und default Namespaces angewendet und die zugehörigen Annotationen hinzugefügt. Die gleiche Logik gilt für diese Richtlinien und Annotationen wie für die PSPs. Beim Start werden die Annotationen für jeden Namespace auf ihre Existenz überprüft, und wenn sie existieren, unternimmt RKE2 keine Maßnahmen. Wenn die Annotation nicht existiert, überprüft RKE2, ob die Richtlinie existiert, und wenn ja, wird sie neu erstellt.
Die erste angewandte Richtlinie besteht darin, den Netzwerkverkehr nur auf den Namespace selbst zu beschränken. Siehe unten.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
managedFields:
- apiVersion: networking.k8s.io/v1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:ingress: {}
f:policyTypes: {}
name: default-network-policy
namespace: default
spec:
ingress:
- from:
- podSelector: {}
podSelector: {}
policyTypes:
- Ingress
Die zweite angewandte Richtlinie gilt für den kube-system Namespace und erlaubt DNS-Verkehr. Siehe unten.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
managedFields:
- apiVersion: networking.k8s.io/v1
fieldsV1:
f:spec:
f:ingress: {}
f:podSelector:
f:matchLabels:
f:policyTypes: {}
name: default-network-dns-policy
namespace: kube-system
spec:
ingress:
- ports:
- port: 53
protocol: TCP
- port: 53
protocol: UDP
podSelector:
matchLabels:
policyTypes:
- Ingress
RKE2 wendet die default-network-policy Richtlinie und die np.rke2.io Annotation auf alle integrierten Namespaces an. Der kube-system Namespace erhält zusätzlich die default-network-dns-policy Richtlinie und die np.rke2.io/dns Annotation, die auf ihn angewendet werden.
Um die derzeit auf Ihrem System bereitgestellten Netzwerkrichtlinien anzuzeigen, führen Sie den folgenden Befehl aus:
kubectl get networkpolicies -A