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).
Berikut ini adalah hasil dari rekomendasi CIS Kubernetes V1.27 Benchmark v1.9.0 pada AKS. Hasilnya berlaku untuk AKS 1.27.x melalui AKS 1.29.x.
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 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 seperti yang didefinisikan di bawah ini:
- Otomatis: Mewakili rekomendasi di mana penilaian kontrol teknis dapat sepenuhnya otomatis dan divalidasi ke status lulus/gagal. Rekomendasi akan menyertakan 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.
Rekomendasi dapat memiliki salah satu status pengesahan berikut:
- Pass: Rekomendasi telah diterapkan.
- Gagal: Rekomendasi belum 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 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 otomatis 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 | Status penilaian | 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 | Otomatis | L1 | T/A |
1.1.2 | Pastikan bahwa kepemilikan file spesifikasi pod server API pod diatur 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 diatur ke 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 bahwa kepemilikan file spesifikasi pod etcd diatur ke root:root | Otomatis | L1 | T/A |
1.1.9 | Pastikan bahwa izin file Antarmuka Jaringan Kontainer diatur ke 600 atau lebih ketat | Manual | L1 | T/A |
1.1.10 | Pastikan bahwa kepemilikan file Antarmuka Jaringan Kontainer diatur ke root:root | Manual | 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 bahwa 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 bahwa 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 bahwa 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 | Manual | L1 | T/A |
1.1.21 | Pastikan bahwa izin file kunci PKI Kubernetes diatur ke 600 | Manual | L1 | T/A |
1.2 | Server API | |||
1.2.1 | Pastikan bahwa argumen --anonymous-auth disetel ke false |
Manual | L1 | Lulus |
1.2.2 | Pastikan bahwa parameter --token-auth-file tidak disetel |
Otomatis | L1 | Gagal |
1.2.3 | Pastikan bahwa --DenyServiceExternalIPs tidak diatur |
Manual | L1 | Gagal |
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 bahwa argumen --authorization-mode tidak disetel 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 | Manual | L1 | Gagal |
1.2.10 | Pastikan bahwa plugin kontrol penerimaan AlwaysAdmit tidak disetel | Otomatis | L1 | Lulus |
1.2.11 | Pastikan bahwa plugin kontrol penerimaan AlwaysPullImages disetel | Manual | L1 | Gagal |
1.2.12 | Pastikan bahwa plugin kontrol masuk ServiceAccount disetel | Otomatis | L2 | Gagal |
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 |
Manual | 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 |
Manual | L1 | Tergantung pada Lingkungan |
1.2.28 | Pastikan bahwa penyedia enkripsi dikonfigurasi dengan tepat | Manual | L1 | Tergantung pada Lingkungan |
1.2.29 | Pastikan bahwa Server API hanya menggunakan Strong Cryptographic Ciphers | Manual | L1 | Lulus |
1.3 | Manajer Pengontrol | |||
1.3.1 | Pastikan bahwa argumen --terminated-pod-gc-threshold disetel sebagaimana mestinya |
Manual | 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 | Scheduler | |||
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 bahwa argumen --auto-tls tidak disetel ke true |
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 bahwa argumen --peer-auto-tls tidak disetel ke true |
Otomatis | L1 | Lulus |
2.7 | Pastikan bahwa Otoritas Sertifikat unik digunakan untuk etcd | Manual | L2 | Lulus |
3 | Konfigurasi Sarana Kontrol | |||
3.1 | Autentikasi dan Otorisasi | |||
3.1.1 | Autentikasi sertifikat klien tidak boleh digunakan untuk pengguna | Manual | L1 | Lulus |
3.1.2 | Autentikasi token akun layanan tidak boleh digunakan untuk pengguna | Manual | L1 | Lulus |
+3.1.3 | Autentikasi token bootstrap tidak boleh digunakan untuk pengguna | Manual | L1 | Lulus |
3.2 | Pencatatan | |||
3.2.1 | Pastikan bahwa kebijakan audit minimal dibuat | Manual | L1 | Lulus |
3.2.2 | Pastikan bahwa kebijakan audit mencakup masalah keamanan utama | Manual | 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 bahwa 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 | Manual | L1 | T/A |
4.1.4 | Jika ada file kubeconfig proksi, pastikan kepemilikan diatur ke root:root | Manual | 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 | Manual | L1 | Lulus |
4.1.8 | Pastikan bahwa kepemilikan file otoritas sertifikat klien diatur ke root: root | Manual | 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 bahwa argumen --authorization-mode tidak disetel 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 |
Manual | L1 | Lulus |
4.2.5 | Pastikan bahwa argumen --streaming-connection-idle-timeout tidak disetel ke 0 |
Manual | L1 | Lulus |
4.2.6 | Pastikan bahwa argumen --make-iptables-util-chains disetel ke true |
Otomatis | L1 | Lulus |
4.2.7 | Pastikan bahwa argumen --hostname-override tidak disetel |
Manual | L1 | Lulus |
4.2.8 | Pastikan argumen --eventRecordQPS diatur ke tingkat yang memastikan pengambilan peristiwa yang sesuai |
Manual | L2 | Lulus |
4.2.9 | Pastikan bahwa argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya |
Manual | L1 | Lulus |
4.2.10 | Pastikan bahwa argumen --rotate-certificates tidak disetel ke false |
Otomatis | L1 | Lulus |
4.2.11 | Verifikasi bahwa argumen RotateKubeletServerCertificate diatur ke true | Manual | L1 | Gagal |
4.2.12 | Pastikan bahwa Kubelet hanya menggunakan Sandi Kriptografi yang Kuat | Manual | L1 | Lulus |
4.2.13 | Pastikan batas diatur pada PID pod | Manual | L1 | Lulus |
4.3 | kube-proxy | |||
4.3.1 | Pastikan bahwa layanan metrik kube-proxy terikat ke localhost | Otomatis | L1 | Lulus |
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 | Minimalkan penggunaan kartubebas 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 bahwa 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 grup system:masters | Manual | L1 | Tergantung pada Lingkungan |
5.1.8 | Batasi penggunaan izin Bind, Impersonate, dan Escalate di kluster Kubernetes | Manual | L1 | Tergantung pada Lingkungan |
5.1.9 | Meminimalkan akses untuk membuat volume persisten | Manual | L1 | Tergantung pada Lingkungan |
5.1.10 | Meminimalkan akses ke sub-sumber daya proksi simpul | Manual | L1 | Tergantung pada Lingkungan |
5.1.11 | Meminimalkan akses ke sub-sumber daya persetujuan objek certificatesigningrequests | Manual | L1 | Tergantung pada Lingkungan |
5.1.12 | Meminimalkan akses ke objek konfigurasi webhook | Manual | L1 | Tergantung pada Lingkungan |
5.1.13 | Meminimalkan akses ke pembuatan token akun layanan | Manual | L1 | Tergantung pada Lingkungan |
5.2 | Standar Keamanan Pod | |||
5.2.1 | Pastikan bahwa kluster memiliki setidaknya satu mekanisme kontrol kebijakan aktif di tempat | Manual | L1 | Tergantung pada Lingkungan |
5.2.2 | Minimalkan masuknya kontainer istimewa | Manual | L1 | Tergantung pada Lingkungan |
5.2.3 | Minimalkan penerimaan kontainer yang ingin berbagi namespace ID proses host | Manual | L1 | Tergantung pada Lingkungan |
5.2.4 | Minimalkan masuknya kontainer yang ingin berbagi namespace IPC host | Manual | L1 | Tergantung pada Lingkungan |
5.2.5 | Minimalkan penerimaan kontainer yang ingin berbagi ruang nama jaringan host | Manual | L1 | Tergantung pada Lingkungan |
5.2.6 | Minimalkan penerimaan kontainer dengan allowPrivilegeEscalation | Manual | L1 | Tergantung pada Lingkungan |
5.2.7 | Minimalkan masuknya kontainer root | Manual | L2 | Tergantung pada Lingkungan |
5.2.8 | Minimalkan penerimaan kontainer dengan kemampuan NET_RAW | Manual | L1 | Tergantung pada Lingkungan |
5.2.9 | Minimalkan penerimaan kontainer dengan kemampuan tambahan | Manual | L1 | Tergantung pada Lingkungan |
5.2.10 | Minimalkan penerimaan kontainer dengan kemampuan yang ditetapkan | Manual | L2 | Tergantung pada Lingkungan |
5.2.11 | Meminimalkan penerimaan Kontainer HostProcess Windows | Manual | L1 | Tergantung pada Lingkungan |
5.2.12 | Meminimalkan penerimaan volume HostPath | Manual | L1 | Tergantung pada Lingkungan |
5.2.13 | Meminimalkan penerimaan kontainer yang menggunakan HostPorts | Manual | L1 | Tergantung pada Lingkungan |
5.3 | Kebijakan Jaringan dan CNI | |||
5.3.1 | Pastikan bahwa CNI yang digunakan mendukung Kebijakan Jaringan | Manual | L1 | Lulus |
5.3.2 | Pastikan bahwa semua Namespace memiliki Kebijakan Jaringan yang ditentukan | Manual | L2 | Tergantung pada Lingkungan |
5.4 | Manajemen Rahasia | |||
5.4.1 | Lebih suka menggunakan rahasia sebagai file daripada rahasia sebagai variabel lingkungan | Manual | L2 | Tergantung pada Lingkungan |
5.4.2 | Pertimbangkan penyimpanan rahasia eksternal | Manual | L2 | Tergantung pada Lingkungan |
5.5 | Kontrol Masuk yang Dapat Diperluas | |||
5.5.1 | Konfigurasikan Sumber Gambar menggunakan pengontrol masuk ImagePolicyWebhook | Manual | L2 | Gagal |
5.6 | Kebijakan Umum | |||
5.6.1 | Buat batasan administratif antara sumber daya menggunakan ruang nama | Manual | L1 | Tergantung pada Lingkungan |
5.6.2 | Pastikan bahwa profil seccomp disetel ke buruh pelabuhan/default dalam definisi pod Anda | Manual | L2 | Tergantung pada Lingkungan |
5.6.3 | Terapkan Konteks Keamanan ke Pod dan Kontainer Anda | Manual | L2 | Tergantung pada Lingkungan |
5.6.4 | Namespace default tidak boleh digunakan | Manual | L2 | Tergantung pada Lingkungan |
Catatan
Selain tolok ukur CIS Kubernetes, tersedia juga patokan CIS AKS.
- 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.
Untuk informasi selengkapnya tentang keamanan AKS, lihat artikel berikut:
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: