Sdílet prostřednictvím


Srovnávací test Kubernetes Center for Internet Security (CIS)

Azure Kubernetes Service (AKS) jako zabezpečená služba splňuje standardy SOC, ISO, PCI DSS a HIPAA. Tento článek popisuje posílení zabezpečení použité u AKS na základě srovnávacího testu CIS Kubernetes. Další informace o zabezpečení AKS najdete v tématu Koncepty zabezpečení pro aplikace a clustery ve službě Azure Kubernetes Service (AKS). Další informace o srovnávacím testu CIS naleznete v tématu Center for Internet Security (CIS) Benchmarks.

Srovnávací test CIS Kubernetes

Níže jsou uvedené výsledky doporučení cis Kubernetes V1.27 Benchmark v1.8.0 pro AKS. Výsledky platí pro AKS 1.21.x až AKS 1.27.x.

Skóre doporučení mají vliv na skóre srovnávacího testu, pokud se nepoužijí, ale nehodnocená doporučení ne.

Srovnávací testy CIS poskytují dvě úrovně nastavení zabezpečení:

  • L1 nebo Úroveň 1 doporučuje základní základní požadavky na zabezpečení, které je možné konfigurovat v jakémkoli systému a které by měly způsobit malé nebo žádné přerušení služby nebo omezené funkčnosti.
  • L2 nebo Úroveň 2 doporučuje nastavení zabezpečení pro prostředí vyžadující větší zabezpečení, které by mohlo vést k určitým omezeným funkcím.

Doporučení můžou mít jeden z následujících stavů:

  • Pass – Doporučení bylo použito.
  • Selhání – Doporučení se nepoužílo.
  • Není k dispozici – Doporučení se vztahuje k požadavkům na oprávnění souboru manifestu, které nejsou pro AKS relevantní. Clustery Kubernetes ve výchozím nastavení používají model manifestu k nasazení podů řídicí roviny, které spoléhají na soubory z virtuálního počítače uzlu. Srovnávací test CIS Kubernetes doporučuje tyto soubory s určitými požadavky na oprávnění. Clustery AKS používají chart Helm k nasazení podů řídicí roviny a nespoléhá na soubory na virtuálním počítači uzlu.
  • Závisí na prostředí – Doporučení se použije v konkrétním prostředí uživatele a není řízeno službou AKS. Skóre doporučení ovlivňují skóre srovnávacího testu bez ohledu na to, jestli se doporučení vztahuje na konkrétní prostředí uživatele, nebo ne.
  • Ekvivalentní řízení – Doporučení bylo implementováno jiným, ekvivalentním způsobem.
CIS ID Popis doporučení Typ bodování Level Stav
0 Komponenty řídicí roviny
1,1 Konfigurační soubory uzlů řídicí roviny
1.1.1 Ujistěte se, že jsou oprávnění souboru specifikace podu serveru API nastavená na 600 nebo více omezující. Skóroval L1
1.1.2 Ujistěte se, že je vlastnictví souboru specifikace podu serveru API nastavené na root:root. Skóroval L1
1.1.3 Ujistěte se, že jsou oprávnění souboru specifikace podu správce kontroleru nastavená na 600 nebo více omezující. Skóroval L1
1.1.4 Ujistěte se, že je vlastnictví souboru specifikace podu správce kontroleru nastavené na root:root. Skóroval L1
1.1.5 Ujistěte se, že jsou oprávnění souboru specifikace podu plánovače nastavená na 600 nebo více omezující. Skóroval L1
1.1.6 Ujistěte se, že je vlastnictví souboru specifikace podu plánovače nastavené na root:root. Skóroval L1
1.1.7 Ujistěte se, že jsou oprávnění souboru specifikace podu etcd nastavená na 600 nebo více omezující. Skóroval L1
1.1.8 Ujistěte se, že je vlastnictví souboru specifikace podu etcd nastavené na root:root. Skóroval L1
1.1.9 Ujistěte se, že jsou oprávnění k souborům rozhraní Network Interface kontejneru nastavená na 600 nebo více omezující. Not Scored L1
1.1.10 Ujistěte se, že je vlastnictví souboru rozhraní Network Interface kontejneru nastavené na root:root. Not Scored L1
1.1.11 Ujistěte se, že jsou oprávnění k adresáři dat atd. nastavená na 700 nebo více omezující. Skóroval L1
1.1.12 Ujistěte se, že je vlastnictví adresáře dat etcd nastavené na etcd:etcd. Skóroval L1
1.1.13 Ujistěte se, že jsou oprávnění souboru admin.conf nastavená na 600 nebo více omezující. Skóroval L1
1.1.14 Ujistěte se, že je vlastnictví souboru admin.conf nastavené na root:root. Skóroval L1
1.1.15 Ujistěte se, že jsou oprávnění souboru scheduler.conf nastavená na 600 nebo více omezující. Skóroval L1
1.1.16 Ujistěte se, že je vlastnictví souboru scheduler.conf nastavené na root:root. Skóroval L1
1.1.17 Ujistěte se, že jsou oprávnění souboru controller-manager.conf nastavená na 600 nebo více omezující. Skóroval L1
1.1.18 Ujistěte se, že je vlastnictví souboru controller-manager.conf nastavené na root:root. Skóroval L1
1.1.19 Ujistěte se, že je adresář PKI a vlastnictví souboru Kubernetes nastavené na root:root. Skóroval L1
1.1.20 Ujistěte se, že jsou oprávnění souboru certifikátu PKI Kubernetes nastavená na 600 nebo více omezující. Skóroval L1
1.1.21 Ujistěte se, že jsou oprávnění ke souborům klíčů PKI Kubernetes nastavená na 600. Skóroval L1
1.2 API Server
1.2.1 Ujistěte se, že --anonymous-auth je argument nastavený na false. Not Scored L1 Úspěšné absolvování
1.2.2 Ujistěte se, že --token-auth-file parametr není nastavený. Skóroval L1 Neúspěch
1.2.3 Ujistěte se, že --DenyServiceExternalIPs není nastavená. Skóroval L1 Neúspěch
1.2.4 Ujistěte se, že --kubelet-client-certificate--kubelet-client-key jsou argumenty nastavené podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.5 Ujistěte se, že --kubelet-certificate-authority je argument nastavený podle potřeby. Skóroval L1 Neúspěch
1.2.6 Ujistěte se, že --authorization-mode argument není nastavený na AlwaysAllow. Skóroval L1 Úspěšné absolvování
1.2.7 Ujistěte se, že --authorization-mode argument obsahuje uzel. Skóroval L1 Úspěšné absolvování
1.2.8 Ujistěte se, že --authorization-mode argument obsahuje RBAC. Skóroval L1 Úspěšné absolvování
1.2.9 Ujistěte se, že je nastavený modul plug-in řízení přístupu EventRateLimit. Not Scored L1 Neúspěch
1.2.10 Ujistěte se, že modul plug-in AlwaysAdmit pro řízení přístupu není nastavený. Skóroval L1 Úspěšné absolvování
1.2.11 Ujistěte se, že je nastavený modul plug-in pro řízení přístupu AlwaysPullImages. Not Scored L1 Neúspěch
1.2.12 Ujistěte se, že je modul plug-in řízení přístupu SecurityContextDeny nastavený, pokud se nepoužívá PodSecurityPolicy. Not Scored L1 Neúspěch
1.2.13 Ujistěte se, že je nastavený modul plug-in modulu plug-in pro řízení přístupu. Skóroval L1 Úspěšné absolvování
1.2.14 Ujistěte se, že je nastavený modul plug-in NamespaceLifecycle pro řízení přístupu. Skóroval L1 Úspěšné absolvování
1.2.15 Ujistěte se, že je nastavený modul plug-in NodeRestriction řízení přístupu. Skóroval L1 Úspěšné absolvování
1.2.16 Ujistěte se, že --secure-port argument není nastavený na hodnotu 0. Skóroval L1 Úspěšné absolvování
1.2.17 Ujistěte se, že --profiling je argument nastavený na false. Skóroval L1 Úspěšné absolvování
1.2.18 Ujistěte se, že --audit-log-path je argument nastavený. Skóroval L1 Ekvivalentní ovládací prvek
1.2.19 Ujistěte se, že --audit-log-maxage je argument nastavený na hodnotu 30 nebo podle potřeby. Skóroval L1 Ekvivalentní ovládací prvek
1.2.20 Ujistěte se, že --audit-log-maxbackup je argument nastavený na hodnotu 10 nebo podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.21 Ujistěte se, že --audit-log-maxsize je argument nastavený na hodnotu 100 nebo podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.22 Ujistěte se, že --request-timeout je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.23 Ujistěte se, že --service-account-lookup je argument nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
1.2.24 Ujistěte se, že --service-account-key-file je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.25 Ujistěte se, že --etcd-certfile--etcd-keyfile jsou argumenty nastavené podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.26 Ujistěte se, že --tls-cert-file--tls-private-key-file jsou argumenty nastavené podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.27 Ujistěte se, že --client-ca-file je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
1.2.28 Ujistěte se, že --etcd-cafile je argument nastavený podle potřeby. Skóroval L1 Závisí na prostředí.
1.2.29 Ujistěte se, že --encryption-provider-config je argument nastavený podle potřeby. Skóroval L1 Závisí na prostředí.
1.2.30 Ujistěte se, že jsou zprostředkovatelé šifrování správně nakonfigurovaní. Skóroval L1 Závisí na prostředí.
1.2.31 Ujistěte se, že server rozhraní API využívá pouze silné kryptografické šifry. Not Scored L1 Úspěšné absolvování
1.3 Správce kontroleru
1.3.1 Ujistěte se, že --terminated-pod-gc-threshold je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
1.3.2 Ujistěte se, že --profiling je argument nastavený na false. Skóroval L1 Úspěšné absolvování
1.3.3 Ujistěte se, že --use-service-account-credentials je argument nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
1.3.4 Ujistěte se, že --service-account-private-key-file je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
1.3.5 Ujistěte se, že --root-ca-file je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
1.3.6 Ujistěte se, že je argument RotateKubeletServerCertificate nastavený na hodnotu true. Skóroval L2 Neúspěch
1.3.7 Ujistěte se, že --bind-address je argument nastavený na hodnotu 127.0.0.1. Skóroval L1 Ekvivalentní ovládací prvek
1.4 Scheduler
1.4.1 Ujistěte se, že --profiling je argument nastavený na false. Skóroval L1 Úspěšné absolvování
1.4.2 Ujistěte se, že --bind-address je argument nastavený na hodnotu 127.0.0.1. Skóroval L1 Ekvivalentní ovládací prvek
2 etcd
2.1 Ujistěte se, že --cert-file--key-file jsou argumenty nastavené podle potřeby. Skóroval L1 Úspěšné absolvování
2,2 Ujistěte se, že --client-cert-auth je argument nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
2.3 Ujistěte se, že --auto-tls argument není nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
2,4 Ujistěte se, že --peer-cert-file--peer-key-file jsou argumenty nastavené podle potřeby. Skóroval L1 Úspěšné absolvování
2.5 Ujistěte se, že --peer-client-cert-auth je argument nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
2.6 Ujistěte se, že --peer-auto-tls argument není nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
2.7 Ujistěte se, že se pro atd. používá jedinečná certifikační autorita. Not Scored L2 Úspěšné absolvování
3 Konfigurace řídicí roviny
3.1 Ověřování a autorizace
3.1.1 Ověřování klientských certifikátů by se nemělo používat pro uživatele. Not Scored L2 Úspěšné absolvování
3.1.2 Ověřování tokenu účtu služby by se nemělo používat pro uživatele. Not Scored L2 Úspěšné absolvování
3.1.3 Ověřování pomocí tokenu Bootstrap by se nemělo používat pro uživatele. Not Scored L2 Úspěšné absolvování
3.2 Protokolování
3.2.1 Ujistěte se, že se vytvoří minimální zásada auditu. Skóroval L1 Úspěšné absolvování
3.2.2 Ujistěte se, že zásady auditu pokrývají klíčové aspekty zabezpečení. Not Scored L2 Úspěšné absolvování
4 Pracovní uzly
4.1 Konfigurační soubory pracovních uzlů
4.1.1 Ujistěte se, že jsou oprávnění souboru služby kubelet nastavená na 600 nebo více omezující. Skóroval L1 Úspěšné absolvování
4.1.2 Ujistěte se, že je vlastnictví souboru služby kubelet nastavené na root:root. Skóroval L1 Úspěšné absolvování
4.1.3 Pokud existuje soubor kubeconfig proxy serveru, ujistěte se, že jsou oprávnění nastavená na 600 nebo více omezující. Skóroval L1
4.1.4 Pokud existuje soubor kubeconfig proxy serveru, ujistěte se, že je vlastnictví nastavené na root:root. Skóroval L1
4.1.5 Ujistěte se, že --kubeconfig jsou oprávnění souboru kubelet.conf nastavená na 600 nebo více omezující. Skóroval L1 Úspěšné absolvování
4.1.6 Ujistěte se, že --kubeconfig je vlastnictví souboru kubelet.conf nastavené na root:root. Skóroval L1 Úspěšné absolvování
4.1.7 Ujistěte se, že jsou oprávnění k souborům certifikačních autorit nastavená na 600 nebo více omezující. Skóroval L1 Úspěšné absolvování
4.1.8 Ujistěte se, že je vlastnictví souboru certifikačních autorit klienta nastavené na root:root. Skóroval L1 Úspěšné absolvování
4.1.9 Pokud se používá konfigurační soubor kubelet config.yaml, ujistěte se, že jsou oprávnění nastavená na 600 nebo více omezující. Skóroval L1 Úspěšné absolvování
4.1.10 Pokud se používá konfigurační soubor kubelet config.yaml, ujistěte se, že je vlastnictví souboru nastavené na root:root. Skóroval L1 Úspěšné absolvování
4.2 Kubelet
4.2.1 Ujistěte se, že --anonymous-auth je argument nastavený na false. Skóroval L1 Úspěšné absolvování
4.2.2 Ujistěte se, že --authorization-mode argument není nastavený na AlwaysAllow. Skóroval L1 Úspěšné absolvování
4.2.3 Ujistěte se, že --client-ca-file je argument nastavený podle potřeby. Skóroval L1 Úspěšné absolvování
4.2.4 Ujistěte se, že --read-only-port je argument nastavený na hodnotu 0. Skóroval L1 Úspěšné absolvování
4.2.5 Ujistěte se, že --streaming-connection-idle-timeout argument není nastavený na hodnotu 0. Skóroval L1 Úspěšné absolvování
4.2.6 Ujistěte se, že --protect-kernel-defaults je argument nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
4.2.7 Ujistěte se, že --make-iptables-util-chains je argument nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
4.2.8 Ujistěte se, že --hostname-override argument není nastavený. Not Scored L1 Úspěšné absolvování
4.2.9 Ujistěte se, že je argument eventRecordQPS nastavený na úroveň, která zajišťuje odpovídající zachytávání událostí. Not Scored L2 Úspěšné absolvování
4.2.10 Ujistěte se, že --tls-cert-file--tls-private-key-file jsou argumenty nastavené podle potřeby. Skóroval L1 Úspěšné absolvování
4.2.11 Ujistěte se, že --rotate-certificates argument není nastavený na false. Skóroval L1 Úspěšné absolvování
4.2.12 Ujistěte se, že je argument RotateKubeletServerCertificate nastavený na hodnotu true. Skóroval L1 Úspěšné absolvování
4.2.13 Ujistěte se, že Kubelet využívá pouze silné kryptografické šifry. Not Scored L1 Úspěšné absolvování
5 Zásady
5,1 Účty RBAC a služby
5.1.1 Ujistěte se, že se role správce clusteru používá jenom v případě potřeby. Not Scored L1 Závisí na prostředí.
5.1.2 Minimalizace přístupu k tajným kódům Not Scored L1 Závisí na prostředí.
5.1.3 Minimalizace použití zástupných znaků v rolích a rolích clusteru Not Scored L1 Závisí na prostředí.
5.1.4 Minimalizace přístupu k vytváření podů Not Scored L1 Závisí na prostředí.
5.1.5 Ujistěte se, že se aktivně nepoužívají výchozí účty služeb. Skóroval L1 Závisí na prostředí.
5.1.6 Ujistěte se, že jsou tokeny účtu služby připojené pouze v případě potřeby. Not Scored L1 Závisí na prostředí.
5.1.7 Vyhněte se použití skupiny system:master Not Scored L1 Závisí na prostředí.
5.1.8 Omezení použití oprávnění Bind, Impersonate a Escalate v clusteru Kubernetes Not Scored L1 Závisí na prostředí.
5.1.9 Minimalizace přístupu k vytváření trvalých svazků Not Scored L1 Závisí na prostředí.
5.1.10 Minimalizace přístupu k dílčímu prostředku proxy uzlů Not Scored L1 Závisí na prostředí.
5.1.11 Minimalizace přístupu k dílčímu prostředku schválení objektů certificatesigningrequests Not Scored L1 Závisí na prostředí.
5.1.12 Minimalizace přístupu k objektům konfigurace webhooku Not Scored L1 Závisí na prostředí.
5.1.13 Minimalizace přístupu k vytvoření tokenu účtu služby Not Scored L1 Závisí na prostředí.
5.2 Zásady zabezpečení podů
5.2.1 Ujistěte se, že cluster má alespoň jeden aktivní mechanismus řízení zásad. Not Scored L1 Závisí na prostředí.
5.2.2 Minimalizace přístupu privilegovaných kontejnerů Not Scored L1 Závisí na prostředí.
5.2.3 Minimalizace přístupu kontejnerů, které chtějí sdílet obor názvů ID procesu hostitele Skóroval L1 Závisí na prostředí.
5.2.4 Minimalizace přístupu kontejnerů, které chtějí sdílet obor názvů IPC hostitele Skóroval L1 Závisí na prostředí.
5.2.5 Minimalizace přístupu kontejnerů, které chtějí sdílet obor názvů hostitelské sítě Skóroval L1 Závisí na prostředí.
5.2.6 Minimalizace přístupu kontejnerů pomocí allowPrivilegeEscalation Skóroval L1 Závisí na prostředí.
5.2.6 Minimalizace přístupu kořenových kontejnerů Not Scored L2 Závisí na prostředí.
5.2.7 Minimalizace přístupu kontejnerů s využitím funkce NET_RAW Not Scored L1 Závisí na prostředí.
5.2.8 Minimalizace přístupu kontejnerů s přidanými funkcemi Not Scored L1 Závisí na prostředí.
5.2.9 Minimalizace přístupu kontejnerů s přiřazenými možnostmi Not Scored L1 Závisí na prostředí.
5.2.10 Minimalizace přístupu kontejnerů s přiřazenými možnostmi Not Scored L2
5.2.11 Minimalizace přístupu kontejnerů Windows HostProcess Not Scored L1 Závisí na prostředí.
5.2.12 Minimalizace přístupu svazků HostPath Not Scored L1 Závisí na prostředí.
5.2.13 Minimalizace přístupu kontejnerů, které používají HostPorts Not Scored L1 Závisí na prostředí.
5.3 Zásady sítě a CNI
5.3.1 Ujistěte se, že CNI používané podporuje zásady sítě. Not Scored L1 Úspěšné absolvování
5.3.2 Ujistěte se, že všechny obory názvů mají definované zásady sítě. Skóroval L2 Závisí na prostředí.
5.4 Správa tajných kódů
5.4.1 Preferujete použití tajných kódů jako souborů před tajnými kódy jako proměnných prostředí. Not Scored L1 Závisí na prostředí.
5.4.2 Zvažte externí úložiště tajných kódů. Not Scored L2 Závisí na prostředí.
5.5 Rozšiřitelné řízení přístupu
5.5.1 Konfigurace image Provenance pomocí kontroleru přístupu ImagePolicyWebhook Not Scored L2 Neúspěch
5.7 Obecné zásady
5.7.1 Vytváření hranic správy mezi prostředky pomocí oborů názvů Not Scored L1 Závisí na prostředí.
5.7.2 Ujistěte se, že je profil seccomp nastavený na docker/default v definicích podů. Not Scored L2 Závisí na prostředí.
5.7.3 Použití kontextu zabezpečení u podů a kontejnerů Not Scored L2 Závisí na prostředí.
5.7.4 Výchozí obor názvů by neměl být použit. Skóroval L2 Závisí na prostředí.

Poznámka:

Kromě srovnávacího testu CIS Kubernetes je k dispozici také srovnávací test AKS CIS.

Další poznámky

  • Zabezpečení posíleného operačního systému je vytvořené a udržované speciálně pro AKS a není podporováno mimo platformu AKS.
  • Kvůli dalšímu omezení prostoru pro útok byly v operačním systému zakázány některé nepotřebné ovladače modulu jádra.

Další kroky

Další informace o zabezpečení AKS najdete v následujících článcích: