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-fileoch --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: