Srovnávací test Kubernetes cis (Center for Internet Security)
Jako zabezpečená služba je Azure Kubernetes Service (AKS) v souladu se standardy SOC, ISO, PCI DSS a HIPAA. Tento článek se zabývá zabezpečením, které se používá pro 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 v Azure Kubernetes Service (AKS). Další informace o srovnávacím testu CIS najdete v tématu Srovnávací testy CIS (Center for Internet Security).
Srovnávací test CIS pro Kubernetes
Toto jsou výsledky doporučení srovnávacího testu CIS Kubernetes V1.20 v1.0.0 v AKS.
Doporučení se skóre ovlivňují skóre srovnávacího testu, pokud nejsou použita, zatímco doporučení not scored ne.
Srovnávací testy CIS poskytují dvě úrovně nastavení zabezpečení:
- L1 nebo level 1 doporučuje základní požadavky na zabezpečení, které je možné nakonfigurovat v libovolném systému a které by měly způsobit minimální nebo žádné přerušení služeb nebo snížení funkčnosti.
- L2 nebo level 2 doporučuje nastavení zabezpečení pro prostředí vyžadující vyšší zabezpečení, které by mohlo vést k omezené funkčnosti.
Recommendations může mít jeden z následujících stavů:
- Pass – doporučení se použilo.
- Selhání – Doporučení nebylo použito.
- Není k dispozici – Doporučení se týká požadavků na oprávnění k souboru manifestu, které nejsou relevantní pro AKS. 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, aby tyto soubory musely mít určité požadavky na oprávnění. Clustery AKS používají chart Helm k nasazení podů řídicí roviny a nespoléhají na soubory na virtuálním počítači uzlu.
- Závisí na prostředí – doporučení se použije v prostředí specifickém pro uživatele a AKS ho neřízeného. Doporučení se skóre ovlivňují skóre srovnávacího testu bez ohledu na to, jestli se doporučení vztahuje na konkrétní prostředí uživatele.
- Ekvivalentní ovládací prvek – doporučení bylo implementováno jiným, ekvivalentním způsobem.
CIS ID | Popis doporučení | Typ bodování | Level | Status |
---|---|---|---|---|
1 | Komponenty řídicí roviny | |||
1.1 | Konfigurační soubory uzlu řídicí roviny | |||
1.1.1 | Ujistěte se, že jsou oprávnění souboru se specifikací podu serveru rozhraní API nastavená na hodnotu 644 nebo více omezující. | Skóroval | L1 | – |
1.1.2 | Ujistěte se, že vlastnictví souboru specifikace podu serveru rozhraní API je 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 hodnotu 644 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 hodnotu 644 nebo více omezující. | Skóroval | L1 | – |
1.1.6 | Ujistěte se, že vlastnictví souboru specifikace podu plánovače je nastavené na root:root. | Skóroval | L1 | – |
1.1.7 | Ujistěte se, že jsou oprávnění souboru specifikace podu etcd nastavená na hodnotu 644 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í Container Network Interface nastavená na hodnotu 644 nebo více omezující. | Not Scored | L1 | – |
1.1.10 | Ujistěte se, že je vlastnictví souboru síťového rozhraní kontejneru nastavené na root:root. | Not Scored | L1 | – |
1.1.11 | Ujistěte se, že jsou oprávnění adresáře dat etcd nastavená na hodnotu 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í k souboru admin.conf nastavená na hodnotu 644 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 oprávnění k souboru Scheduler. conf jsou nastavená na 644 nebo více omezující. | Skóre | L1 | – |
1.1.16 | Zajistěte, aby vlastnictví souboru Scheduler. conf bylo nastaveno na kořen: root | Skóre | L1 | – |
1.1.17 | Ujistěte se, že oprávnění správce kontroleru. conf jsou nastavená na 644 nebo více omezující. | Skóre | L1 | – |
1.1.18 | Zajistěte, aby vlastnictví souboru Controller-Manager. conf bylo nastaveno na kořen: root | Skóre | L1 | – |
1.1.19 | Zajistěte, aby byl adresář a vlastnictví PKI Kubernetes nastavené na kořen: root. | Skóre | L1 | – |
1.1.20 | Ujistěte se, že oprávnění pro soubor certifikátu PKI Kubernetes jsou nastavená na 644 nebo více omezující. | Skóre | L1 | – |
1.1.21 | Ujistěte se, že oprávnění klíčového souboru PKI Kubernetes jsou nastavená na 600. | Skóre | L1 | – |
1.2 | Server API | |||
1.2.1 | Zajistěte, aby --anonymous-auth byl argument nastaven na hodnotu false. |
Nehodnoceno | L1 | Úspěšné absolvování |
1.2.2 | Ujistěte se, že --basic-auth-file argument není nastaven. |
Skóre | L1 | Úspěšné absolvování |
1.2.3 | Ujistěte se, že --token-auth-file parametr není nastaven. |
Skóre | L1 | Neúspěch |
1.2.4 | Zajistěte, aby --kubelet-https byl argument nastaven na hodnotu true. |
Skóre | L1 | Ekvivalentní ovládací prvek |
1.2.5 | Zajistěte, aby --kubelet-client-certificate byly argumenty a --kubelet-client-key nastaveny jako vhodné. |
Skóre | L1 | Úspěšné absolvování |
1.2.6 | Zajistěte, aby --kubelet-certificate-authority byl argument nastaven jako vhodný. |
Skóre | L1 | Ekvivalentní ovládací prvek |
1.2.7 | Zajistěte, --authorization-mode aby argument nebyl nastaven na AlwaysAllow. |
Skóre | L1 | Úspěšné absolvování |
1.2.8 | Ujistěte se, že --authorization-mode argument obsahuje uzel. |
Skóre | L1 | Úspěšné absolvování |
1.2.9 | Ujistěte se, že --authorization-mode argument zahrnuje RBAC. |
Skóre | L1 | Úspěšné absolvování |
1.2.10 | Ujistěte se, že je nastavený modul plug-in pro přijímání EventRateLimit. | Nehodnoceno | L1 | Neúspěch |
1.2.11 | Ujistěte se, že AlwaysAdmit není nastavený modul plug-in pro přístup k řízení přístupu. | Skóre | L1 | Úspěšné absolvování |
1.2.12 | Ujistěte se, že je nastavený modul plug-in pro přijímání AlwaysPullImages. | Nehodnoceno | L1 | Neúspěch |
1.2.13 | Zajistěte, aby se SecurityContextDeny modul plug-in pro Admission Control, pokud se PodSecurityPolicy nepoužívá. | Nehodnoceno | L1 | Neúspěch |
1.2.14 | Ujistěte se, že je nastavený modul plug-in pro přijímání ServiceAccount. | Skóre | L1 | Úspěšné absolvování |
1.2.15 | Ujistěte se, že je nastavený modul plug-in pro přijímání NamespaceLifecycle. | Skóre | L1 | Úspěšné absolvování |
1.2.16 | Ujistěte se, že je nastavený modul plug-in pro přijímání PodSecurityPolicy. | Skóre | L1 | Neúspěch |
1.2.17 | Ujistěte se, že je nastavený modul plug-in pro přijímání NodeRestriction. | Skóre | L1 | Neúspěch |
1.2.18 | Ujistěte se, že --insecure-bind-address argument není nastaven. |
Skóre | L1 | Neúspěch |
1.2.19 | Zajistěte, aby --insecure-port byl argument nastaven na hodnotu 0. |
Skóre | L1 | Úspěšné absolvování |
1.2.20 | Zajistěte, --secure-port aby argument nebyl nastaven na hodnotu 0. |
Skóre | L1 | Úspěšné absolvování |
1.2.21 | Zajistěte, aby --profiling byl argument nastaven na hodnotu false. |
Skóre | L1 | Úspěšné absolvování |
1.2.22 | Ujistěte se, že --audit-log-path je argument nastavený. |
Skóre | L1 | Úspěšné absolvování |
1.2.23 | Zajistěte, aby --audit-log-maxage byl argument nastaven na hodnotu 30 nebo podle potřeby. |
Skóre | L1 | Ekvivalentní ovládací prvek |
1.2.24 | Zajistěte, aby --audit-log-maxbackup byl argument nastavený na hodnotu 10, nebo podle potřeby. |
Skóre | L1 | Ekvivalentní ovládací prvek |
1.2.25 | Zajistěte, aby --audit-log-maxsize byl argument nastavený na 100, nebo podle potřeby. |
Skóre | L1 | Úspěšné absolvování |
1.2.26 | Zajistěte, aby --request-timeout byl argument nastaven jako vhodný. |
Skóre | L1 | Úspěšné absolvování |
1.2.27 | Zajistěte, aby --service-account-lookup byl argument nastaven na hodnotu true. |
Skóre | L1 | Úspěšné absolvování |
1.2.28 | Zajistěte, aby --service-account-key-file byl argument nastaven jako vhodný. |
Skóre | L1 | Úspěšné absolvování |
1.2.29 | Zajistěte, aby --etcd-certfile byly argumenty a --etcd-keyfile nastaveny jako vhodné. |
Skóre | L1 | Úspěšné absolvování |
1.2.30 | Zajistěte, aby --tls-cert-file byly argumenty a --tls-private-key-file nastaveny jako vhodné. |
Skóre | L1 | Úspěšné absolvování |
1.2.31 | Zajistěte, aby --client-ca-file byl argument nastaven jako vhodný. |
Skóre | L1 | Úspěšné absolvování |
1.2.32 | Zajistěte, aby --etcd-cafile byl argument nastaven jako vhodný. |
Skóre | L1 | Úspěšné absolvování |
1.2.33 | Ujistěte se, že --encryption-provider-config je argument nastavený podle potřeby. |
Skóroval | L1 | Neúspěch |
1.2.34 | Ujistěte se, že jsou správně nakonfigurovaní poskytovatelé šifrování. | Skóroval | L1 | Neúspěch |
1.2.35 | Ujistěte se, že server rozhraní API využívá jenom 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 hodnotu 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 | Úspěšné absolvování |
1.3.7 | Ujistěte se --bind-address , že je argument nastavený na hodnotu 127.0.0.1. |
Skóroval | L1 | Neúspěch |
1.4 | Scheduler | |||
1.4.1 | Ujistěte se, že --profiling je argument nastavený na hodnotu false. |
Skóroval | L1 | Úspěšné absolvování |
1.4.2 | Ujistěte se --bind-address , že je argument nastavený na hodnotu 127.0.0.1. |
Skóroval | L1 | Neúspěch |
2 | etcd | |||
2.1 | Ujistěte se, že --cert-file --key-file jsou argumenty a nastavené odpovídajícím způsobem. |
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 a nastavené odpovídajícím způsobem. |
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ým certifikátem 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řily minimální zásady auditu. | Skóroval | L1 | Úspěšné absolvování |
3.2.2 | Ujistěte se, že zásady auditu pokrývají klíčové otázky zabezpečení. | Not Scored | L2 | Úspěšné absolvování |
4 | Pracovní uzly | |||
4.1 | Konfigurační soubory pracovního uzlu | |||
4.1.1 | Ujistěte se, že jsou oprávnění k souboru služby kubelet nastavená na hodnotu 644 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 | Ujistěte se, že jsou oprávnění k souboru kubeconfig proxy serveru nastavená na hodnotu 644 nebo více omezující. | Skóroval | L1 | Úspěšné absolvování |
4.1.4 | Ujistěte se, že je vlastnictví souboru kubeconfig proxy serveru nastavené na root:root. | Skóroval | L1 | Úspěšné absolvování |
4.1.5 | Ujistěte se, že jsou oprávnění k souboru kubelet.conf nastavená na hodnotu 644 nebo více omezující. | Skóroval | L1 | Úspěšné absolvování |
4.1.6 | Ujistěte se, že 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 hodnotu 644 nebo více omezující. | Skóroval | L1 | Úspěšné absolvování |
4.1.8 | Ujistěte se, že vlastnictví souboru klientských certifikačních autorit je nastavené na root:root. | Skóroval | L1 | Úspěšné absolvování |
4.1.9 | Ujistěte se, že konfigurační soubor kubelet má oprávnění nastavená na hodnotu 644 nebo více omezující. | Skóroval | L1 | Úspěšné absolvování |
4.1.10 | Ujistěte se, že je vlastnictví konfiguračního souboru kubelet 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 hodnotu 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 --streaming-connection-idle-timeout , že argument není nastavený na hodnotu 0. |
Skóroval | L1 | Úspěšné absolvování |
4.2.6 | Zajistěte, aby --protect-kernel-defaults byl argument nastaven na hodnotu true. |
Skóre | L1 | Úspěšné absolvování |
4.2.7 | Zajistěte, aby --make-iptables-util-chains byl argument nastaven na hodnotu true. |
Skóre | L1 | Úspěšné absolvování |
4.2.8 | Ujistěte se, že --hostname-override argument není nastaven. |
Nehodnoceno | L1 | Úspěšné absolvování |
4.2.9 | Zajistěte, aby --event-qps byl argument nastavený na hodnotu 0, nebo na úroveň, která zajišťuje příslušné zachytávání událostí. |
Nehodnoceno | Paměť | Úspěšné absolvování |
4.2.10 | Zajistěte, aby --tls-cert-file byly argumenty a --tls-private-key-file nastaveny jako vhodné. |
Skóre | L1 | Ekvivalentní ovládací prvek |
4.2.11 | Zajistěte, aby --rotate-certificates argument nebyl nastaven na hodnotu false. |
Skóre | L1 | Úspěšné absolvování |
4.2.12 | Zajistěte, aby byl argument RotateKubeletServerCertificate nastaven na hodnotu true. | Skóre | L1 | Úspěšné absolvování |
4.2.13 | Ujistěte se, že Kubelet využívá pouze silné kryptografické šifry. | Nehodnoceno | L1 | Úspěšné absolvování |
5 | Zásady | |||
5,1 | RBAC a účty služeb | |||
bodů | Zajistěte, aby se role Správce clusteru použila jenom tam, kde je to potřeba. | Nehodnoceno | L1 | Závisí na prostředí |
5.1.2 | Minimalizace přístupu k tajným klíčům | Nehodnoceno | L1 | Závisí na prostředí |
5.1.3 | Minimalizace použití zástupného znaku v rolích a ClusterRoles | Nehodnoceno | L1 | Závisí na prostředí |
5.1.4 | Minimalizace přístupu k vytvoření lusků | Nehodnoceno | L1 | Závisí na prostředí |
5.1.5 | Ujistěte se, že nejsou aktivně používány výchozí účty služeb. | Skóre | L1 | Závisí na prostředí |
5.1.6 | Zajistěte, aby tokeny účtu služby byly připojeny pouze v případě potřeby. | Nehodnoceno | L1 | Závisí na prostředí |
5.2 | Zásady zabezpečení pod | |||
akustick | Minimalizace přístupu privilegovaných kontejnerů | Nehodnoceno | L1 | Závisí na prostředí |
5.2.2 | Minimalizace přístupu kontejnerů, které chtějí sdílet obor názvů hostitelského procesu | Skóre | L1 | Závisí na prostředí |
5.2.3 | Minimalizace přístupu kontejnerů, které chtějí sdílet obor názvů hostitele IPC | Skóre | L1 | Závisí na prostředí |
5.2.4 | Minimalizace přístupu kontejnerů, které chtějí sdílet obor názvů hostitele v síti | Skóre | L1 | Závisí na prostředí |
5.2.5 | Minimalizace přístupu ke kontejnerům pomocí allowPrivilegeEscalation | Skóroval | L1 | Závisí na prostředí |
5.2.6 | Minimalizace přístupu ke kořenovým kontejnerům | Not Scored | L2 | Závisí na prostředí |
5.2.7 | Minimalizace přístupu ke kontejnerům s NET_RAW funkcí | Not Scored | L1 | Závisí na prostředí |
5.2.8 | Minimalizace přístupu ke kontejnerům s přidanou možností | Not Scored | L1 | Závisí na prostředí |
5.2.9 | Minimalizace přístupu ke kontejnerům s přiřazenými možnostmi | Not Scored | L2 | Závisí na prostředí |
5.3 | Zásady sítě a CNI | |||
5.3.1 | Ujistěte se, že používejte CNI, který 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ými prostředí. | Not Scored | L1 | Závisí na prostředí |
5.4.2 | Zvážení externího tajného úložiště | Not Scored | L2 | Závisí na prostředí |
5.5 | Rozšiřitelné řízení přístupu | |||
5.5.1 | Konfigurace původu obrázků pomocí kontroleru přístupu ImagePolicyWebhook | Not Scored | L2 | Závisí na prostředí |
5.6 | Obecné zásady | |||
5.6.1 | Vytvoření hranic správy mezi prostředky pomocí oborů názvů | Not Scored | L1 | Závisí na prostředí |
5.6.2 | Ujistěte se, že je profil seccomp v definicích podů nastavený na docker/default. | Not Scored | L2 | Závisí na prostředí |
5.6.3 | Použití kontextu zabezpečení na pody a kontejnery | Not Scored | L2 | Závisí na prostředí |
5.6.4 | Výchozí obor názvů by se neměl používat. | 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
- Operační systém s lepším zabezpečením je sestavený a udržovaný speciálně pro AKS a není podporován mimo platformu AKS.
- Pro další omezení prostoru pro útoky 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: