İnternet Güvenliği Merkezi (CIS) Kubernetes karşılaştırması

Azure Kubernetes Service (AKS), güvenli bir hizmet olarak SOC, ISO, PCI DSS ve HIPAA standartlarına uygundur. Bu makale, CIS Kubernetes karşılaştırması temelinde AKS'ye uygulanan güvenlik sağlamlaştırmayı kapsar. AKS güvenliği hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) uygulamalar ve kümeler için güvenlik kavramları. CIS karşılaştırması hakkında daha fazla bilgi için bkz . Internet Güvenliği Merkezi (CIS) Karşılaştırmaları.

Kubernetes CIS karşılaştırması

AKS'de CIS Kubernetes V1.27 Benchmark v1.9.0 önerilerinden elde edilen sonuçlar aşağıdadır. Sonuçlar AKS 1.27.x ile AKS 1.29.x arasında geçerlidir.

Güvenlik düzeyleri

CIS karşılaştırmaları iki güvenlik ayarı düzeyi sağlar:

  • L1 veya Düzey 1, herhangi bir sistemde yapılandırılabilir temel temel güvenlik gereksinimlerini önerir ve hizmette veya azaltılmış işlevsellikte çok az kesintiye veya hiç neden olmamalıdır.
  • L2 veya Düzey 2, daha fazla güvenlik gerektiren ortamlar için güvenlik ayarlarını önerir ve bu da bazı işlevlerin azalmasına neden olabilir.

Değerlendirme durumu

Her öneri için bir değerlendirme durumu eklenir. Değerlendirme durumu, verilen önerinin otomatikleştirilebilir olup olmadığını veya el ile uygulanması gereken adımların gerekip gerekmediğini gösterir. Her iki durum da aynı derecede önemlidir ve aşağıda tanımlandığı gibi belirlenir ve desteklenir:

  • Otomatik: Teknik denetimin değerlendirmesinin tam olarak otomatik hale gelip geçiş/başarısız durumuna doğrulanabileceği önerileri temsil eder. Öneriler, otomasyonu uygulamak için gerekli bilgileri içerir.
  • El ile: Bir teknik denetimin değerlendirmesinin tam olarak otomatik hale getirilemeyeceği ve yapılandırılan durumun beklendiği gibi ayarlandığını doğrulamak için tüm adımların veya bazı el ile adımların gerekli olduğu önerileri temsil eder. Beklenen durum ortama bağlı olarak değişebilir.

Otomatik öneriler uygulanmadıysa karşılaştırma puanını etkilerken El ile öneriler uygulanmaz.

Kanıtlama durumu

Öneriler aşağıdaki kanıtlama durumlarından birine sahip olabilir:

  • Geçiş: Öneri uygulandı.
  • Başarısız: Öneri uygulanmadı.
  • Yok: Öneri, AKS ile ilgili olmayan bildirim dosyası izin gereksinimleriyle ilgilidir. Kubernetes kümeleri varsayılan olarak, düğüm VM'sinden dosyaları kullanan denetim düzlemi podlarını dağıtmak için bir bildirim modeli kullanır. CIS Kubernetes karşılaştırması, bu dosyaların belirli izin gereksinimlerine sahip olması gerektiğini önerir. AKS kümeleri, denetim düzlemi podlarını dağıtmak için Helm grafiği kullanır ve düğüm VM'sindeki dosyalara güvenmez.
  • Ortama bağlıdır: Öneri kullanıcının belirli ortamına uygulanır ve AKS tarafından denetlenmemektedir. Otomatik öneriler, önerinin kullanıcının belirli ortamına uygulanıp uygulanmayacağına bakılmaksızın karşılaştırma puanını etkiler.
  • Eşdeğer Denetim: Öneri farklı, eşdeğer bir şekilde uygulandı.

Karşılaştırma ayrıntıları

CIS Kimliği Öneri açıklaması Değerlendirme durumu Level Durum
1 Denetim Düzlemi Bileşenleri
1.1 Denetim Düzlemi Düğüm Yapılandırma Dosyaları
1.1.1 API sunucusu pod belirtimi dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.2 API sunucusu pod belirtimi dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.3 Denetleyici yöneticisi pod belirtimi dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.4 Denetleyici yöneticisi pod belirtimi dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.5 Zamanlayıcı pod belirtimi dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.6 Zamanlayıcı pod belirtimi dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.7 Etcd pod belirtimi dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.8 Etcd pod belirtimi dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.9 Kapsayıcı Ağ Arabirimi dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun El ile L1 Yok
1.1.10 Kapsayıcı Ağ Arabirimi dosya sahipliğinin root:root olarak ayarlandığından emin olun El ile L1 Yok
1.1.11 Etcd veri dizini izinlerinin 700 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.12 etcd veri dizini sahipliğinin etcd:etcd olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.13 admin.conf dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.14 admin.conf dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.15 scheduler.conf dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.16 scheduler.conf dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.17 controller-manager.conf dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.18 controller-manager.conf dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.19 Kubernetes PKI dizininin ve dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Yok
1.1.20 Kubernetes PKI sertifika dosyası izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun El ile L1 Yok
1.1.21 Kubernetes PKI anahtar dosyası izinlerinin 600 olarak ayarlandığından emin olun El ile L1 Yok
1.2 API Sunucusu
1.2.1 Bağımsız değişkenin --anonymous-auth false olarak ayarlandığından emin olun El ile L1 Başarılı
1.2.2 Parametresinin --token-auth-file ayarlanmadığından emin olun Otomatik L1 Başarısız
1.2.3 Ayarlanmadığından --DenyServiceExternalIPs emin olun El ile L1 Başarısız
1.2.4 --kubelet-client-certificate ve --kubelet-client-key bağımsız değişkenlerinin uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.2.5 Bağımsız değişkenin --kubelet-certificate-authority uygun şekilde ayarlandığından emin olun Otomatik L1 Başarısız
1.2.6 Bağımsız değişkenin --authorization-mode AlwaysAllow olarak ayarlanmadığından emin olun Otomatik L1 Başarılı
1.2.7 Bağımsız değişkenin Node içerdiğinden --authorization-mode emin olun Otomatik L1 Başarılı
1.2.8 Bağımsız değişkeninin RBAC içerdiğinden --authorization-mode emin olun Otomatik L1 Başarılı
1.2.9 EventRateLimit erişim denetimi eklentisinin ayarlandığından emin olun El ile L1 Başarısız
1.2.10 Giriş denetimi eklentisi AlwaysAdmit'in ayarlanmadığından emin olun Otomatik L1 Başarılı
1.2.11 Giriş denetimi eklentisi AlwaysPullImages'ın ayarlandığından emin olun El ile L1 Başarısız
1.2.12 ServiceAccount erişim denetimi eklentisinin ayarlandığından emin olun Otomatik L2 Başarısız
1.2.13 NamespaceLifecycle erişim denetimi eklentisinin ayarlandığından emin olun Otomatik L2 Başarılı
1.2.14 NodeRestriction erişim denetimi eklentisinin ayarlandığından emin olun Otomatik L2 Başarılı
1.2.15 Bağımsız değişkenin --profiling false olarak ayarlandığından emin olun Otomatik L1 Başarılı
1.2.16 Bağımsız değişkenin ayarlandığından --audit-log-path emin olun Otomatik L1 Başarılı
1.2.17 Bağımsız değişkenin --audit-log-maxage 30 veya uygun olarak ayarlandığından emin olun Otomatik L1 Eşdeğer Denetim
1.2.18 Bağımsız değişkenin --audit-log-maxbackup 10 veya uygun olarak ayarlandığından emin olun Otomatik L1 Eşdeğer Denetim
1.2.19 Bağımsız değişkenin --audit-log-maxsize 100 veya uygun olarak ayarlandığından emin olun Otomatik L1 Başarılı
1.2.20 Bağımsız değişkenin --request-timeout uygun şekilde ayarlandığından emin olun El ile L1 Başarılı
1.2.21 Bağımsız değişkenin true olarak ayarlandığından --service-account-lookup emin olun Otomatik L1 Başarılı
1.2.22 Bağımsız değişkenin --service-account-key-file uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.2.23 --etcd-certfile ve --etcd-keyfile bağımsız değişkenlerinin uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.2.24 --tls-cert-file ve --tls-private-key-file bağımsız değişkenlerinin uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.2.25 Bağımsız değişkenin --client-ca-file uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.2.26 Bağımsız değişkenin --etcd-cafile uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.2.27 Bağımsız değişkenin --encryption-provider-config uygun şekilde ayarlandığından emin olun El ile L1 Ortama Bağlıdır
1.2.28 Şifreleme sağlayıcılarının uygun şekilde yapılandırıldığından emin olun El ile L1 Ortama Bağlıdır
1.2.29 API Server'ın yalnızca Güçlü Şifreleme Şifrelemeleri kullandığından emin olun El ile L1 Başarılı
1.3 Denetleyici Yöneticisi
1.3.1 Bağımsız değişkenin --terminated-pod-gc-threshold uygun şekilde ayarlandığından emin olun El ile L1 Başarılı
1.3.2 Bağımsız değişkenin --profiling false olarak ayarlandığından emin olun Otomatik L1 Başarılı
1.3.3 Bağımsız değişkenin true olarak ayarlandığından --use-service-account-credentials emin olun Otomatik L1 Başarılı
1.3.4 Bağımsız değişkenin --service-account-private-key-file uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.3.5 Bağımsız değişkenin --root-ca-file uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
1.3.6 RotateKubeletServerCertificate bağımsız değişkeninin true olarak ayarlandığından emin olun Otomatik L2 Başarılı
1.3.7 Bağımsız değişkenin --bind-address 127.0.0.1 olarak ayarlandığından emin olun Otomatik L1 Eşdeğer Denetim
1.4 Scheduler
1.4.1 Bağımsız değişkenin --profiling false olarak ayarlandığından emin olun Otomatik L1 Başarılı
1.4.2 Bağımsız değişkenin --bind-address 127.0.0.1 olarak ayarlandığından emin olun Otomatik L1 Eşdeğer Denetim
2 etcd
2.1 --cert-file ve --key-file bağımsız değişkenlerinin uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
2.2 Bağımsız değişkenin true olarak ayarlandığından --client-cert-auth emin olun Otomatik L1 Başarılı
2.3 Bağımsız değişkenin --auto-tls true olarak ayarlanmadığından emin olun Otomatik L1 Başarılı
2.4 --peer-cert-file ve --peer-key-file bağımsız değişkenlerinin uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
2.5 Bağımsız değişkenin true olarak ayarlandığından --peer-client-cert-auth emin olun Otomatik L1 Başarılı
2,6 Bağımsız değişkenin --peer-auto-tls true olarak ayarlanmadığından emin olun Otomatik L1 Başarılı
2.7 etcd için benzersiz bir Sertifika Yetkilisi kullanıldığından emin olun El ile L2 Başarılı
3 Denetim Düzlemi Yapılandırması
3.1 Kimlik Doğrulama ve Yetkilendirme
3.1.1 İstemci sertifikası kimlik doğrulaması kullanıcılar için kullanılmamalıdır El ile L1 Başarılı
3.1.2 Hizmet hesabı belirteci kimlik doğrulaması kullanıcılar için kullanılmamalıdır El ile L1 Başarılı
3.1.3 Bootstrap belirteci kimlik doğrulaması kullanıcılar için kullanılmamalıdır El ile L1 Başarılı
3.2 Günlük Kaydı
3.2.1 En düşük denetim ilkesinin oluşturulduğuna emin olun El ile L1 Başarılı
3.2.2 Denetim ilkesinin önemli güvenlik sorunlarını kapsadığından emin olun El ile L2 Başarılı
4 Çalışan Düğümleri
4.1 Çalışan Düğümü Yapılandırma Dosyaları
4.1.1 Kubelet hizmet dosyası izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.1.2 kubelet hizmeti dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.1.3 Ara sunucu kubeconfig dosyası varsa, izinlerin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun El ile L1 Yok
4.1.4 Ara sunucu kubeconfig dosyası varsa sahipliğin root:root olarak ayarlandığından emin olun El ile L1 Yok
4.1.5 --kubeconfig kubelet.conf dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.1.6 kubelet.conf dosya sahipliğinin --kubeconfig root:root olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.1.7 Sertifika yetkilileri dosya izinlerinin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun El ile L1 Başarılı
4.1.8 İstemci sertifika yetkilileri dosya sahipliğinin root:root olarak ayarlandığından emin olun El ile L1 Başarılı
4.1.9 kubelet config.yaml yapılandırma dosyası kullanılıyorsa, izinlerin 600 veya daha kısıtlayıcı olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.1.10 kubelet config.yaml yapılandırma dosyası kullanılıyorsa, dosya sahipliğinin root:root olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.2 Kubelet
4.2.1 Bağımsız değişkenin --anonymous-auth false olarak ayarlandığından emin olun Otomatik L1 Başarılı
4.2.2 Bağımsız değişkenin --authorization-mode AlwaysAllow olarak ayarlanmadığından emin olun Otomatik L1 Başarılı
4.2.3 Bağımsız değişkenin --client-ca-file uygun şekilde ayarlandığından emin olun Otomatik L1 Başarılı
4.2.4 Bağımsız değişkenin --read-only-port 0 olarak ayarlandığından emin olun El ile L1 Başarılı
4.2.5 Bağımsız değişkenin --streaming-connection-idle-timeout 0 olarak ayarlanmadığından emin olun El ile L1 Başarılı
4.2.6 Bağımsız değişkenin true olarak ayarlandığından --make-iptables-util-chains emin olun Otomatik L1 Başarılı
4.2.7 Bağımsız değişkenin --hostname-override ayarlanmadığından emin olun El ile L1 Başarılı
4.2.8 Bağımsız değişkenin --eventRecordQPS uygun olay yakalamayı sağlayan bir düzeye ayarlandığından emin olun El ile L2 Başarılı
4.2.9 --tls-cert-file ve --tls-private-key-file bağımsız değişkenlerinin uygun şekilde ayarlandığından emin olun El ile L1 Başarılı
4.2.10 Bağımsız değişkenin --rotate-certificates false olarak ayarlanmadığından emin olun Otomatik L1 Başarılı
4.2.11 RotateKubeletServerCertificate bağımsız değişkeninin true olarak ayarlandığını doğrulayın El ile L1 Başarısız
4.2.12 Kubelet'in yalnızca Güçlü Şifreleme Şifrelemeleri kullandığından emin olun El ile L1 Başarılı
4.2.13 Pod PID'lerinde bir sınırın ayarlandığından emin olun El ile L1 Başarılı
4.3 kube-proxy
4.3.1 kube-proxy ölçüm hizmetinin localhost'a bağlı olduğundan emin olun Otomatik L1 Başarılı
5 İlkeler
5.1 RBAC ve Hizmet Hesapları
5.1.1 Küme yöneticisi rolünün yalnızca gerektiğinde kullanıldığından emin olun Otomatik L1 Ortama Bağlıdır
5.1.2 Gizli dizilere erişimi en aza indirme Otomatik L1 Ortama Bağlıdır
5.1.3 Roller ve ClusterRoles'te joker karakter kullanımını en aza indirme Otomatik L1 Ortama Bağlıdır
5.1.4 Pod oluşturmak için erişimi en aza indirme Otomatik L1 Ortama Bağlıdır
5.1.5 Varsayılan hizmet hesaplarının etkin olarak kullanılmadığından emin olun Otomatik L1 Ortama Bağlıdır
5.1.6 Hizmet Hesabı Belirteçlerinin yalnızca gerekli yerlerde bağlandığından emin olun Otomatik L1 Ortama Bağlıdır
5.1.7 system:masters grubunun kullanımından kaçının El ile L1 Ortama Bağlıdır
5.1.8 Kubernetes kümesinde Bağlama, Kimliğe Bürünme ve Yükseltme izinlerinin kullanımını sınırlayın El ile L1 Ortama Bağlıdır
5.1.9 Kalıcı birimler oluşturmak için erişimi en aza indirme El ile L1 Ortama Bağlıdır
5.1.10 Düğümlerin ara sunucu alt kaynağına erişimi en aza indirme El ile L1 Ortama Bağlıdır
5.1.11 certificatesigningrequests nesnelerinin onay alt kaynağına erişimi en aza indirme El ile L1 Ortama Bağlıdır
5.1.12 Web kancası yapılandırma nesnelerine erişimi en aza indirme El ile L1 Ortama Bağlıdır
5.1.13 Hizmet hesabı belirteci oluşturmaya erişimi en aza indirme El ile L1 Ortama Bağlıdır
5.2 Pod Güvenlik Standartları
5.2.1 Kümede en az bir etkin ilke denetim mekanizması olduğundan emin olun El ile L1 Ortama Bağlıdır
5.2.2 Ayrıcalıklı kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.3 Konak işlem kimliği ad alanını paylaşmak isteyen kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.4 Konak IPC ad alanını paylaşmak isteyen kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.5 Konak ağ ad alanını paylaşmak isteyen kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.6 allowPrivilegeEscalation ile kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.7 Kök kapsayıcıların kabulünü en aza indirme El ile L2 Ortama Bağlıdır
5.2.8 NET_RAW özelliğiyle kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.9 Eklenen özelliklerle kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.10 Atanan özelliklerle kapsayıcıların kabulünün en aza indirilmesi El ile L2 Ortama Bağlıdır
5.2.11 Windows HostProcess Kapsayıcıları'nın kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.12 HostPath birimlerinin kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.2.13 HostPorts kullanan kapsayıcıların kabulünün en aza indirilmesi El ile L1 Ortama Bağlıdır
5.3 Ağ İlkeleri ve CNI
5.3.1 Kullanımdaki CNI'nin Ağ İlkeleri'ni desteklediğinden emin olun El ile L1 Başarılı
5.3.2 Tüm Ad Alanlarının Tanımlanmış Ağ İlkeleri olduğundan emin olun El ile L2 Ortama Bağlıdır
5,4 Gizli Dizi Yönetimi
5.4.1 Ortam değişkenleri olarak gizli diziler yerine gizli dizileri dosya olarak kullanmayı tercih edin El ile L2 Ortama Bağlıdır
5.4.2 Dış gizli dizi depolamayı göz önünde bulundurun El ile L2 Ortama Bağlıdır
5.5 Genişletilebilir Erişim Denetimi
5.5.1 ImagePolicyWebhook erişim denetleyicisini kullanarak Image Provenance'ı yapılandırma El ile L2 Başarısız
5.6 Genel İlkeler
5.6.1 Ad alanlarını kullanarak kaynaklar arasında yönetim sınırları oluşturma El ile L1 Ortama Bağlıdır
5.6.2 Pod tanımlarınızda seccomp profilinin docker/default olarak ayarlandığından emin olun El ile L2 Ortama Bağlıdır
5.6.3 Podlarınıza ve Kapsayıcılarınıza Güvenlik Bağlamı Uygulama El ile L2 Ortama Bağlıdır
5.6.4 Varsayılan ad alanı kullanılmamalıdır El ile L2 Ortama Bağlıdır

Not

Kubernetes CIS karşılaştırmasına ek olarak aks CIS karşılaştırması da mevcuttur.

Ek notlar

  • Güvenliği sağlamlaştırılmış işletim sistemi aks için özel olarak derlenir ve korunur ve AKS platformu dışında desteklenmez .
  • Saldırı yüzeyi alanını daha da azaltmak için işletim sisteminde bazı gereksiz çekirdek modülü sürücüleri devre dışı bırakılır.

Sonraki adımlar

AKS güvenliği hakkında daha fazla bilgi için aşağıdaki makalelere bakın: