Share via


Center for Internet Security (CIS) Kubernetes benchmark

Biztonságos szolgáltatásként az Azure Kubernetes Service (AKS) megfelel az SOC, az ISO, a PCI DSS és a HIPAA szabványnak. Ez a cikk az AKS-hez a CIS Kubernetes-teljesítményteszt alapján alkalmazott biztonsági korlátozásokat ismerteti. Az AKS biztonságával kapcsolatos további információkért tekintse meg az Azure Kubernetes Service (AKS) alkalmazásainak és fürtjeinek biztonsági alapelveit. A CIS-referenciamutatóval kapcsolatos további információkért lásd : Center for Internet Security (CIS) Benchmarks.

Kubernetes CIS-teljesítményteszt

Az alábbiakban a CIS Kubernetes V1.27 Benchmark v1.8.0 AKS-sel kapcsolatos javaslatainak eredményeit mutatjuk be. Az eredmények az AKS 1.21.x és az AKS 1.27.x között érvényesek.

A pontozott javaslatok akkor befolyásolják a teljesítményteszt pontszámát, ha nincsenek alkalmazva, míg a nem pontozott javaslatok nem.

A CIS-teljesítménytesztek két biztonsági szintet biztosítanak:

  • Az L1 vagy az 1. szint olyan alapvető biztonsági követelményeket javasol, amelyek bármely rendszeren konfigurálhatók, és a szolgáltatás vagy a funkciók minimális vagy egyáltalán nem zavarhatók.
  • Az L2 vagy a 2. szint olyan környezetek biztonsági beállításait javasolja, amelyek nagyobb biztonságot igényelnek, ami bizonyos funkciók csökkenését eredményezheti.

Javaslatok az alábbi állapotok egyikével rendelkezhet:

  • Pass – A javaslat alkalmazása megtörtént.
  • Sikertelen – A javaslat nem lett alkalmazva.
  • N/A – A javaslat olyan jegyzékfájl-engedélykövetelményekre vonatkozik, amelyek nem relevánsak az AKS-hez. A Kubernetes-fürtök alapértelmezés szerint jegyzékmodellt használnak a vezérlősík podjainak üzembe helyezéséhez, amelyek a csomópont virtuális gép fájljaira támaszkodnak. A CIS Kubernetes-teljesítményteszt azt javasolja, hogy ezeknek a fájloknak bizonyos engedélykövetelményekkel kell rendelkezniük. Az AKS-fürtök Helm-diagramot használnak a vezérlősík podjainak üzembe helyezéséhez, és nem támaszkodnak a csomópont virtuális gép fájljaira.
  • A környezettől függ – A javaslat a felhasználó adott környezetében van alkalmazva, és az AKS nem szabályozza. A pontozott javaslatok befolyásolják a teljesítményteszt pontszámát, függetlenül attól, hogy a javaslat a felhasználó adott környezetére vonatkozik-e.
  • Egyenértékű ellenőrzés – A javaslat más, egyenértékű módon lett implementálva.
CIS-azonosító Javaslat leírása Pontozás típusa Level Állapot
0 Vezérlősík összetevői
1,1 Vezérlősíkcsomópont konfigurációs fájljai
1.1.1 Győződjön meg arról, hogy az API-kiszolgáló pod-specifikációjának fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.2 Győződjön meg arról, hogy az API-kiszolgáló podspecifikációs fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.3 Győződjön meg arról, hogy a vezérlőkezelő podjának specifikációs fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.4 Győződjön meg arról, hogy a vezérlőkezelő pod-specifikációs fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.5 Győződjön meg arról, hogy az ütemező pod specifikációjának fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.6 Győződjön meg arról, hogy az ütemező pod specifikációs fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.7 Győződjön meg arról, hogy az etcd pod specifikációs fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.8 Győződjön meg arról, hogy az etcd pod specifikációs fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.9 Győződjön meg arról, hogy a Tároló hálózati adapter fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Nincs pontszám L1 n/a
1.1.10 Győződjön meg arról, hogy a Container Network Interface fájl tulajdonjoga root:root értékre van állítva Nincs pontszám L1 n/a
1.1.11 Győződjön meg arról, hogy az etcd adatkönyvtár engedélyei 700-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.12 Győződjön meg arról, hogy az etcd adatkönyvtár tulajdonjoga etcd:etcd értékre van állítva Pontozott L1 n/a
1.1.13 Győződjön meg arról, hogy a rendszergazda.conf fájlengedélyek 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.14 Győződjön meg arról, hogy a rendszergazda.conf fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.15 Győződjön meg arról, hogy a scheduler.conf fájlengedélyek 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.16 Győződjön meg arról, hogy a scheduler.conf fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.17 Győződjön meg arról, hogy a controller-manager.conf fájlengedélyek 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.18 Győződjön meg arról, hogy a controller-manager.conf fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.19 Győződjön meg arról, hogy a Kubernetes PKI-címtár és a fájl tulajdonjoga root:root értékre van állítva Pontozott L1 n/a
1.1.20 Győződjön meg arról, hogy a Kubernetes PKI tanúsítványfájl-engedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
1.1.21 Győződjön meg arról, hogy a Kubernetes PKI kulcsfájl-engedélyei 600-ra vannak állítva Pontozott L1 n/a
1,2 API-kiszolgáló
1.2.1 Győződjön meg arról, hogy az --anonymous-auth argumentum értéke hamis Nincs pontszám L1 Sikeres
1.2.2 Győződjön meg arról, hogy a --token-auth-file paraméter nincs beállítva Pontozott L1 Sikertelen
1.2.3 Győződjön meg arról, hogy nincs --DenyServiceExternalIPs beállítva Pontozott L1 Sikertelen
1.2.4 Győződjön meg arról, hogy az és --kubelet-client-key az --kubelet-client-certificate argumentumok a megfelelő módon vannak beállítva Pontozott L1 Sikeres
1.2.5 Győződjön meg arról, hogy az --kubelet-certificate-authority argumentum megfelelően van beállítva Pontozott L1 Sikertelen
1.2.6 Győződjön meg arról, hogy az --authorization-mode argumentum nincs AlwaysAllow értékre állítva Pontozott L1 Sikeres
1.2.7 Győződjön meg arról, hogy az argumentum tartalmazza a --authorization-mode Csomópontot Pontozott L1 Sikeres
1.2.8 Győződjön meg arról, hogy az argumentum tartalmazza az --authorization-mode RBAC-t Pontozott L1 Sikeres
1.2.9 Győződjön meg arról, hogy az EventRateLimit beléptető beépülő modul be van állítva Nincs pontszám L1 Sikertelen
1.2.10 Győződjön meg arról, hogy az AlwaysAdmit beléptető beépülő modul nincs beállítva Pontozott L1 Sikeres
1.2.11 Győződjön meg arról, hogy az AlwaysPullImages beléptető beépülő modul be van állítva Nincs pontszám L1 Sikertelen
1.2.12 Győződjön meg arról, hogy a SecurityContextDeny beléptető beépülő modul be van állítva, ha a PodSecurityPolicy nincs használatban Nincs pontszám L1 Sikertelen
1.2.13 Győződjön meg arról, hogy a ServiceAccount beléptető beépülő modul be van állítva Pontozott L1 Sikeres
1.2.14 Győződjön meg arról, hogy a NamespaceLifecycle beléptető beépülő modul be van állítva Pontozott L1 Sikeres
1.2.15 Győződjön meg arról, hogy a NodeRestriction beléptető beépülő modul be van állítva Pontozott L1 Sikeres
1.2.16 Győződjön meg arról, hogy az --secure-port argumentum értéke nem 0 Pontozott L1 Sikeres
1.2.17 Győződjön meg arról, hogy az --profiling argumentum értéke hamis Pontozott L1 Sikeres
1.2.18 Győződjön meg arról, hogy az --audit-log-path argumentum be van állítva Pontozott L1 Egyenértékű vezérlő
1.2.19 Győződjön meg arról, hogy az --audit-log-maxage argumentum értéke 30 vagy megfelelő Pontozott L1 Egyenértékű vezérlő
1.2.20 Győződjön meg arról, hogy az --audit-log-maxbackup argumentum értéke 10 vagy megfelelő Pontozott L1 Sikeres
1.2.21 Győződjön meg arról, hogy az --audit-log-maxsize argumentum értéke 100 vagy megfelelő Pontozott L1 Sikeres
1.2.22 Győződjön meg arról, hogy az --request-timeout argumentum megfelelően van beállítva Pontozott L1 Sikeres
1.2.23 Győződjön meg arról, hogy az --service-account-lookup argumentum értéke igaz Pontozott L1 Sikeres
1.2.24 Győződjön meg arról, hogy az --service-account-key-file argumentum megfelelően van beállítva Pontozott L1 Sikeres
1.2.25 Győződjön meg arról, hogy az és --etcd-keyfile az --etcd-certfile argumentumok a megfelelő módon vannak beállítva Pontozott L1 Sikeres
1.2.26 Győződjön meg arról, hogy az és --tls-private-key-file az --tls-cert-file argumentumok a megfelelő módon vannak beállítva Pontozott L1 Sikeres
1.2.27 Győződjön meg arról, hogy az --client-ca-file argumentum megfelelően van beállítva Pontozott L1 Sikeres
1.2.28 Győződjön meg arról, hogy az --etcd-cafile argumentum megfelelően van beállítva Pontozott L1 A környezettől függ
1.2.29 Győződjön meg arról, hogy az --encryption-provider-config argumentum megfelelően van beállítva Pontozott L1 A környezettől függ
1.2.30 Győződjön meg arról, hogy a titkosítási szolgáltatók megfelelően vannak konfigurálva Pontozott L1 A környezettől függ
1.2.31 Győződjön meg arról, hogy az API-kiszolgáló csak erős titkosítási titkosítást használ Nincs pontszám L1 Sikeres
1.3 Vezérlőkezelő
1.3.1 Győződjön meg arról, hogy az --terminated-pod-gc-threshold argumentum megfelelően van beállítva Pontozott L1 Sikeres
1.3.2 Győződjön meg arról, hogy az --profiling argumentum értéke hamis Pontozott L1 Sikeres
1.3.3 Győződjön meg arról, hogy az --use-service-account-credentials argumentum értéke igaz Pontozott L1 Sikeres
1.3.4 Győződjön meg arról, hogy az --service-account-private-key-file argumentum megfelelően van beállítva Pontozott L1 Sikeres
1.3.5 Győződjön meg arról, hogy az --root-ca-file argumentum megfelelően van beállítva Pontozott L1 Sikeres
1.3.6 Győződjön meg arról, hogy a RotateKubeletServerCertificate argumentum értéke igaz Pontozott L2 Sikertelen
1.3.7 Győződjön meg arról, hogy az --bind-address argumentum értéke 127.0.0.1 Pontozott L1 Egyenértékű vezérlő
1.4 Scheduler
1.4.1 Győződjön meg arról, hogy az --profiling argumentum értéke hamis Pontozott L1 Sikeres
1.4.2 Győződjön meg arról, hogy az --bind-address argumentum értéke 127.0.0.1 Pontozott L1 Egyenértékű vezérlő
2 etcd
2.1 Győződjön meg arról, hogy az és --key-file az --cert-file argumentumok a megfelelő módon vannak beállítva Pontozott L1 Sikeres
2,2 Győződjön meg arról, hogy az --client-cert-auth argumentum értéke igaz Pontozott L1 Sikeres
2.3 Győződjön meg arról, hogy az --auto-tls argumentum értéke nem igaz Pontozott L1 Sikeres
2,4 Győződjön meg arról, hogy az és --peer-key-file az --peer-cert-file argumentumok a megfelelő módon vannak beállítva Pontozott L1 Sikeres
2,5 Győződjön meg arról, hogy az --peer-client-cert-auth argumentum értéke igaz Pontozott L1 Sikeres
2.6 Győződjön meg arról, hogy az --peer-auto-tls argumentum értéke nem igaz Pontozott L1 Sikeres
2,7 Győződjön meg arról, hogy a rendszer egyedi hitelesítésszolgáltatót használ az etcd-hez Nincs pontszám L2 Sikeres
3 Vezérlősík konfigurálása
3.1 Hitelesítés és engedélyezés
3.1.1 Az ügyféltanúsítvány-hitelesítés nem használható a felhasználók számára Nincs pontszám L2 Sikeres
3.1.2 A szolgáltatásfiók jogkivonatának hitelesítése nem használható a felhasználók számára Nincs pontszám L2 Sikeres
3.1.3 A rendszerindítási jogkivonat hitelesítése nem használható a felhasználók számára Nincs pontszám L2 Sikeres
3.2 Naplózás
3.2.1 Győződjön meg arról, hogy létrejön egy minimális naplózási szabályzat Pontozott L1 Sikeres
3.2.2 Győződjön meg arról, hogy a naplózási szabályzat lefedi a legfontosabb biztonsági problémákat Nincs pontszám L2 Sikeres
4 Munkavégző csomópontok
4.1 Feldolgozó csomópont konfigurációs fájljai
4.1.1 Győződjön meg arról, hogy a Kubelet-szolgáltatás fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 Sikeres
4.1.2 Győződjön meg arról, hogy a Kubelet szolgáltatásfájl tulajdonjoga root:root értékre van állítva Pontozott L1 Sikeres
4.1.3 Ha létezik proxy kubeconfig fájl, győződjön meg arról, hogy az engedélyek 600-ra vagy szigorúbbra vannak állítva Pontozott L1 n/a
4.1.4 Ha létezik proxy kubeconfig fájl, győződjön meg arról, hogy a tulajdonjog root:root értékre van állítva Pontozott L1 n/a
4.1.5 Győződjön meg arról, hogy a --kubeconfig kubelet.conf fájlengedélyek 600-ra vagy szigorúbbra vannak állítva Pontozott L1 Sikeres
4.1.6 Győződjön meg arról, hogy a --kubeconfig kubelet.conf fájl tulajdonjoga root:root értékre van állítva Pontozott L1 Sikeres
4.1.7 Győződjön meg arról, hogy a hitelesítésszolgáltatók fájlengedélyei 600-ra vagy szigorúbbra vannak állítva Pontozott L1 Sikeres
4.1.8 Győződjön meg arról, hogy az ügyféltanúsítvány-hatóságok fájltulajdona root:root értékre van állítva Pontozott L1 Sikeres
4.1.9 Ha a kubelet config.yaml konfigurációs fájlt használja, győződjön meg arról, hogy az engedélyek 600-as vagy szigorúbbak Pontozott L1 Sikeres
4.1.10 Ha a kubelet config.yaml konfigurációs fájlt használja, győződjön meg arról, hogy a fájl tulajdonjoga root:root értékre van állítva Pontozott L1 Sikeres
4.2 Kubelet
4.2.1 Győződjön meg arról, hogy az --anonymous-auth argumentum értéke hamis Pontozott L1 Sikeres
4.2.2 Győződjön meg arról, hogy az --authorization-mode argumentum nincs AlwaysAllow értékre állítva Pontozott L1 Sikeres
4.2.3 Győződjön meg arról, hogy az --client-ca-file argumentum megfelelően van beállítva Pontozott L1 Sikeres
4.2.4 Győződjön meg arról, hogy az --read-only-port argumentum értéke 0 Pontozott L1 Sikeres
4.2.5 Győződjön meg arról, hogy az --streaming-connection-idle-timeout argumentum értéke nem 0 Pontozott L1 Sikeres
4.2.6 Győződjön meg arról, hogy az --protect-kernel-defaults argumentum értéke igaz Pontozott L1 Sikeres
4.2.7 Győződjön meg arról, hogy az --make-iptables-util-chains argumentum értéke igaz Pontozott L1 Sikeres
4.2.8 Győződjön meg arról, hogy az --hostname-override argumentum nincs beállítva Nincs pontszám L1 Sikeres
4.2.9 Győződjön meg arról, hogy az eventRecordQPS argumentum olyan szintre van beállítva, amely biztosítja a megfelelő eseményrögzítést Nincs pontszám L2 Sikeres
4.2.10 Győződjön meg arról, hogy az és --tls-private-key-file az --tls-cert-fileargumentumok a megfelelő módon vannak beállítva Pontozott L1 Sikeres
4.2.11 Győződjön meg arról, hogy az --rotate-certificates argumentum nincs hamis értékre állítva Pontozott L1 Sikeres
4.2.12 Győződjön meg arról, hogy a RotateKubeletServerCertificate argumentum értéke igaz Pontozott L1 Sikeres
4.2.13 Győződjön meg arról, hogy a Kubelet csak erős titkosítási titkosítást használ Nincs pontszám L1 Sikeres
5 Házirendek
5,1 RBAC- és szolgáltatásfiókok
5.1.1 Győződjön meg arról, hogy a fürtadminisztrátori szerepkör csak ott van használatban, ahol szükséges Nincs pontszám L1 A környezettől függ
5.1.2 Titkos kódokhoz való hozzáférés minimalizálása Nincs pontszám L1 A környezettől függ
5.1.3 A helyettesítő karakterek használatának minimalizálása a szerepkörökben és a ClusterRolesben Nincs pontszám L1 A környezettől függ
5.1.4 Podok létrehozásának minimálisra csökkentése Nincs pontszám L1 A környezettől függ
5.1.5 Győződjön meg arról, hogy az alapértelmezett szolgáltatásfiókok nincsenek aktív használatban Pontozott L1 A környezettől függ
5.1.6 Győződjön meg arról, hogy a szolgáltatásfiók-jogkivonatok csak akkor vannak csatlakoztatva, ha szükséges Nincs pontszám L1 A környezettől függ
5.1.7 A system:masters csoport használatának elkerülése Nincs pontszám L1 A környezettől függ
5.1.8 A kötési, megszemélyesítési és eszkalálási engedélyek használatának korlátozása a Kubernetes-fürtben Nincs pontszám L1 A környezettől függ
5.1.9 Állandó kötetek létrehozásához való hozzáférés minimalizálása Nincs pontszám L1 A környezettől függ
5.1.10 A csomópontok proxy-alerőforrásához való hozzáférés minimalizálása Nincs pontszám L1 A környezettől függ
5.1.11 A certificatesigningrequests objektumok jóváhagyási alerőforrásához való hozzáférés minimalizálása Nincs pontszám L1 A környezettől függ
5.1.12 A webhook konfigurációs objektumaihoz való hozzáférés minimalizálása Nincs pontszám L1 A környezettől függ
5.1.13 A szolgáltatásfiók-jogkivonat létrehozásához való hozzáférés minimalizálása Nincs pontszám L1 A környezettől függ
5,2 Pod biztonsági szabályzatai
5.2.1 Győződjön meg arról, hogy a fürt rendelkezik legalább egy aktív házirend-vezérlési mechanizmus használatával Nincs pontszám L1 A környezettől függ
5.2.2 A kiemelt tárolók felvételének minimalizálása Nincs pontszám L1 A környezettől függ
5.2.3 A gazdagépfolyamat-azonosító névterét megosztani kívánó tárolók felvételének minimalizálása Pontozott L1 A környezettől függ
5.2.4 A gazdagép IPC-névterét megosztani kívánó tárolók felvételének minimalizálása Pontozott L1 A környezettől függ
5.2.5 A gazdagép hálózati névterét megosztani kívánó tárolók felvételének minimalizálása Pontozott L1 A környezettől függ
5.2.6 Tárolók beléptetésének minimalizálása az allowPrivilegeEscalation használatával Pontozott L1 A környezettől függ
5.2.6 A gyökértárolók felvételének minimalizálása Nincs pontszám L2 A környezettől függ
5.2.7 A tárolók felvételének minimalizálása a NET_RAW képességgel Nincs pontszám L1 A környezettől függ
5.2.8 Tárolók felvételének minimalizálása hozzáadott képességekkel Nincs pontszám L1 A környezettől függ
5.2.9 Tárolók felvételének minimalizálása hozzárendelt képességekkel Nincs pontszám L1 A környezettől függ
5.2.10 Tárolók felvételének minimalizálása hozzárendelt képességekkel Nincs pontszám L2
5.2.11 A Windows HostProcess-tárolók felvételének minimalizálása Nincs pontszám L1 A környezettől függ
5.2.12 A HostPath-kötetek felvételének minimalizálása Nincs pontszám L1 A környezettől függ
5.2.13 A HostPortsot használó tárolók felvételének minimalizálása Nincs pontszám L1 A környezettől függ
5.3 Hálózati szabályzatok és CNI
5.3.1 Győződjön meg arról, hogy a használatban lévő CNI támogatja a hálózati házirendeket Nincs pontszám L1 Sikeres
5.3.2 Győződjön meg arról, hogy minden névtér rendelkezik definiált hálózati házirendekkel Pontozott L2 A környezettől függ
5,4 Titkos kódok kezelése
5.4.1 A titkos kulcsok használata a titkos kódok helyett környezeti változókként Nincs pontszám L1 A környezettől függ
5.4.2 Fontolja meg a külső titkos kulcsok tárolását Nincs pontszám L2 A környezettől függ
5,5 Bővíthető beléptető vezérlő
5.5.1 Az Image Provenance konfigurálása az ImagePolicyWebhook belépési vezérlővel Nincs pontszám L2 Sikertelen
5.7 Általános szabályzatok
5.7.1 Rendszergazdai határok létrehozása az erőforrások között névterek használatával Nincs pontszám L1 A környezettől függ
5.7.2 Győződjön meg arról, hogy a seccomp profil docker/default értékre van állítva a poddefiníciókban Nincs pontszám L2 A környezettől függ
5.7.3 Biztonsági környezet alkalmazása a podokra és tárolókra Nincs pontszám L2 A környezettől függ
5.7.4 Az alapértelmezett névtér nem használható Pontozott L2 A környezettől függ

Feljegyzés

A Kubernetes CIS-referenciamutató mellett elérhető egy AKS CIS-benchmark is.

További megjegyzések

  • A biztonsági edzett operációs rendszer kifejezetten az AKS-hez készült és karbantartott, és az AKS platformon kívül nem támogatott.
  • A támadási felület további csökkentése érdekében néhány szükségtelen kernelmodul-illesztőprogram le lett tiltva az operációs rendszerben.

Következő lépések

Az AKS biztonságával kapcsolatos további információkért tekintse meg az alábbi cikkeket: