Kubernetes-benchmark voor Internet Security (CIS)

Azure Kubernetes Service (AKS) voldoet als een veilige service aan SOC-, ISO-, PCI DSS- en HIPAA-standaarden. In dit artikel worden de beveiligingsmaatregelen beschreven die zijn toegepast op AKS op basis van de CIS Kubernetes-benchmark. Zie Beveiligingsconcepten voor toepassingen en clusters in Azure Kubernetes Service (AKS) voor meer informatie over AKS-beveiliging. Zie Center for Internet Security (CIS) Benchmarks voor meer informatie over de CIS-benchmark.

Kubernetes CIS-benchmark

Hieronder volgen de resultaten van de aanbevelingen van CIS Kubernetes V1.27 Benchmark v1.8.0 voor AKS. De resultaten zijn van toepassing op AKS 1.21.x tot en met AKS 1.27.x.

Score-aanbevelingen zijn van invloed op de benchmarkscore als ze niet worden toegepast, terwijl aanbevelingen die niet zijn beoordeeld niet.

CIS-benchmarks bieden twee beveiligingsniveaus:

  • L1 of Niveau 1 raadt essentiële basisbeveiligingsvereisten aan die op elk systeem kunnen worden geconfigureerd en die weinig of geen onderbreking van de service of verminderde functionaliteit moeten veroorzaken.
  • L2 of Niveau 2 raadt beveiligingsinstellingen aan voor omgevingen waarvoor meer beveiliging nodig is, wat kan leiden tot een verminderde functionaliteit.

Aanbevelingen kan een van de volgende statussen hebben:

  • Pass : de aanbeveling is toegepast.
  • Mislukt - De aanbeveling is niet toegepast.
  • N.v.v . De aanbeveling heeft betrekking op de machtigingsvereisten voor manifestbestanden die niet relevant zijn voor AKS. Kubernetes-clusters gebruiken standaard een manifestmodel om de pods van het besturingsvlak te implementeren, die afhankelijk zijn van bestanden van de vm met knooppunten. De CIS Kubernetes-benchmark raadt deze bestanden aan bepaalde machtigingsvereisten te hebben. AKS-clusters maken gebruik van een Helm-grafiek voor het implementeren van besturingsvlakpods en zijn niet afhankelijk van bestanden in de knooppunt-VM.
  • Is afhankelijk van de omgeving : de aanbeveling wordt toegepast in de specifieke omgeving van de gebruiker en wordt niet beheerd door AKS. Scored recommendations beïnvloeden de benchmarkscore of de aanbeveling van toepassing is op de specifieke omgeving van de gebruiker of niet.
  • Gelijkwaardig beheer : de aanbeveling is op een andere, gelijkwaardige manier geïmplementeerd.
CIS-id Beschrijving van aanbeveling Scoretype Niveau Status
1 Onderdelen van besturingsvlak
1.1 Configuratiebestanden voor besturingsvlakknooppunten
1.1.1 Zorg ervoor dat de bestandsmachtigingen voor de API-serverpodspecificatie zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.2 Zorg ervoor dat het eigendom van het bestand met api-serverspecificatiebestanden is ingesteld op root:root Scoorde L1 N.v.t.
1.1.3 Zorg ervoor dat de bestandsmachtigingen voor de controllerbeheerpodspecificatie zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.4 Zorg ervoor dat het eigendom van het bestand met de podspecificatiebestand voor controllerbeheer is ingesteld op root:root Scoorde L1 N.v.t.
1.1.5 Zorg ervoor dat de bestandsmachtigingen voor de scheduler-podspecificatie zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.6 Zorg ervoor dat het eigendom van het bestand met de scheduler-podspecificatie is ingesteld op root:root Scoorde L1 N.v.t.
1.1.7 Zorg ervoor dat de bestandsmachtigingen voor de etcd-podspecificatie zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.8 Zorg ervoor dat het eigendom van het bestand met de etcd-podspecificatie is ingesteld op root:root Scoorde L1 N.v.t.
1.1.9 Zorg ervoor dat de bestandsmachtigingen voor de Container Network Interface zijn ingesteld op 600 of meer beperkend Niet gescoord L1 N.v.t.
1.1.10 Zorg ervoor dat het eigendom van het containernetwerkinterfacebestand is ingesteld op root:root Niet gescoord L1 N.v.t.
1.1.11 Zorg ervoor dat de machtigingen voor etcd-gegevensmappen zijn ingesteld op 700 of meer beperkend Scoorde L1 N.v.t.
1.1.12 Zorg ervoor dat het eigenaarschap van de etcd-gegevensmap is ingesteld op etcd:etcd Scoorde L1 N.v.t.
1.1.13 Zorg ervoor dat de bestandsmachtigingen admin.conf zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.14 Zorg ervoor dat het eigendom van het bestand admin.conf is ingesteld op root:root Scoorde L1 N.v.t.
1.1.15 Zorg ervoor dat de bestandsmachtigingen van scheduler.conf zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.16 Zorg ervoor dat het eigendom van het bestand scheduler.conf is ingesteld op root:root Scoorde L1 N.v.t.
1.1.17 Zorg ervoor dat de bestandsmachtigingen controller-manager.conf zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.18 Zorg ervoor dat het eigendom van het bestand controller-manager.conf is ingesteld op root:root Scoorde L1 N.v.t.
1.1.19 Zorg ervoor dat de Kubernetes PKI-map en het eigendom van het bestand zijn ingesteld op root:root Scoorde L1 N.v.t.
1.1.20 Zorg ervoor dat de machtigingen voor het Kubernetes PKI-certificaatbestand zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
1.1.21 Zorg ervoor dat de machtigingen voor het Kubernetes PKI-sleutelbestand zijn ingesteld op 600 Scoorde L1 N.v.t.
1.2 API-server
1.2.1 Zorg ervoor dat het --anonymous-auth argument is ingesteld op false Niet gescoord L1 Geslaagd
1.2.2 Zorg ervoor dat de --token-auth-file parameter niet is ingesteld Scoorde L1 Mislukt
1.2.3 Zorg ervoor dat deze --DenyServiceExternalIPs niet is ingesteld Scoorde L1 Mislukt
1.2.4 Zorg ervoor dat de --kubelet-client-certificate en --kubelet-client-key argumenten zo nodig zijn ingesteld Scoorde L1 Geslaagd
1.2.5 Zorg ervoor dat het --kubelet-certificate-authority argument is ingesteld indien van toepassing Scoorde L1 Mislukt
1.2.6 Zorg ervoor dat het --authorization-mode argument niet is ingesteld op AlwaysAllow Scoorde L1 Geslaagd
1.2.7 Zorg ervoor dat het --authorization-mode argument Node bevat Scoorde L1 Geslaagd
1.2.8 Zorg ervoor dat het --authorization-mode argument RBAC bevat Scoorde L1 Geslaagd
1.2.9 Zorg ervoor dat de invoegtoepassing voor toegangsbeheer EventRateLimit is ingesteld Niet gescoord L1 Mislukt
1.2.10 Zorg ervoor dat de invoegtoepassing voor toegangsbeheer AlwaysAdmit niet is ingesteld Scoorde L1 Geslaagd
1.2.11 Zorg ervoor dat de invoegtoepassing Voor toegangsbeheer AlwaysPullImages is ingesteld Niet gescoord L1 Mislukt
1.2.12 Zorg ervoor dat de invoegtoepassing Voor toegangsbeheer SecurityContextDeny is ingesteld als PodSecurityPolicy niet wordt gebruikt Niet gescoord L1 Mislukt
1.2.13 Zorg ervoor dat de invoegtoepassing voor toegangsbeheer is ingesteld op ServiceAccount Scoorde L1 Geslaagd
1.2.14 Zorg ervoor dat de invoegtoepassing Voor toegangsbeheer NamespaceLifecycle is ingesteld Scoorde L1 Geslaagd
1.2.15 Zorg ervoor dat de invoegtoepassing voor toegangsbeheer NodeRestriction is ingesteld Scoorde L1 Geslaagd
1.2.16 Zorg ervoor dat het --secure-port argument niet is ingesteld op 0 Scoorde L1 Geslaagd
1.2.17 Zorg ervoor dat het --profiling argument is ingesteld op false Scoorde L1 Geslaagd
1.2.18 Zorg ervoor dat het --audit-log-path argument is ingesteld Scoorde L1 Equivalent besturingselement
1.2.19 Zorg ervoor dat het --audit-log-maxage argument is ingesteld op 30 of indien van toepassing Scoorde L1 Equivalent besturingselement
1.2.20 Zorg ervoor dat het --audit-log-maxbackup argument is ingesteld op 10 of indien van toepassing Scoorde L1 Geslaagd
1.2.21 Zorg ervoor dat het --audit-log-maxsize argument is ingesteld op 100 of indien van toepassing Scoorde L1 Geslaagd
1.2.22 Zorg ervoor dat het --request-timeout argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
1.2.23 Zorg ervoor dat het --service-account-lookup argument is ingesteld op true Scoorde L1 Geslaagd
1.2.24 Zorg ervoor dat het --service-account-key-file argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
1.2.25 Zorg ervoor dat de --etcd-certfile en --etcd-keyfile argumenten zo nodig zijn ingesteld Scoorde L1 Geslaagd
1.2.26 Zorg ervoor dat de --tls-cert-file en --tls-private-key-file argumenten zo nodig zijn ingesteld Scoorde L1 Geslaagd
1.2.27 Zorg ervoor dat het --client-ca-file argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
1.2.28 Zorg ervoor dat het --etcd-cafile argument is ingesteld indien van toepassing Scoorde L1 Afhankelijk van de omgeving
1.2.29 Zorg ervoor dat het --encryption-provider-config argument is ingesteld indien van toepassing Scoorde L1 Afhankelijk van de omgeving
1.2.30 Zorg ervoor dat versleutelingsproviders op de juiste wijze zijn geconfigureerd Scoorde L1 Afhankelijk van de omgeving
1.2.31 Zorg ervoor dat de API-server alleen gebruikmaakt van sterke cryptografische coderingen Niet gescoord L1 Geslaagd
1.3 Controllerbeheer
1.3.1 Zorg ervoor dat het --terminated-pod-gc-threshold argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
1.3.2 Zorg ervoor dat het --profiling argument is ingesteld op false Scoorde L1 Geslaagd
1.3.3 Zorg ervoor dat het --use-service-account-credentials argument is ingesteld op true Scoorde L1 Geslaagd
1.3.4 Zorg ervoor dat het --service-account-private-key-file argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
1.3.5 Zorg ervoor dat het --root-ca-file argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
1.3.6 Zorg ervoor dat het argument RotateKubeletServerCertificate is ingesteld op true Scoorde L2 Mislukt
1.3.7 Zorg ervoor dat het --bind-address argument is ingesteld op 127.0.0.1 Scoorde L1 Equivalent besturingselement
1.4 Scheduler
1.4.1 Zorg ervoor dat het --profiling argument is ingesteld op false Scoorde L1 Geslaagd
1.4.2 Zorg ervoor dat het --bind-address argument is ingesteld op 127.0.0.1 Scoorde L1 Equivalent besturingselement
2 etcd
2.1 Zorg ervoor dat de --cert-file en --key-file argumenten zo nodig zijn ingesteld Scoorde L1 Geslaagd
2.2 Zorg ervoor dat het --client-cert-auth argument is ingesteld op true Scoorde L1 Geslaagd
2.3 Zorg ervoor dat het --auto-tls argument niet is ingesteld op true Scoorde L1 Geslaagd
2.4 Zorg ervoor dat de --peer-cert-file en --peer-key-file argumenten zo nodig zijn ingesteld Scoorde L1 Geslaagd
2.5 Zorg ervoor dat het --peer-client-cert-auth argument is ingesteld op true Scoorde L1 Geslaagd
2.6 Zorg ervoor dat het --peer-auto-tls argument niet is ingesteld op true Scoorde L1 Geslaagd
2.7 Zorg ervoor dat een unieke certificeringsinstantie wordt gebruikt voor etcd Niet gescoord L2 Geslaagd
3 Configuratie van besturingsvlak
3.1 Verificatie en autorisatie
3.1.1 Verificatie van clientcertificaten mag niet worden gebruikt voor gebruikers Niet gescoord L2 Geslaagd
3.1.2 Verificatie van serviceaccounttoken mag niet worden gebruikt voor gebruikers Niet gescoord L2 Geslaagd
3.1.3 Bootstrap-tokenverificatie mag niet worden gebruikt voor gebruikers Niet gescoord L2 Geslaagd
3.2 Logboekregistratie
3.2.1 Zorg ervoor dat er een minimaal controlebeleid wordt gemaakt Scoorde L1 Geslaagd
3.2.2 Zorg ervoor dat het controlebeleid belangrijke beveiligingsproblemen behandelt Niet gescoord L2 Geslaagd
4 Werkknooppunten
4.1 Werkknooppuntconfiguratiebestanden
4.1.1 Zorg ervoor dat de machtigingen voor het kubelet-servicebestand zijn ingesteld op 600 of meer beperkend Scoorde L1 Geslaagd
4.1.2 Zorg ervoor dat het eigendom van het kubelet-servicebestand is ingesteld op root:root Scoorde L1 Geslaagd
4.1.3 Als er een kubeconfig-proxybestand bestaat, moet u ervoor zorgen dat machtigingen zijn ingesteld op 600 of meer beperkend Scoorde L1 N.v.t.
4.1.4 Als er een kubeconfig-proxybestand bestaat, controleert u of het eigendom is ingesteld op root:root Scoorde L1 N.v.t.
4.1.5 Zorg ervoor dat de --kubeconfig bestandsmachtigingen voor kubelet.conf zijn ingesteld op 600 of meer beperkend Scoorde L1 Geslaagd
4.1.6 Zorg ervoor dat het eigendom van het --kubeconfig bestand kubelet.conf is ingesteld op root:root Scoorde L1 Geslaagd
4.1.7 Zorg ervoor dat de bestandsmachtigingen van de certificeringsinstanties zijn ingesteld op 600 of meer beperkend Scoorde L1 Geslaagd
4.1.8 Zorg ervoor dat het eigendom van de clientcertificaatautoriteiten is ingesteld op root:root Scoorde L1 Geslaagd
4.1.9 Als het kubelet config.yaml-configuratiebestand wordt gebruikt, moet u ervoor zorgen dat machtigingen zijn ingesteld op 600 of meer beperkend Scoorde L1 Geslaagd
4.1.10 Als het kubelet config.yaml-configuratiebestand wordt gebruikt, controleert u of het bestandseigendom is ingesteld op root:root Scoorde L1 Geslaagd
4.2 Kubelet
4.2.1 Zorg ervoor dat het --anonymous-auth argument is ingesteld op false Scoorde L1 Geslaagd
4.2.2 Zorg ervoor dat het --authorization-mode argument niet is ingesteld op AlwaysAllow Scoorde L1 Geslaagd
4.2.3 Zorg ervoor dat het --client-ca-file argument is ingesteld indien van toepassing Scoorde L1 Geslaagd
4.2.4 Zorg ervoor dat het --read-only-port argument is ingesteld op 0 Scoorde L1 Geslaagd
4.2.5 Zorg ervoor dat het --streaming-connection-idle-timeout argument niet is ingesteld op 0 Scoorde L1 Geslaagd
4.2.6 Zorg ervoor dat het --protect-kernel-defaults argument is ingesteld op true Scoorde L1 Geslaagd
4.2.7 Zorg ervoor dat het --make-iptables-util-chains argument is ingesteld op true Scoorde L1 Geslaagd
4.2.8 Zorg ervoor dat het --hostname-override argument niet is ingesteld Niet gescoord L1 Geslaagd
4.2.9 Zorg ervoor dat het argument EventRecordQPS is ingesteld op een niveau dat zorgt voor de juiste gebeurtenisopname Niet gescoord L2 Geslaagd
4.2.10 Zorg ervoor dat de --tls-cert-fileen --tls-private-key-file argumenten zo nodig zijn ingesteld Scoorde L1 Geslaagd
4.2.11 Zorg ervoor dat het --rotate-certificates argument niet is ingesteld op false Scoorde L1 Geslaagd
4.2.12 Zorg ervoor dat het argument RotateKubeletServerCertificate is ingesteld op true Scoorde L1 Geslaagd
4.2.13 Zorg ervoor dat de Kubelet alleen gebruikmaakt van sterke cryptografische coderingen Niet gescoord L1 Geslaagd
5 Beleidsregels
5.1 RBAC- en serviceaccounts
5.1.1 Zorg ervoor dat de rol clusterbeheerder alleen wordt gebruikt als dat nodig is Niet gescoord L1 Afhankelijk van de omgeving
5.1.2 Toegang tot geheimen minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.1.3 Jokertekens in Rollen en ClusterRoles minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.1.4 Toegang tot het maken van pods minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.1.5 Zorg ervoor dat standaardserviceaccounts niet actief worden gebruikt Scoorde L1 Afhankelijk van de omgeving
5.1.6 Zorg ervoor dat serviceaccounttokens alleen worden gekoppeld indien nodig Niet gescoord L1 Afhankelijk van de omgeving
5.1.7 Vermijd het gebruik van system:masters group Niet gescoord L1 Afhankelijk van de omgeving
5.1.8 Gebruik van bindings-, imitatie- en escalatiemachtigingen in het Kubernetes-cluster beperken Niet gescoord L1 Afhankelijk van de omgeving
5.1.9 Toegang minimaliseren om permanente volumes te maken Niet gescoord L1 Afhankelijk van de omgeving
5.1.10 Toegang tot de proxysubresource van knooppunten minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.1.11 Toegang tot de subresource goedkeuring van certificatesigningrequests-objecten minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.1.12 Toegang tot webhookconfiguratieobjecten minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.1.13 Toegang tot het token voor het serviceaccount minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.2 Beveiligingsbeleid voor pods
5.2.1 Zorg ervoor dat het cluster ten minste één actief mechanisme voor beleidsbeheer heeft Niet gescoord L1 Afhankelijk van de omgeving
5.2.2 De toegang tot bevoegde containers minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.2.3 Minimaliseer de toegang tot containers die de hostproces-id-naamruimte willen delen Scoorde L1 Afhankelijk van de omgeving
5.2.4 Minimaliseer de toegang tot containers die de host-IPC-naamruimte willen delen Scoorde L1 Afhankelijk van de omgeving
5.2.5 Minimaliseer de toegang tot containers die de hostnetwerknaamruimte willen delen Scoorde L1 Afhankelijk van de omgeving
5.2.6 De toegang van containers minimaliseren met allowPrivilegeEscalation Scoorde L1 Afhankelijk van de omgeving
5.2.6 De toegang tot hoofdcontainers minimaliseren Niet gescoord L2 Afhankelijk van de omgeving
5.2.7 Minimaliseer de toegang van containers met de NET_RAW mogelijkheid Niet gescoord L1 Afhankelijk van de omgeving
5.2.8 De toegang tot containers met toegevoegde mogelijkheden minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.2.9 De toegang tot containers minimaliseren met toegewezen mogelijkheden Niet gescoord L1 Afhankelijk van de omgeving
5.2.10 De toegang tot containers minimaliseren met toegewezen mogelijkheden Niet gescoord L2
5.2.11 De toegang tot Windows HostProcess-containers minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.2.12 De toegang tot HostPath-volumes minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.2.13 De toegang tot containers die gebruikmaken van HostPorts minimaliseren Niet gescoord L1 Afhankelijk van de omgeving
5.3 Netwerkbeleid en CNI
5.3.1 Zorg ervoor dat de CNI in gebruik netwerkbeleid ondersteunt Niet gescoord L1 Geslaagd
5.3.2 Zorg ervoor dat voor alle naamruimten netwerkbeleid is gedefinieerd Scoorde L2 Afhankelijk van de omgeving
5.4 Geheimenbeheer
5.4.1 Liever geheimen gebruiken als bestanden boven geheimen als omgevingsvariabelen Niet gescoord L1 Afhankelijk van de omgeving
5.4.2 Externe geheime opslag overwegen Niet gescoord L2 Afhankelijk van de omgeving
5.5 Uitbreidbaar toegangsbeheer
5.5.1 Image Provenance configureren met behulp van ImagePolicyWebhook-toegangscontroller Niet gescoord L2 Mislukt
5.7 Algemeen beleid
5.7.1 Beheergrenzen tussen resources maken met behulp van naamruimten Niet gescoord L1 Afhankelijk van de omgeving
5.7.2 Zorg ervoor dat het seccomp-profiel is ingesteld op docker/default in uw poddefinities Niet gescoord L2 Afhankelijk van de omgeving
5.7.3 Beveiligingscontext toepassen op uw pods en containers Niet gescoord L2 Afhankelijk van de omgeving
5.7.4 De standaardnaamruimte mag niet worden gebruikt Scoorde L2 Afhankelijk van de omgeving

Notitie

Naast de Kubernetes CIS-benchmark is er ook een AKS CIS-benchmark beschikbaar.

Aanvullende opmerkingen

  • Het beveiligde besturingssysteem voor beveiliging wordt speciaal voor AKS gebouwd en onderhouden en wordt niet ondersteund buiten het AKS-platform.
  • Om de kwetsbaarheid voor aanvallen verder te verminderen, zijn sommige onnodige kernelmodulestuurprogramma's uitgeschakeld in het besturingssysteem.

Volgende stappen

Zie de volgende artikelen voor meer informatie over AKS-beveiliging: