Center for Internet Security (CIS) Kubernetes benchmark
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 Center for Internet Security (CIS) Benchmarks.
Kubernetes CIS-benchmark
Följande är resultaten från CIS Kubernetes V1.27 Benchmark v1.8.0-rekommendationerna för AKS. Resultaten gäller för AKS 1.21.x via AKS 1.27.x.
Poängsatta rekommendationer påverkar prestandapoängen om de inte tillämpas, men inte poängsatta rekommendationer.
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 på alla system och som bör orsaka lite eller inget 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 avser 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 nodddatorn.
- 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 | Beskrivning av rekommendation | Bedömningstyp | Nivå | Status |
---|---|---|---|---|
1 | Kontrollplanskomponenter | |||
1,1 | Konfigurationsfiler för kontrollplansnod | |||
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 | Se till att filbehörigheterna för specifikationen för kontrollanthanterarens poddar ä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 poddar är inställt på 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 behörigheterna för admin.conf-filen är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.14 | Kontrollera att ägarskapet för filen admin.conf är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.15 | Kontrollera att filbehörigheterna scheduler.conf är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.16 | Kontrollera att scheduler.conf-filägarskapet är inställt på root:root | Gjorde | L1 | Ej tillämpligt |
1.1.17 | Kontrollera att behörigheterna för controller-manager.conf-filen är inställda på 600 eller mer restriktiva | Gjorde | L1 | Ej tillämpligt |
1.1.18 | Kontrollera att ägarskapet för controller-manager.conf-filen ä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 | Underkänn |
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 har angetts efter behov |
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 AlwaysAdmit för antagningskontroll inte har angetts | Gjorde | L1 | Godkänd |
1.2.11 | Kontrollera att plugin-programmet AlwaysPullImages för antagningskontroll 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 ServiceAccount för antagningskontroll 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 | Motsvarande kontroll |
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 | Godkänd |
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 har angetts efter behov |
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 har angetts efter behov |
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 har angetts efter behov |
Gjorde | L1 | Godkänd |
1.2.28 | Kontrollera att --etcd-cafile argumentet har angetts efter behov |
Gjorde | L1 | Beror på miljö |
1.2.29 | Kontrollera att --encryption-provider-config argumentet har angetts efter behov |
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 har angetts efter behov |
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 har angetts efter behov |
Gjorde | L1 | Godkänd |
1.3.5 | Kontrollera att --root-ca-file argumentet har angetts efter behov |
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 sant |
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 sant |
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.1.2 | Autentisering med tjänstkontotoken ska inte användas för användare | Inte poängsatt | L2 | Godkänd |
3.1.3 | Bootstrap-tokenautentisering 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 arbetsnoder | |||
4.1.1 | Kontrollera att kubelet-tjänstfilbehörigheterna är inställda på 600 eller mer restriktiva | Gjorde | L1 | Godkänd |
4.1.2 | Kontrollera att kubelet-tjänstfilens ägarskap ä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 filbehörigheterna --kubeconfig kubelet.conf är inställda på 600 eller mer restriktiva |
Gjorde | L1 | Godkänd |
4.1.6 | Kontrollera att ägarskapet för --kubeconfig kubelet.conf-filen ä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 kubelet config.yaml-konfigurationsfilen 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 har angetts efter behov |
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 | Kontrollera 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 | Se till 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 | Se till 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.1.7 | Undvik användning av system:masters-grupp | Inte poängsatt | L1 | Beror på miljö |
5.1.8 | Begränsa användningen av behörigheterna Bind, Personifiera och Eskalera i Kubernetes-klustret | Inte poängsatt | L1 | Beror på miljö |
5.1.9 | Minimera åtkomsten för att skapa beständiga volymer | Inte poängsatt | L1 | Beror på miljö |
5.1.10 | Minimera åtkomsten till proxyunderresursen för noder | Inte poängsatt | L1 | Beror på miljö |
5.1.11 | Minimera åtkomsten till underresursen för godkännande av certifikattilldelningsobjekt | Inte poängsatt | L1 | Beror på miljö |
5.1.12 | Minimera åtkomsten till webhook-konfigurationsobjekt | Inte poängsatt | L1 | Beror på miljö |
5.1.13 | Minimera åtkomsten till skapande av tjänstkontotoken | Inte poängsatt | L1 | Beror på miljö |
5.2 | Säkerhetsprinciper för poddar | |||
5.2.1 | Kontrollera att klustret har minst en aktiv principkontrollmekanism på plats | Inte poängsatt | L1 | Beror på miljö |
5.2.2 | Minimera åtkomsten av privilegierade containrar | Inte poängsatt | L1 | Beror på miljö |
5.2.3 | Minimera antagningen av containrar som vill dela värdprocess-ID-namnområdet | Gjorde | L1 | Beror på miljö |
5.2.4 | Minimera antagningen av containrar som vill dela värd-IPC-namnområdet | Gjorde | L1 | Beror på miljö |
5.2.5 | Minimera antagningen av containrar som vill dela värdnätverkets namnområde | Gjorde | L1 | Beror på miljö |
5.2.6 | Minimera antagningen 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 antagningen av containrar med funktionen NET_RAW | Inte poängsatt | L1 | Beror på miljö |
5.2.8 | Minimera antagningen av containrar med tillagda funktioner | Inte poängsatt | L1 | Beror på miljö |
5.2.9 | Minimera antagningen av containrar med tilldelade funktioner | Inte poängsatt | L1 | Beror på miljö |
5.2.10 | Minimera antagningen av containrar med tilldelade funktioner | Inte poängsatt | L2 | |
5.2.11 | Minimera antagningen av Windows HostProcess-containrar | Inte poängsatt | L1 | Beror på miljö |
5.2.12 | Minimera antagningen av HostPath-volymer | Inte poängsatt | L1 | Beror på miljö |
5.2.13 | Minimera antagningen av containrar som använder HostPorts | Inte poängsatt | L1 | 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 definierat 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 lagring av hemligheter | Inte poängsatt | L2 | Beror på miljö |
5,5 | Utökningsbar antagningskontroll | |||
5.5.1 | Konfigurera avbildnings proveniens med hjälp av ImagePolicyWebhook-antagningskontrollant | Inte poängsatt | L2 | Underkänn |
5.7 | Allmänna principer | |||
5.7.1 | Skapa administrativa gränser mellan resurser med hjälp av namnområden | Inte poängsatt | L1 | Beror på miljö |
5.7.2 | Kontrollera att seccomp-profilen är inställd på docker/standard i dina podddefinitioner | Inte poängsatt | L2 | Beror på miljö |
5.7.3 | Tillämpa säkerhetskontext på dina poddar och containrar | Inte poängsatt | L2 | Beror på miljö |
5.7.4 | Standardnamnområdet ska inte användas | Gjorde | L2 | Beror på miljö |
Kommentar
Utöver Kubernetes CIS-riktmärket finns även ett AKS CIS-riktmärke tillgängligt.
Ytterligare kommentarer
- 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: