Bagikan melalui


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 Kubernetes CIS

Berikut ini adalah hasil dari rekomendasi CIS Kubernetes V1.27 Benchmark v1.9.0 pada AKS. Hasilnya berlaku untuk AKS 1.27.x hingga AKS 1.29.x, di mana 1.29.x akan mencapai akhir dukungan pada Maret 2025.

Tingkat keamanan

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.

Status penilaian

Status penilaian disertakan untuk setiap rekomendasi. Status penilaian menunjukkan apakah rekomendasi yang diberikan dapat diotomatisasi atau memerlukan langkah-langkah manual untuk diterapkan. Kedua status sama pentingnya dan ditentukan dan didukung sebagai berikut:

  • Otomatis: Mewakili rekomendasi di mana penilaian kontrol teknis dapat sepenuhnya otomatis dan divalidasi ke status lulus/gagal. Rekomendasi mencakup informasi yang diperlukan untuk menerapkan otomatisasi.
  • Manual: Mewakili rekomendasi di mana penilaian kontrol teknis tidak dapat sepenuhnya otomatis dan memerlukan semua atau beberapa langkah manual untuk memvalidasi bahwa status yang dikonfigurasi ditetapkan seperti yang diharapkan. Status yang diharapkan dapat bervariasi tergantung pada lingkungan.

Rekomendasi otomatis memengaruhi skor tolok ukur jika tidak diterapkan, sementara Rekomendasi manual tidak.

Status pengesahan

Rekomendasi dapat memiliki salah satu status pengesahan berikut:

  • Pass: Rekomendasi diterapkan.
  • Gagal: Rekomendasi tidak diterapkan.
  • N/A: Rekomendasi berkaitan dengan persyaratan izin file manifes yang tidak relevan dengan AKS. Kluster Kubernetes secara default menggunakan model manifes untuk menyebarkan pod control plane, yang bergantung pada 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 otomatis memengaruhi skor tolok ukur apakah rekomendasi berlaku untuk lingkungan spesifik pengguna atau tidak.
  • Kontrol yang setara: Rekomendasi diimplementasikan dengan cara yang berbeda dan setara.

Rincian patokan

ID CIS Deskripsi rekomendasi Status penilaian Tingkat Kedudukan Alasan
1 Komponen Sarana Kontrol
1.1 File Konfigurasi Node Sarana Kontrol
1.1.1 Pastikan izin file spesifikasi pod server API disetel ke 600 atau lebih ketat Otomatis L1 T/A
1.1.2 Pastikan bahwa kepemilikan file spesifikasi pod server API ditetapkan ke root: root Otomatis L1 T/A
1.1.3 Pastikan bahwa izin file spesifikasi pod manajer pengontrol diatur ke 600 atau lebih ketat Otomatis L1 T/A
1.1.4 Pastikan bahwa kepemilikan file spesifikasi pod manajer pengontrol diatur ke root: root Otomatis L1 T/A
1.1.5 Pastikan bahwa izin file spesifikasi pod penjadwal diatur ke 600 atau lebih ketat Otomatis L1 T/A
1.1.6 Pastikan bahwa kepemilikan file spesifikasi pod penjadwal ditetapkan menjadi root: root Otomatis L1 T/A
1.1.7 Pastikan bahwa izin file spesifikasi pod etcd diatur ke 600 atau lebih ketat Otomatis L1 T/A
1.1.8 Pastikan kepemilikan file spesifikasi pod etcd diatur sebagai root: root Otomatis L1 T/A
1.1.9 Pastikan bahwa izin file Antarmuka Jaringan Kontainer diatur ke 600 atau lebih ketat Panduan L1 T/A
1.1.10 Pastikan kepemilikan file Antarmuka Jaringan Kontainer diatur ke root: root Panduan L1 T/A
1.1.11 Pastikan bahwa izin direktori data etcd diatur ke 700 atau lebih ketat Otomatis L1 T/A
1.1.12 Pastikan kepemilikan direktori data etcd diatur ke etcd:etcd Otomatis L1 T/A
1.1.13 Pastikan bahwa izin file admin.conf diatur ke 600 atau lebih ketat Otomatis L1 T/A
1.1.14 Pastikan kepemilikan file admin.conf diatur ke root: root Otomatis L1 T/A
1.1.15 Pastikan bahwa izin file scheduler.conf diatur ke 600 atau lebih ketat Otomatis L1 T/A
1.1.16 Pastikan bahwa kepemilikan file scheduler.conf diatur ke root: root Otomatis L1 T/A
1.1.17 Pastikan bahwa izin file controller-manager.conf diatur ke 600 atau lebih ketat Otomatis L1 T/A
1.1.18 Pastikan bahwa kepemilikan file controller-manager.conf diatur ke root: root Otomatis L1 T/A
1.1.19 Pastikan direktori PKI Kubernetes dan kepemilikan file diatur ke root: root Otomatis L1 T/A
1.1.20 Pastikan bahwa izin file sertifikat Kubernetes PKI diatur ke 600 atau lebih ketat Panduan L1 T/A
1.1.21 Pastikan bahwa izin file kunci PKI Kubernetes diatur ke 600 Panduan L1 T/A
1.2 Server API
1.2.1 Pastikan bahwa argumen --anonymous-auth disetel ke false Panduan L1 Lulus
1.2.2 Pastikan parameter --token-auth-file tidak diatur Otomatis L1 Gagal Kontrol yang setara diimplementasikan
1.2.3 Pastikan bahwa --DenyServiceExternalIPs tidak disetel Panduan L1 Gagal Kontrol setara yang diimplementasikan
1.2.4 Pastikan bahwa argumen --kubelet-client-certificate dan --kubelet-client-key disetel sebagaimana mestinya Otomatis L1 Lulus
1.2.5 Pastikan bahwa argumen --kubelet-certificate-authority disetel sebagaimana mestinya Otomatis L1 Gagal
1.2.6 Pastikan argumen --authorization-mode tidak diatur ke AlwaysAllow Otomatis L1 Lulus
1.2.7 Pastikan bahwa argumen --authorization-mode menyertakan Node Otomatis L1 Lulus
1.2.8 Pastikan bahwa argumen --authorization-mode menyertakan RBAC Otomatis L1 Lulus
1.2.9 Pastikan bahwa plugin kontrol masuk EventRateLimit disetel Panduan L1 Gagal Dampak operasional
1.2.10 Pastikan bahwa plugin kontrol penerimaan AlwaysAdmit tidak diatur Otomatis L1 Lulus
1.2.11 Pastikan bahwa plugin kontrol penerimaan AlwaysPullImages disetel Panduan L1 Gagal Dampak operasional
1.2.12 Pastikan bahwa plugin kontrol masuk ServiceAccount disetel Otomatis L2 Gagal Kontrol yang setara diimplementasikan
1.2.13 Pastikan bahwa plugin kontrol masuk NamespaceLifecycle disetel Otomatis L2 Lulus
1.2.14 Pastikan bahwa plugin kontrol masuk NodeRestriction disetel Otomatis L2 Lulus
1.2.15 Pastikan bahwa argumen --profiling disetel ke false Otomatis L1 Lulus
1.2.16 Pastikan bahwa argumen --audit-log-path disetel Otomatis L1 Lulus
1.2.17 Pastikan bahwa argumen --audit-log-maxage disetel ke 30 atau sesuai Otomatis L1 Kontrol Setara
1.2.18 Pastikan bahwa argumen --audit-log-maxbackup disetel ke 10 atau sesuai Otomatis L1 Kontrol Setara
1.2.19 Pastikan bahwa argumen --audit-log-maxsize disetel ke 100 atau sesuai Otomatis L1 Lulus
1.2.20 Pastikan bahwa argumen --request-timeout disetel sebagaimana mestinya Panduan L1 Lulus
1.2.21 Pastikan bahwa argumen --service-account-lookup disetel ke true Otomatis L1 Lulus
1.2.22 Pastikan bahwa argumen --service-account-key-file disetel sebagaimana mestinya Otomatis L1 Lulus
1.2.23 Pastikan bahwa argumen --etcd-certfile dan --etcd-keyfile disetel sebagaimana mestinya Otomatis L1 Lulus
1.2.24 Pastikan bahwa argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya Otomatis L1 Lulus
1.2.25 Pastikan bahwa argumen --client-ca-file disetel sebagaimana mestinya Otomatis L1 Lulus
1.2.26 Pastikan bahwa argumen --etcd-cafile disetel sebagaimana mestinya Otomatis L1 Lulus
1.2.27 Pastikan bahwa argumen --encryption-provider-config disetel sebagaimana mestinya Panduan L1 Tergantung pada Lingkungan
1.2.28 Pastikan bahwa penyedia enkripsi dikonfigurasi dengan tepat Panduan L1 Tergantung pada Lingkungan
1.2.29 Pastikan bahwa Server API hanya menggunakan Strong Cryptographic Ciphers Panduan L1 Lulus
1.3 Manajer Pengontrol
1.3.1 Pastikan bahwa argumen --terminated-pod-gc-threshold disetel sebagaimana mestinya Panduan L1 Lulus
1.3.2 Pastikan bahwa argumen --profiling disetel ke false Otomatis L1 Lulus
1.3.3 Pastikan bahwa argumen --use-service-account-credentials disetel ke true Otomatis L1 Lulus
1.3.4 Pastikan bahwa argumen --service-account-private-key-file disetel sebagaimana mestinya Otomatis L1 Lulus
1.3.5 Pastikan bahwa argumen --root-ca-file disetel sebagaimana mestinya Otomatis L1 Lulus
1.3.6 Pastikan bahwa argumen RotateKubeletServerCertificate disetel ke true Otomatis L2 Lulus
1.3.7 Pastikan bahwa argumen --bind-address disetel ke 127.0.0.1 Otomatis L1 Kontrol Setara
1.4 Penjadwal
1.4.1 Pastikan bahwa argumen --profiling disetel ke false Otomatis L1 Lulus
1.4.2 Pastikan bahwa argumen --bind-address disetel ke 127.0.0.1 Otomatis L1 Kontrol Setara
2 etcd
2.1 Pastikan bahwa argumen --cert-file dan --key-file disetel sebagaimana mestinya Otomatis L1 Lulus
2.2 Pastikan bahwa argumen --client-cert-auth disetel ke true Otomatis L1 Lulus
2.3 Pastikan argumen --auto-tls tidak disetel menjadi benar Otomatis L1 Lulus
2.4 Pastikan bahwa argumen --peer-cert-file dan --peer-key-file disetel sebagaimana mestinya Otomatis L1 Lulus
2,5 Pastikan bahwa argumen --peer-client-cert-auth disetel ke true Otomatis L1 Lulus
2.6 Pastikan argumen --peer-auto-tls tidak diatur ke true Otomatis L1 Lulus
2.7 Pastikan bahwa Otoritas Sertifikat unik digunakan untuk etcd Panduan L2 Lulus
3 Konfigurasi Sarana Kontrol
3.1 Autentikasi dan Otorisasi
3.1.1 Autentikasi sertifikat klien tidak boleh digunakan untuk pengguna Panduan L1 Lulus
3.1.2 Autentikasi token akun layanan tidak boleh digunakan untuk pengguna Panduan L1 Lulus
3.1.3 Autentikasi token bootstrap tidak boleh digunakan untuk pengguna Panduan L1 Lulus
3.2 Pencatatan
3.2.1 Pastikan bahwa kebijakan audit minimal dibuat Panduan L1 Lulus
3.2.2 Pastikan bahwa kebijakan audit mencakup masalah keamanan utama Panduan 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 Otomatis L1 Lulus
4.1.2 Pastikan kepemilikan file layanan kubelet diatur ke root: root Otomatis L1 Lulus
4.1.3 Jika ada file kubeconfig proksi, pastikan izin diatur ke 600 atau lebih ketat lagi Panduan L1 T/A
4.1.4 Jika ada file kubeconfig proksi, pastikan kepemilikan diatur ke root: root Panduan L1 T/A
4.1.5 Pastikan izin --kubeconfig file kubelet.conf diatur ke 600 atau lebih ketat Otomatis L1 Lulus
4.1.6 Pastikan kepemilikan --kubeconfig file kubelet.conf diatur ke root: root Otomatis L1 Lulus
4.1.7 Pastikan bahwa izin file otoritas sertifikat diatur ke 600 atau lebih ketat Panduan L1 Lulus
4.1.8 Pastikan bahwa berkas otoritas sertifikat klien diatur kepemilikannya ke root: root Panduan L1 Lulus
4.1.9 Jika file konfigurasi kubelet config.yaml sedang digunakan, pastikan izin diatur ke 600 atau lebih ketat Otomatis L1 Lulus
4.1.10 Jika file konfigurasi kubelet config.yaml sedang digunakan, pastikan kepemilikan file diatur ke root: root Otomatis L1 Lulus
4.2 Kubelet
4.2.1 Pastikan bahwa argumen --anonymous-auth disetel ke false Otomatis L1 Lulus
4.2.2 Pastikan argumen --authorization-mode tidak diatur ke AlwaysAllow Otomatis L1 Lulus
4.2.3 Pastikan bahwa argumen --client-ca-file disetel sebagaimana mestinya Otomatis L1 Lulus
4.2.4 Pastikan bahwa argumen --read-only-port disetel ke 0 Panduan L1 Lulus
4.2.5 Pastikan argumen --streaming-connection-idle-timeout tidak diatur ke 0 Panduan L1 Lulus
4.2.6 Pastikan bahwa argumen --make-iptables-util-chains disetel ke true Otomatis L1 Lulus
4.2.7 Pastikan argumen --hostname-override tidak diatur Panduan L1 Lulus
4.2.8 Pastikan argumen --eventRecordQPS diatur ke tingkat yang memastikan pengambilan peristiwa yang sesuai Panduan L2 Lulus
4.2.9 Pastikan bahwa argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya Panduan L1 Lulus
4.2.10 Pastikan argumen --rotate-certificates tidak diatur ke false Otomatis L1 Lulus
4.2.11 Verifikasi bahwa argumen RotateKubeletServerCertificate disetel menjadi true Panduan L1 Gagal
4.2.12 Pastikan bahwa Kubelet hanya menggunakan Sandi Kriptografi yang Kuat Panduan L1 Lulus
4.2.13 Pastikan batas diatur pada PID pod Panduan L1 Lulus
4.3 kube-proxy
4.3.1 Pastikan bahwa layanan metrik kube-proxy terikat ke localhost Otomatis L1 Gagal Dampak operasional
5 Kebijakan
5.1 RBAC dan Akun Layanan
5.1.1 Pastikan bahwa peran kluster-admin hanya digunakan jika diperlukan Otomatis L1 Tergantung pada Lingkungan
5.1.2 Minimalkan akses ke rahasia Otomatis L1 Tergantung pada Lingkungan
5.1.3 Kurangi penggunaan wildcard di Roles dan ClusterRoles Otomatis L1 Tergantung pada Lingkungan
5.1.4 Minimalkan akses untuk membuat pod Otomatis L1 Tergantung pada Lingkungan
5.1.5 Pastikan akun layanan default tidak digunakan secara aktif Otomatis L1 Tergantung pada Lingkungan
5.1.6 Pastikan bahwa Token Akun Layanan hanya dipasang jika diperlukan Otomatis L1 Tergantung pada Lingkungan
5.1.7 Hindari penggunaan sistem: grup master Panduan L1 Tergantung pada Lingkungan
5.1.8 Batasi penggunaan izin Bind, Impersonate, dan Escalate di kluster Kubernetes Panduan L1 Tergantung pada Lingkungan
5.1.9 Meminimalkan akses untuk membuat volume persisten Panduan L1 Tergantung pada Lingkungan
5.1.10 Meminimalkan akses ke sub sumber daya proksi simpul Panduan L1 Tergantung pada Lingkungan
5.1.11 Meminimalkan akses ke sub-sumber daya persetujuan pada objek certificatesigningrequests Panduan L1 Tergantung pada Lingkungan
5.1.12 Meminimalkan akses ke objek konfigurasi webhook Panduan L1 Tergantung pada Lingkungan
5.1.13 Meminimalkan akses ke pembuatan token akun layanan Panduan L1 Tergantung pada Lingkungan
5.2 Standar Keamanan Pod
5.2.1 Pastikan bahwa kluster memiliki setidaknya satu mekanisme kontrol kebijakan aktif di tempat Panduan L1 Tergantung pada Lingkungan
5.2.2 Minimalkan masuknya kontainer istimewa Panduan L1 Tergantung pada Lingkungan
5.2.3 Minimalkan penerimaan kontainer yang ingin berbagi namespace ID proses host Panduan L1 Tergantung pada Lingkungan
5.2.4 Minimalkan masuknya kontainer yang ingin berbagi namespace IPC host Panduan L1 Tergantung pada Lingkungan
5.2.5 Minimalkan penerimaan kontainer yang ingin berbagi ruang nama jaringan host Panduan L1 Tergantung pada Lingkungan
5.2.6 Minimalkan penerimaan kontainer dengan allowPrivilegeEscalation Panduan L1 Tergantung pada Lingkungan
5.2.7 Minimalkan masuknya kontainer root Panduan L2 Tergantung pada Lingkungan
5.2.8 Minimalkan penerimaan kontainer dengan kemampuan NET_RAW Panduan L1 Tergantung pada Lingkungan
5.2.9 Minimalkan penerimaan wadah yang memiliki kemampuan tambahan Panduan L1 Tergantung pada Lingkungan
5.2.10 Minimalisir pemasukan kontainer dengan kemampuan yang telah ditugaskan Panduan L2 Tergantung pada Lingkungan
5.2.11 Meminimalkan penerimaan Kontainer HostProcess Windows Panduan L1 Tergantung pada Lingkungan
5.2.12 Meminimalkan penerimaan volume HostPath Panduan L1 Tergantung pada Lingkungan
5.2.13 Meminimalkan penerimaan kontainer yang menggunakan HostPorts Panduan L1 Tergantung pada Lingkungan
5.3 Kebijakan Jaringan dan CNI
5.3.1 Pastikan bahwa CNI yang digunakan mendukung Kebijakan Jaringan Panduan L1 Lulus
5.3.2 Pastikan bahwa semua Namespace memiliki Kebijakan Jaringan yang ditentukan Panduan L2 Tergantung pada Lingkungan
5.4 Manajemen Rahasia
5.4.1 Lebih suka menggunakan rahasia sebagai file daripada rahasia sebagai variabel lingkungan Panduan L2 Tergantung pada Lingkungan
5.4.2 Pertimbangkan penyimpanan rahasia eksternal Panduan L2 Tergantung pada Lingkungan
5.5 Kontrol Masuk yang Dapat Diperluas
5.5.1 Konfigurasikan Asal Usul Gambar menggunakan pengendali penerimaan ImagePolicyWebhook Panduan L2 Gagal Kontrol yang setara diimplementasikan
5.6 Kebijakan Umum
5.6.1 Buat batasan administratif antara sumber daya menggunakan ruang nama Panduan L1 Tergantung pada Lingkungan
5.6.2 Pastikan bahwa profil seccomp diatur ke docker/default dalam definisi pod Anda Panduan L2 Tergantung pada Lingkungan
5.6.3 Terapkan Konteks Keamanan ke Pod dan Kontainer Anda Panduan L2 Tergantung pada Lingkungan
5.6.4 Namespace default tidak boleh digunakan Panduan L2 Tergantung pada Lingkungan

Catatan

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

Catatan lainnya

  • 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 dinonaktifkan di OS.

Langkah berikutnya

Untuk informasi selengkapnya tentang keamanan AKS, lihat artikel berikut: