Tolok ukur Pusat Keamanan Internet (CIS) Kubernetes

Sebagai layanan yang aman, Azure Kubernetes Service (AKS) mematuhi standar SOC, ISO, PCI DSS, dan HIPAA. Artikel ini mencakup pengerasan keamanan yang diterapkan pada AKS berdasarkan tolok ukur CIS Kubernetes. Untuk informasi lebih lanjut tentang keamanan AKS, lihat Konsep keamanan untuk aplikasi dan kluster di Azure Kubernetes Service (AKS). Untuk informasi lebih lanjut tentang tolok ukur CIS, lihat Tolok ukur Center for Internet Security (CIS).

Tolok ukur CIS Kubernetes

Berikut ini adalah hasil dari rekomendasi CIS Kubernetes V1.27 Benchmark v1.8.0 pada AKS. Hasilnya berlaku untuk AKS 1.21.x melalui AKS 1.27.x.

Rekomendasi yang dinilai memengaruhi skor tolok ukur jika tidak diterapkan, sementara rekomendasi Tidak Dinilai tidak.

Tolok ukur CIS menyediakan dua tingkat pengaturan keamanan:

  • L1, atau Level 1, merekomendasikan persyaratan keamanan dasar penting yang dapat dikonfigurasi pada sistem apa pun dan harus menyebabkan sedikit atau tidak ada gangguan layanan atau fungsionalitas yang berkurang.
  • L2, atau Level 2, merekomendasikan setelan keamanan untuk lingkungan yang memerlukan keamanan lebih tinggi yang dapat mengakibatkan beberapa fungsionalitas berkurang.

Rekomendasi dapat memiliki salah satu status berikut:

  • Lulus - Rekomendasi telah diterapkan.
  • Gagal - Rekomendasi belum diterapkan.
  • T/A - Rekomendasi terkait dengan persyaratan izin file manifes yang tidak relevan dengan AKS. Kluster Kubernetes secara default menggunakan model manifes untuk menyebarkan pod sarana kontrol, yang mengandalkan file dari VM node. Tolok ukur CIS Kubernetes merekomendasikan file-file ini harus memiliki persyaratan izin tertentu. Kluster AKS menggunakan diagram Helm untuk menyebarkan pod bidang kontrol dan tidak bergantung pada file di VM node.
  • Bergantung pada Lingkungan - Rekomendasi diterapkan di lingkungan spesifik pengguna dan tidak dikontrol oleh AKS. Rekomendasi Skor memengaruhi skor tolok ukur apakah rekomendasi berlaku untuk lingkungan spesifik pengguna atau tidak.
  • Kontrol yang Setara - Rekomendasi telah diterapkan dengan cara yang berbeda dan setara.
ID CIS Deskripsi rekomendasi Jenis Skor Tingkat Status
1 Komponen Sarana Kontrol
1.1 File Konfigurasi Node Sarana Kontrol
1.1.1 Pastikan bahwa izin file spesifikasi pod server API diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.2 Pastikan bahwa kepemilikan file spesifikasi pod server API pod diatur ke root:root Diberi Skor L1 T/A
1.1.3 Pastikan bahwa izin file spesifikasi pod manajer pengontrol diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.4 Pastikan bahwa kepemilikan file spesifikasi pod manajer pengontrol diatur ke root:root Diberi Skor L1 T/A
1.1.5 Pastikan bahwa izin file spesifikasi pod penjadwal diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.6 Pastikan bahwa kepemilikan file spesifikasi pod penjadwal diatur ke root:root Diberi Skor L1 T/A
1.1.7 Pastikan bahwa izin file spesifikasi pod etcd diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.8 Pastikan bahwa kepemilikan file spesifikasi pod etcd diatur ke root:root Diberi Skor L1 T/A
1.1.9 Pastikan bahwa izin file Antarmuka Jaringan Kontainer diatur ke 600 atau lebih ketat Tidak diberi skor L1 T/A
1.1.10 Pastikan bahwa kepemilikan file Antarmuka Jaringan Kontainer diatur ke root:root Tidak diberi skor L1 T/A
1.1.11 Pastikan bahwa izin direktori data etcd diatur ke 700 atau lebih ketat Diberi Skor L1 T/A
1.1.12 Pastikan bahwa kepemilikan direktori data etcd diatur ke etcd:etcd Diberi Skor L1 T/A
1.1.13 Pastikan bahwa izin file admin.conf diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.14 Pastikan bahwa kepemilikan file admin.conf diatur ke root:root Diberi Skor L1 T/A
1.1.15 Pastikan bahwa izin file scheduler.conf diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.16 Pastikan bahwa kepemilikan file scheduler.conf diatur ke root:root Diberi Skor L1 T/A
1.1.17 Pastikan bahwa izin file controller-manager.conf diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.18 Pastikan bahwa kepemilikan file controller-manager.conf diatur ke root:root Diberi Skor L1 T/A
1.1.19 Pastikan bahwa direktori PKI Kubernetes dan kepemilikan file diatur ke root:root Diberi Skor L1 T/A
1.1.20 Pastikan bahwa izin file sertifikat Kubernetes PKI diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
1.1.21 Pastikan bahwa izin file kunci PKI Kubernetes diatur ke 600 Diberi Skor L1 T/A
1.2 Server API
1.2.1 Pastikan bahwa argumen --anonymous-auth disetel ke false Tidak diberi skor L1 Lulus
1.2.2 Pastikan bahwa parameter --token-auth-file tidak disetel Diberi Skor L1 Gagal
1.2.3 Pastikan bahwa --DenyServiceExternalIPs tidak diatur Diberi Skor L1 Gagal
1.2.4 Pastikan bahwa argumen --kubelet-client-certificate dan --kubelet-client-key disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.2.5 Pastikan bahwa argumen --kubelet-certificate-authority disetel sebagaimana mestinya Diberi Skor L1 Gagal
1.2.6 Pastikan bahwa argumen --authorization-mode tidak disetel ke AlwaysAllow Diberi Skor L1 Lulus
1.2.7 Pastikan bahwa argumen --authorization-mode menyertakan Node Diberi Skor L1 Lulus
1.2.8 Pastikan bahwa argumen --authorization-mode menyertakan RBAC Diberi Skor L1 Lulus
1.2.9 Pastikan bahwa plugin kontrol masuk EventRateLimit disetel Tidak diberi skor L1 Gagal
1.2.10 Pastikan bahwa plugin kontrol penerimaan AlwaysAdmit tidak disetel Diberi Skor L1 Lulus
1.2.11 Pastikan bahwa plugin kontrol penerimaan AlwaysPullImages disetel Tidak diberi skor L1 Gagal
1.2.12 Pastikan bahwa plugin kontrol masuk SecurityContextDeny disetel jika PodSecurityPolicy tidak digunakan Tidak diberi skor L1 Gagal
1.2.13 Pastikan bahwa plugin kontrol masuk ServiceAccount disetel Diberi Skor L1 Lulus
1.2.14 Pastikan bahwa plugin kontrol masuk NamespaceLifecycle disetel Diberi Skor L1 Lulus
1.2.15 Pastikan bahwa plugin kontrol masuk NodeRestriction disetel Diberi Skor L1 Lulus
1.2.16 Pastikan bahwa argumen --secure-port tidak disetel ke 0 Diberi Skor L1 Lulus
1.2.17 Pastikan bahwa argumen --profiling disetel ke false Diberi Skor L1 Lulus
1.2.18 Pastikan bahwa argumen --audit-log-path disetel Diberi Skor L1 Kontrol Setara
1.2.19 Pastikan bahwa argumen --audit-log-maxage disetel ke 30 atau sesuai Diberi Skor L1 Kontrol Setara
1.2.20 Pastikan bahwa argumen --audit-log-maxbackup disetel ke 10 atau sesuai Diberi Skor L1 Lulus
1.2.21 Pastikan bahwa argumen --audit-log-maxsize disetel ke 100 atau sesuai Diberi Skor L1 Lulus
1.2.22 Pastikan bahwa argumen --request-timeout disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.2.23 Pastikan bahwa argumen --service-account-lookup disetel ke true Diberi Skor L1 Lulus
1.2.24 Pastikan bahwa argumen --service-account-key-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.2.25 Pastikan bahwa argumen --etcd-certfile dan --etcd-keyfile disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.2.26 Pastikan bahwa argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.2.27 Pastikan bahwa argumen --client-ca-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.2.28 Pastikan bahwa argumen --etcd-cafile disetel sebagaimana mestinya Diberi Skor L1 Tergantung pada Lingkungan
1.2.29 Pastikan bahwa argumen --encryption-provider-config disetel sebagaimana mestinya Diberi Skor L1 Tergantung pada Lingkungan
1.2.30 Pastikan bahwa penyedia enkripsi dikonfigurasi dengan tepat Diberi Skor L1 Tergantung pada Lingkungan
1.2.31 Pastikan bahwa Server API hanya menggunakan Strong Cryptographic Ciphers Tidak diberi skor L1 Lulus
1.3 Manajer Pengontrol
1.3.1 Pastikan bahwa argumen --terminated-pod-gc-threshold disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.3.2 Pastikan bahwa argumen --profiling disetel ke false Diberi Skor L1 Lulus
1.3.3 Pastikan bahwa argumen --use-service-account-credentials disetel ke true Diberi Skor L1 Lulus
1.3.4 Pastikan bahwa argumen --service-account-private-key-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.3.5 Pastikan bahwa argumen --root-ca-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
1.3.6 Pastikan bahwa argumen RotateKubeletServerCertificate disetel ke true Diberi Skor L2 Gagal
1.3.7 Pastikan bahwa argumen --bind-address disetel ke 127.0.0.1 Diberi Skor L1 Kontrol Setara
1.4 Scheduler
1.4.1 Pastikan bahwa argumen --profiling disetel ke false Diberi Skor L1 Lulus
1.4.2 Pastikan bahwa argumen --bind-address disetel ke 127.0.0.1 Diberi Skor L1 Kontrol Setara
2 etcd
2.1 Pastikan bahwa argumen --cert-file dan --key-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
2.2 Pastikan bahwa argumen --client-cert-auth disetel ke true Diberi Skor L1 Lulus
2.3 Pastikan bahwa argumen --auto-tls tidak disetel ke true Diberi Skor L1 Lulus
2.4 Pastikan bahwa argumen --peer-cert-file dan --peer-key-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
2.5 Pastikan bahwa argumen --peer-client-cert-auth disetel ke true Diberi Skor L1 Lulus
2.6 Pastikan bahwa argumen --peer-auto-tls tidak disetel ke true Diberi Skor L1 Lulus
2.7 Pastikan bahwa Otoritas Sertifikat unik digunakan untuk etcd Tidak diberi skor L2 Lulus
3 Konfigurasi Sarana Kontrol
3.1 Autentikasi dan Otorisasi
3.1.1 Autentikasi sertifikat klien tidak boleh digunakan untuk pengguna Tidak diberi skor L2 Lulus
3.1.2 Autentikasi token akun layanan tidak boleh digunakan untuk pengguna Tidak diberi skor L2 Lulus
+3.1.3 Autentikasi token bootstrap tidak boleh digunakan untuk pengguna Tidak diberi skor L2 Lulus
3.2 Pencatatan
3.2.1 Pastikan bahwa kebijakan audit minimal dibuat Diberi Skor L1 Lulus
3.2.2 Pastikan bahwa kebijakan audit mencakup masalah keamanan utama Tidak diberi skor L2 Lulus
4 Node Pekerja
4.1 File Konfigurasi Node Pekerja
4.1.1 Pastikan bahwa izin file layanan kubelet diatur ke 600 atau lebih ketat Diberi Skor L1 Lulus
4.1.2 Pastikan bahwa kepemilikan file layanan kubelet diatur ke root:root Diberi Skor L1 Lulus
4.1.3 Jika ada file kubeconfig proksi, pastikan izin diatur ke 600 atau lebih ketat Diberi Skor L1 T/A
4.1.4 Jika ada file kubeconfig proksi, pastikan kepemilikan diatur ke root:root Diberi Skor L1 T/A
4.1.5 Pastikan izin --kubeconfig file kubelet.conf diatur ke 600 atau lebih ketat Diberi Skor L1 Lulus
4.1.6 Pastikan kepemilikan --kubeconfig file kubelet.conf diatur ke root:root Diberi Skor L1 Lulus
4.1.7 Pastikan bahwa izin file otoritas sertifikat diatur ke 600 atau lebih ketat Diberi Skor L1 Lulus
4.1.8 Pastikan bahwa kepemilikan file otoritas sertifikat klien diatur ke root: root Diberi Skor L1 Lulus
4.1.9 Jika file konfigurasi kubelet config.yaml sedang digunakan, pastikan izin diatur ke 600 atau lebih ketat Diberi Skor L1 Lulus
4.1.10 Jika file konfigurasi kubelet config.yaml sedang digunakan, pastikan kepemilikan file diatur ke root:root Diberi Skor L1 Lulus
4.2 Kubelet
4.2.1 Pastikan bahwa argumen --anonymous-auth disetel ke false Diberi Skor L1 Lulus
4.2.2 Pastikan bahwa argumen --authorization-mode tidak disetel ke AlwaysAllow Diberi Skor L1 Lulus
4.2.3 Pastikan bahwa argumen --client-ca-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
4.2.4 Pastikan bahwa argumen --read-only-port disetel ke 0 Diberi Skor L1 Lulus
4.2.5 Pastikan bahwa argumen --streaming-connection-idle-timeout tidak disetel ke 0 Diberi Skor L1 Lulus
4.2.6 Pastikan bahwa argumen --protect-kernel-defaults disetel ke true Diberi Skor L1 Lulus
4.2.7 Pastikan bahwa argumen --make-iptables-util-chains disetel ke true Diberi Skor L1 Lulus
4.2.8 Pastikan bahwa argumen --hostname-override tidak disetel Tidak diberi skor L1 Lulus
4.2.9 Pastikan bahwa argumen eventRecordQPS diatur ke tingkat yang memastikan pengambilan peristiwa yang sesuai Tidak diberi skor L2 Lulus
4.2.10 Pastikan bahwa argumen --tls-cert-filedan --tls-private-key-file disetel sebagaimana mestinya Diberi Skor L1 Lulus
4.2.11 Pastikan bahwa argumen --rotate-certificates tidak disetel ke false Diberi Skor L1 Lulus
4.2.12 Pastikan bahwa argumen RotateKubeletServerCertificate disetel ke true Diberi Skor L1 Lulus
4.2.13 Pastikan bahwa Kubelet hanya menggunakan Sandi Kriptografi yang Kuat Tidak diberi skor L1 Lulus
5 Kebijakan
5.1 RBAC dan Akun Layanan
5.1.1 Pastikan bahwa peran kluster-admin hanya digunakan jika diperlukan Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.2 Minimalkan akses ke rahasia Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.3 Minimalkan penggunaan kartubebas di Roles dan ClusterRoles Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.4 Minimalkan akses untuk membuat pod Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.5 Pastikan bahwa akun layanan default tidak digunakan secara aktif Diberi Skor L1 Tergantung pada Lingkungan
5.1.6 Pastikan bahwa Token Akun Layanan hanya dipasang jika diperlukan Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.7 Hindari penggunaan grup system:masters Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.8 Batasi penggunaan izin Bind, Impersonate, dan Escalate di kluster Kubernetes Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.9 Meminimalkan akses untuk membuat volume persisten Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.10 Meminimalkan akses ke sub-sumber daya proksi simpul Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.11 Meminimalkan akses ke sub-sumber daya persetujuan objek certificatesigningrequests Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.12 Meminimalkan akses ke objek konfigurasi webhook Tidak diberi skor L1 Tergantung pada Lingkungan
5.1.13 Meminimalkan akses ke pembuatan token akun layanan Tidak diberi skor L1 Tergantung pada Lingkungan
5.2 Kebijakan Keamanan Pod
5.2.1 Pastikan bahwa kluster memiliki setidaknya satu mekanisme kontrol kebijakan aktif di tempat Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.2 Minimalkan masuknya kontainer istimewa Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.3 Minimalkan penerimaan kontainer yang ingin berbagi namespace ID proses host Diberi Skor L1 Tergantung pada Lingkungan
5.2.4 Minimalkan masuknya kontainer yang ingin berbagi namespace IPC host Diberi Skor L1 Tergantung pada Lingkungan
5.2.5 Minimalkan penerimaan kontainer yang ingin berbagi ruang nama jaringan host Diberi Skor L1 Tergantung pada Lingkungan
5.2.6 Minimalkan penerimaan kontainer dengan allowPrivilegeEscalation Diberi Skor L1 Tergantung pada Lingkungan
5.2.6 Minimalkan masuknya kontainer root Tidak diberi skor L2 Tergantung pada Lingkungan
5.2.7 Minimalkan penerimaan kontainer dengan kemampuan NET_RAW Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.8 Minimalkan penerimaan kontainer dengan kemampuan tambahan Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.9 Minimalkan penerimaan kontainer dengan kemampuan yang ditetapkan Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.10 Minimalkan penerimaan kontainer dengan kemampuan yang ditetapkan Tidak diberi skor L2
5.2.11 Meminimalkan penerimaan Kontainer HostProcess Windows Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.12 Meminimalkan penerimaan volume HostPath Tidak diberi skor L1 Tergantung pada Lingkungan
5.2.13 Meminimalkan penerimaan kontainer yang menggunakan HostPorts Tidak diberi skor L1 Tergantung pada Lingkungan
5.3 Kebijakan Jaringan dan CNI
5.3.1 Pastikan bahwa CNI yang digunakan mendukung Kebijakan Jaringan Tidak diberi skor L1 Lulus
5.3.2 Pastikan bahwa semua Namespace memiliki Kebijakan Jaringan yang ditentukan Diberi Skor L2 Tergantung pada Lingkungan
5.4 Manajemen Rahasia
5.4.1 Lebih suka menggunakan rahasia sebagai file daripada rahasia sebagai variabel lingkungan Tidak diberi skor L1 Tergantung pada Lingkungan
5.4.2 Pertimbangkan penyimpanan rahasia eksternal Tidak diberi skor L2 Tergantung pada Lingkungan
5.5 Kontrol Masuk yang Dapat Diperluas
5.5.1 Konfigurasikan Sumber Gambar menggunakan pengontrol masuk ImagePolicyWebhook Tidak diberi skor L2 Gagal
5.7 Kebijakan Umum
5.7.1 Buat batasan administratif antara sumber daya menggunakan ruang nama Tidak diberi skor L1 Tergantung pada Lingkungan
5.7.2 Pastikan bahwa profil seccomp disetel ke buruh pelabuhan/default dalam definisi pod Anda Tidak diberi skor L2 Tergantung pada Lingkungan
5.7.3 Terapkan Konteks Keamanan ke Pod dan Kontainer Anda Tidak diberi skor L2 Tergantung pada Lingkungan
5.7.4 Namespace default tidak boleh digunakan Diberi Skor L2 Tergantung pada Lingkungan

Catatan

Selain tolok ukur CIS Kubernetes, tersedia juga patokan CIS AKS.

Catatan tambahan

  • OS yang diperkeras keamanan dibangun dan dikelola khusus untuk AKS dan tidak didukung di luar platform AKS.
  • Untuk lebih mengurangi area permukaan serangan, beberapa driver modul kernel yang tidak perlu telah dinonaktifkan di OS.

Langkah berikutnya

Untuk informasi selengkapnya tentang keamanan AKS, lihat artikel berikut: