Kubernetes-benchmark för Center for Internet Security (CIS)
Som en säker tjänst uppfyller Azure Kubernetes Service (AKS) SOC-, ISO-, PCI DSS- och HIPAA-standarder. Den här artikeln beskriver säkerhetshärdningen som tillämpas på AKS baserat på CIS Kubernetes-riktmärket. Mer information om AKS-säkerhet finns i Säkerhetsbegrepp för program och kluster i Azure Kubernetes Service (AKS). Mer information om CIS-benchmark finns i Cis-riktmärken (Center for Internet Security).
Kubernetes CIS-benchmark
Följande är resultaten från CIS Kubernetes V1.24 Benchmark v1.0.0-rekommendationer för AKS. Dessa gäller för AKS 1.21.x via AKS 1.24.x.
Poängsatta rekommendationer påverkar benchmark-poängen om de inte tillämpas, medan not scored-rekommendationer inte gör det.
CIS-riktmärken ger två nivåer av säkerhetsinställningar:
- L1, eller nivå 1, rekommenderar grundläggande grundläggande säkerhetskrav som kan konfigureras i alla system och som bör orsaka lite eller inga avbrott i tjänsten eller nedsatt funktionalitet.
- L2, eller nivå 2, rekommenderar säkerhetsinställningar för miljöer som kräver större säkerhet som kan resultera i vissa begränsade funktioner.
Rekommendationer kan ha någon av följande statusar:
- Pass – rekommendationen har tillämpats.
- Misslyckas – rekommendationen har inte tillämpats.
- N/A – rekommendationen gäller behörighetskrav för manifestfiler som inte är relevanta för AKS. Kubernetes-kluster använder som standard en manifestmodell för att distribuera kontrollplanets poddar, som förlitar sig på filer från den virtuella nodddatorn. CIS Kubernetes-benchmark rekommenderar att dessa filer måste ha vissa behörighetskrav. AKS-kluster använder ett Helm-diagram för att distribuera kontrollplanspoddar och förlitar sig inte på filer på den virtuella noddatorn.
- Beror på miljö – rekommendationen tillämpas i användarens specifika miljö och styrs inte av AKS. Poängsatta rekommendationer påverkar prestandapoängen oavsett om rekommendationen gäller för användarens specifika miljö eller inte.
- Motsvarande kontroll – rekommendationen har implementerats på ett annat, likvärdigt sätt.
CIS-ID | Rekommendationsbeskrivning | Bedömningstyp | Nivå | Status |
---|---|---|---|---|
1 | Kontrollplanskomponenter | |||
1.1 | Konfigurationsfiler för kontrollplanets nod | |||
1.1.1 | Kontrollera att filbehörigheterna för API-serverpoddens specifikation är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.2 | Kontrollera att filägarskapet för API-serverpoddens specifikation är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.3 | Kontrollera att filbehörigheterna för kontrollanthanterarens poddspecifikation är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.4 | Kontrollera att ägarskapet för specifikationsfilen för kontrollanthanterarens podd har angetts till root:root | Gjorde | L1 | Ej tillämpligt |
1.1.5 | Kontrollera att filbehörigheterna för scheduler-poddspecifikationen är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.6 | Kontrollera att filägarskapet för scheduler-poddspecifikationen är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.7 | Kontrollera att filbehörigheterna för etcd-poddspecifikationen är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.8 | Kontrollera att filägarskapet för etcd-poddspecifikationen är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.9 | Kontrollera att filbehörigheterna för containernätverksgränssnittet är inställda på 600 eller mer restriktiva | Inte poängsatt | L1 | Ej tillämpligt |
1.1.10 | Kontrollera att filägarskapet för containernätverksgränssnittet är inställt på root:root | Inte poängsatt | L1 | Ej tillämpligt |
1.1.11 | Kontrollera att behörigheterna för etcd-datakatalogen är inställda på 700 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.12 | Kontrollera att ägarskapet för etcd-datakatalogen är inställt på etcd:etcd | Gjorde | L1 | Ej tillämpligt |
1.1.13 | Kontrollera att filbehörigheterna admin.conf har angetts till 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.14 | Kontrollera att admin.conf-filägarskapet är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.15 | Kontrollera att filbehörigheterna för scheduler.conf är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.16 | Kontrollera att filägarskapet för scheduler.conf är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.17 | Kontrollera att behörigheterna för filen controller-manager.conf är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.18 | Kontrollera att ägarskapet för filen controller-manager.conf är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.19 | Kontrollera att Kubernetes PKI-katalogen och filägarskapet är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.20 | Kontrollera att behörigheterna för Kubernetes PKI-certifikatfilen är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.21 | Kontrollera att behörigheterna för Kubernetes PKI-nyckelfilen är inställda på 600 | Gjorde | L1 | Ej tillämpligt |
1.2 | API Server | |||
1.2.1 | Kontrollera att argumentet är inställt på --anonymous-auth false |
Inte poängsatt | L1 | Godkänd |
1.2.2 | Kontrollera att parametern --token-auth-file inte har angetts |
Gjorde | L1 | Underkänn |
1.2.3 | Kontrollera att --DenyServiceExternalIPs inte har angetts |
Gjorde | L1 | Godkänd |
1.2.4 | Se till att argumenten --kubelet-client-certificate och --kubelet-client-key anges efter behov |
Gjorde | L1 | Godkänd |
1.2.5 | Kontrollera att --kubelet-certificate-authority argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Underkänn |
1.2.6 | Kontrollera att argumentet inte är inställt på --authorization-mode AlwaysAllow |
Gjorde | L1 | Godkänd |
1.2.7 | Kontrollera att argumentet --authorization-mode innehåller Node |
Gjorde | L1 | Godkänd |
1.2.8 | Kontrollera att argumentet --authorization-mode innehåller RBAC |
Gjorde | L1 | Godkänd |
1.2.9 | Kontrollera att plugin-programmet EventRateLimit för antagningskontroll har angetts | Inte poängsatt | L1 | Underkänn |
1.2.10 | Kontrollera att plugin-programmet för antagningskontroll AlwaysAdmit inte har angetts | Gjorde | L1 | Godkänd |
1.2.11 | Kontrollera att plugin-programmet för antagningskontroll AlwaysPullImages har angetts | Inte poängsatt | L1 | Underkänn |
1.2.12 | Kontrollera att plugin-programmet SecurityContextDeny för antagningskontroll har angetts om PodSecurityPolicy inte används | Inte poängsatt | L1 | Underkänn |
1.2.13 | Kontrollera att plugin-programmet för antagningskontroll ServiceAccount har angetts | Gjorde | L1 | Godkänd |
1.2.14 | Kontrollera att plugin-programmet NamespaceLifecycle för antagningskontroll har angetts | Gjorde | L1 | Godkänd |
1.2.15 | Kontrollera att plugin-programmet NodeRestriction för antagningskontroll har angetts | Gjorde | L1 | Godkänd |
1.2.16 | Kontrollera att argumentet inte är inställt på --secure-port 0 |
Gjorde | L1 | Godkänd |
1.2.17 | Kontrollera att argumentet är inställt på --profiling false |
Gjorde | L1 | Godkänd |
1.2.18 | Kontrollera att --audit-log-path argumentet har angetts |
Gjorde | L1 | Godkänd |
1.2.19 | Kontrollera att argumentet är inställt på --audit-log-maxage 30 eller efter behov |
Gjorde | L1 | Motsvarande kontroll |
1.2.20 | Kontrollera att argumentet är inställt på --audit-log-maxbackup 10 eller efter behov |
Gjorde | L1 | Motsvarande kontroll |
1.2.21 | Kontrollera att argumentet är inställt på --audit-log-maxsize 100 eller efter behov |
Gjorde | L1 | Godkänd |
1.2.22 | Kontrollera att --request-timeout argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.2.23 | Kontrollera att argumentet är inställt på --service-account-lookup true |
Gjorde | L1 | Godkänd |
1.2.24 | Kontrollera att --service-account-key-file argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.2.25 | Se till att argumenten --etcd-certfile och --etcd-keyfile anges efter behov |
Gjorde | L1 | Godkänd |
1.2.26 | Se till att argumenten --tls-cert-file och --tls-private-key-file anges efter behov |
Gjorde | L1 | Godkänd |
1.2.27 | Kontrollera att --client-ca-file argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.2.28 | Kontrollera att --etcd-cafile argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.2.29 | Kontrollera att --encryption-provider-config argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Beror på miljö |
1.2.30 | Se till att krypteringsprovidrar är korrekt konfigurerade | Gjorde | L1 | Beror på miljö |
1.2.31 | Se till att API-servern endast använder starka kryptografiska chiffer | Inte poängsatt | L1 | Godkänd |
1.3 | Controller Manager | |||
1.3.1 | Kontrollera att --terminated-pod-gc-threshold argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.3.2 | Kontrollera att argumentet är inställt på --profiling false |
Gjorde | L1 | Godkänd |
1.3.3 | Kontrollera att argumentet är inställt på --use-service-account-credentials true |
Gjorde | L1 | Godkänd |
1.3.4 | Kontrollera att --service-account-private-key-file argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.3.5 | Kontrollera att --root-ca-file argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
1.3.6 | Kontrollera att argumentet RotateKubeletServerCertificate är inställt på true | Gjorde | L2 | Underkänn |
1.3.7 | Kontrollera att argumentet är inställt på --bind-address 127.0.0.1 |
Gjorde | L1 | Motsvarande kontroll |
1.4 | Scheduler | |||
1.4.1 | Kontrollera att argumentet är inställt på --profiling false |
Gjorde | L1 | Godkänd |
1.4.2 | Kontrollera att argumentet är inställt på --bind-address 127.0.0.1 |
Gjorde | L1 | Motsvarande kontroll |
2 | etcd | |||
2.1 | Se till att argumenten --cert-file och --key-file anges efter behov |
Gjorde | L1 | Godkänd |
2.2 | Kontrollera att argumentet är inställt på --client-cert-auth true |
Gjorde | L1 | Godkänd |
2.3 | Kontrollera att argumentet inte är inställt på --auto-tls true |
Gjorde | L1 | Godkänd |
2.4 | Se till att argumenten --peer-cert-file och --peer-key-file anges efter behov |
Gjorde | L1 | Godkänd |
2.5 | Kontrollera att argumentet är inställt på --peer-client-cert-auth true |
Gjorde | L1 | Godkänd |
2,6 | Kontrollera att argumentet inte är inställt på --peer-auto-tls true |
Gjorde | L1 | Godkänd |
2.7 | Se till att en unik certifikatutfärdare används för etcd | Inte poängsatt | L2 | Godkänd |
3 | Konfiguration av kontrollplan | |||
3.1 | Autentisering och auktorisering | |||
3.1.1 | Klientcertifikatautentisering bör inte användas för användare | Inte poängsatt | L2 | Godkänd |
3.2 | Loggning | |||
3.2.1 | Se till att en minimal granskningsprincip skapas | Gjorde | L1 | Godkänd |
3.2.2 | Se till att granskningsprincipen omfattar viktiga säkerhetsproblem | Inte poängsatt | L2 | Godkänd |
4 | Arbetsnoder | |||
4.1 | Konfigurationsfiler för arbetsnod | |||
4.1.1 | Kontrollera att kubelet-tjänstens filbehörigheter är inställda på 600 eller mer restriktiva | Gjorde | L1 | Godkänd |
4.1.2 | Kontrollera att ägarskapet för kubelet-tjänstens fil är inställt på root:root | Gjorde | L1 | Godkänd |
4.1.3 | Om det finns en kubeconfig-proxyfil kontrollerar du att behörigheterna är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
4.1.4 | Om det finns en kubeconfig-proxyfil kontrollerar du att ägarskapet är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
4.1.5 | Kontrollera att behörigheterna för --kubeconfig kubelet.conf-filen är inställda på 600 eller mer restriktiva |
Gjorde | L1 | Godkänd |
4.1.6 | Kontrollera att ägarskapet för --kubeconfig filen kubelet.conf är inställt på root:root |
Gjorde | L1 | Godkänd |
4.1.7 | Kontrollera att filbehörigheterna för certifikatutfärdarna är inställda på 600 eller mer restriktiva | Gjorde | L1 | Godkänd |
4.1.8 | Kontrollera att filägarskapet för klientcertifikatutfärdarna är inställt på root:root | Gjorde | L1 | Godkänd |
4.1.9 | Om konfigurationsfilen kubelet config.yaml används kontrollerar du att behörigheterna är inställda på 600 eller mer restriktiva | Gjorde | L1 | Godkänd |
4.1.10 | Om kubelet config.yaml-konfigurationsfilen används kontrollerar du att filägarskapet är inställt på root:root | Gjorde | L1 | Godkänd |
4.2 | Kubelet | |||
4.2.1 | Kontrollera att argumentet är inställt på --anonymous-auth false |
Gjorde | L1 | Godkänd |
4.2.2 | Kontrollera att argumentet inte är inställt på --authorization-mode AlwaysAllow |
Gjorde | L1 | Godkänd |
4.2.3 | Kontrollera att --client-ca-file argumentet är inställt på lämpligt sätt |
Gjorde | L1 | Godkänd |
4.2.4 | Kontrollera att argumentet är inställt på --read-only-port 0 |
Gjorde | L1 | Godkänd |
4.2.5 | Kontrollera att argumentet inte är inställt på --streaming-connection-idle-timeout 0 |
Gjorde | L1 | Godkänd |
4.2.6 | Kontrollera att argumentet är inställt på --protect-kernel-defaults true |
Gjorde | L1 | Godkänd |
4.2.7 | Kontrollera att argumentet är inställt på --make-iptables-util-chains true |
Gjorde | L1 | Godkänd |
4.2.8 | Kontrollera att --hostname-override argumentet inte har angetts |
Inte poängsatt | L1 | Godkänd |
4.2.9 | Se till att argumentet eventRecordQPS är inställt på en nivå som säkerställer lämplig händelseinsamling | Inte poängsatt | L2 | Godkänd |
4.2.10 | Kontrollera att argumenten --tls-cert-file och --tls-private-key-file anges efter behov |
Gjorde | L1 | Godkänd |
4.2.11 | Kontrollera att argumentet inte är inställt på --rotate-certificates false |
Gjorde | L1 | Godkänd |
4.2.12 | Kontrollera att argumentet RotateKubeletServerCertificate är inställt på true | Gjorde | L1 | Godkänd |
4.2.13 | Se till att Kubelet endast använder starka kryptografiska chiffer | Inte poängsatt | L1 | Godkänd |
5 | Principer | |||
5,1 | RBAC- och tjänstkonton | |||
5.1.1 | Kontrollera att klusteradministratörsrollen endast används där det behövs | Inte poängsatt | L1 | Beror på miljö |
5.1.2 | Minimera åtkomsten till hemligheter | Inte poängsatt | L1 | Beror på miljö |
5.1.3 | Minimera användningen av jokertecken i Roller och KlusterRoller | Inte poängsatt | L1 | Beror på miljö |
5.1.4 | Minimera åtkomsten till att skapa poddar | Inte poängsatt | L1 | Beror på miljö |
5.1.5 | Kontrollera att standardtjänstkonton inte används aktivt | Gjorde | L1 | Beror på miljö |
5.1.6 | Kontrollera att tjänstkontotoken endast monteras vid behov | Inte poängsatt | L1 | Beror på miljö |
5.2 | Poddsäkerhetsprinciper | |||
5.2.1 | Minimera åtkomsten av privilegierade containrar | Inte poängsatt | L1 | Beror på miljö |
5.2.2 | Minimera antagningen av containrar som vill dela värdprocess-ID-namnområdet | Gjorde | L1 | Beror på miljö |
5.2.3 | Minimera antagningen av containrar som vill dela värd-IPC-namnområdet | Gjorde | L1 | Beror på miljö |
5.2.4 | Minimera antagningen av containrar som vill dela värdnätverkets namnområde | Gjorde | L1 | Beror på miljö |
5.2.5 | Minimera införsel av containrar med allowPrivilegeEscalation | Gjorde | L1 | Beror på miljö |
5.2.6 | Minimera antagningen av rotcontainrar | Inte poängsatt | L2 | Beror på miljö |
5.2.7 | Minimera intagningen av containrar med NET_RAW-funktionen | Inte poängsatt | L1 | Beror på miljö |
5.2.8 | Minimera antagningen av containrar med ytterligare funktioner | Inte poängsatt | L1 | Beror på miljö |
5.2.9 | Minimera antagningen av containrar med tilldelade funktioner | Inte poängsatt | L2 | Beror på miljö |
5.3 | Nätverksprinciper och CNI | |||
5.3.1 | Se till att det CNI som används har stöd för nätverksprinciper | Inte poängsatt | L1 | Godkänd |
5.3.2 | Kontrollera att alla namnområden har definierade nätverksprinciper | Gjorde | L2 | Beror på miljö |
5.4 | Hantering av hemligheter | |||
5.4.1 | Föredrar att använda hemligheter som filer framför hemligheter som miljövariabler | Inte poängsatt | L1 | Beror på miljö |
5.4.2 | Överväg extern hemlig lagring | Inte poängsatt | L2 | Beror på miljö |
5,5 | Utökningsbar antagningskontroll | |||
5.5.1 | Konfigurera image provenance med hjälp av ImagePolicyWebhook-antagningskontrollant | Inte poängsatt | L2 | Beror på miljö |
5,6 | Allmänna principer | |||
5.6.1 | Skapa administrativa gränser mellan resurser med hjälp av namnområden | Inte poängsatt | L1 | Beror på miljö |
5.6.2 | Kontrollera att seccomp-profilen är inställd på docker/standard i podddefinitionerna | Inte poängsatt | L2 | Beror på miljö |
5.6.3 | Tillämpa säkerhetskontext på dina poddar och containrar | Inte poängsatt | L2 | Beror på miljö |
5.6.4 | Standardnamnområdet ska inte användas | Gjorde | L2 | Beror på miljö |
Anteckning
Utöver Kubernetes CIS-riktmärket finns även ett AKS CIS-benchmark tillgängligt.
Ytterligare information
- Det säkerhetshärdade operativsystemet skapas och underhålls specifikt för AKS och stöds inte utanför AKS-plattformen.
- För att ytterligare minska attackytan har vissa onödiga kernelmoduldrivrutiner inaktiverats i operativsystemet.
Nästa steg
Mer information om AKS-säkerhet finns i följande artiklar: