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:
Azure Kubernetes Service