Dokumen ini menjelaskan apa yang dimaksud dengan Tolok Ukur CIS Kubernetes dan Google Kubernetes Engine (GKE), cara mengaudit kepatuhan Anda terhadap Tolok ukur, dan apa saja yang dikonfigurasi GKE di mana Anda tidak dapat langsung mengaudit atau menerapkan rekomendasi.
Menggunakan Tolok Ukur CIS
Center for Internet Security (CIS) merilis tolok ukur untuk rekomendasi praktik terbaik keamanan. Tolok Ukur Kubernetes CIS adalah serangkaian rekomendasi dalam mengonfigurasi Kubernetes untuk mendukung postur keamanan yang kuat. Tolok ukur ini terikat dengan rilis Kubernetes tertentu. Tolok Ukur Kubernetes CIS ditulis untuk distribusi Kubernetes open source dan dimaksudkan untuk dapat diterapkan secara universal di seluruh distribusi.
Dengan layanan terkelola seperti GKE, tidak semua item di tolok ukur merupakan tanggung jawab Anda, dan ada beberapa rekomendasi yang tidak dapat Anda audit atau perbaiki sendiri secara langsung. Jika Anda menjalankan GKE, gunakan Tolok Ukur GKE CIS, yang merupakan tolok ukur turunan dari CIS Kubernetes Benchmark, yang dimaksudkan secara khusus untuk diterapkan ke Distribusi GKE. Tindakan ini diambil dari Tolok Ukur CIS yang ada, tetapi menghapus item yang tidak dapat dikonfigurasi atau dikelola oleh pengguna dan menambahkan kontrol tambahan khusus untuk Google Cloud.
Beberapa set Tolok Ukur
Dengan GKE, Anda dapat menggunakan Tolok Ukur CIS untuk GKE, Kubernetes, Docker, Container-Optimized OS, dan Linux. Untuk mendownload tolok ukur terbaru produk ini, kunjungi situs Tolok Ukur CIS.
Runtime container default, containerd, tidak memiliki Tolok Ukur CIS.
Node Windows Server yang digunakan dengan GKE tidak diberi skor berdasarkan tolok ukur CIS yang sesuai karena tolok ukur Windows Server CIS tidak secara khusus mengizinkan penggunaan Kubernetes, dan tolok ukur Kubernetes CIS saat ini tidak mengakomodasi node Windows.
Beberapa alat mencoba menganalisis node Kubernetes dengan beberapa Tolok Ukur CIS (misalnya Linux, Docker, dan Kubernetes) dan menggabungkan hasilnya. Analisis ini sering kali memberikan saran yang membingungkan dan mungkin bertentangan karena tolok ukur tersebut tidak dirancang untuk digabungkan dan diterapkan di lingkungan Kubernetes.
Model tanggung jawab bersama
Di GKE, pada Model tanggung jawab bersama, Google mengelola komponen Kubernetes berikut:
- Bidang kontrol, termasuk VM bidang kontrol, server API, komponen lain pada VM, dan etcd.
- Distribusi Kubernetes.
- Sistem operasi node.
Konfigurasi yang terkait dengan item ini biasanya tidak bisa Anda audit atau ubah di GKE.
Anda masih bertanggung jawab untuk mengupgrade node yang menjalankan workload Anda, dan workload itu sendiri. Anda umumnya dapat mengaudit dan memperbaiki rekomendasi apa pun untuk komponen ini.
Kemampuan untuk mengaudit dan memperbaiki
Tolok Ukur GKE CIS diambil dari Tolok Ukur Kubernetes CIS yang ada, tetapi menghapus item yang tidak dapat dikonfigurasi atau dikelola pengguna, dan menambahkan kontrol tambahan yang khusus untuk Google Cloud.
Bagian dari Tolok Ukur GKE CIS adalah:
- Komponen Bidang Kontrol, etcd, dan Konfigurasi Bidang Kontrol (bagian 1, 2, dan 3) berasal dari Tolok Ukur Kubernetes CIS. Bagian ini biasanya tidak dapat diaudit atau diperbaiki di GKE.
- Worker Node (bagian 4) berasal dari Tolok Ukur Kubernetes CIS. Beberapa item ini dapat diaudit atau diperbaiki di GKE, tetapi petunjuknya mungkin berbeda.
- Kebijakan (bagian 5) juga berasal dari Tolok Ukur Kubernetes CIS. Bagian ini umumnya berlaku secara langsung untuk GKE, tanpa perubahan petunjuk.
- Layanan terkelola (bagian 6) di Tolok Ukur GKE CIS adalah konten baru khusus untuk GKE. Bagian ini berisi semua rekomendasi spesifik untuk kontrol Google Cloud. Bagian ini dapat diaudit dan diperbaiki di GKE.
Untuk item yang tidak dapat diaudit atau diperbaiki di GKE, lihat bagian Nilai default untuk memahami performa cluster default yang dibuat di GKE dengan Tolok Ukur Kubernetes.
Versi
Perlu diingat bahwa nomor versi untuk tolok ukur yang berbeda mungkin tidak sama.
Dokumen ini merujuk pada versi berikut:
Versi Kubernetes | Versi Tolok Ukur Kubernetes CIS | Versi Tolok Ukur GKE CIS |
---|---|---|
1.15 | 1.5.0 | 1.0.0 |
Tolok Ukur Kubernetes CIS
Mengakses Tolok Ukur
Tolok Ukur Kubernetes CIS tersedia di situs CIS.
Level rekomendasi
Dalam Tolok Ukur Kubernetes CIS:
Level | Deskripsi |
---|---|
Level 1 | Rekomendasi bertujuan untuk: |
Level 2 | Memperluas profil Level 1. Rekomendasi menunjukkan satu atau beberapa karakteristik berikut: |
Penskoran rekomendasi
Dalam Tolok Ukur Kubernetes CIS:
Pemberian skor | Deskripsi |
---|---|
Dinilai | Ketidakpatuhan terhadap rekomendasi ini akan menurunkan skor akhir tolok ukur. |
Tidak Dinilai | Ketidakpatuhan terhadap rekomendasi ini tidak menurunkan skor akhir tolok ukur. |
Evaluasi GKE
Kami menggunakan nilai berikut untuk menentukan status rekomendasi Kubernetes di GKE:
Status | Deskripsi |
---|---|
Lulus | Mematuhi rekomendasi tolok ukur. |
Gagal | Tidak mematuhi rekomendasi tolok ukur. |
Kontrol Setara | Tidak mematuhi persyaratan yang sama persis dengan rekomendasi tolok ukur, tetapi terdapat mekanisme lain di GKE untuk memberikan kontrol keamanan yang setara. |
Bergantung pada Lingkungan | GKE tidak mengonfigurasi item yang terkait dengan rekomendasi ini. Konfigurasi pengguna menentukan apakah lingkungan mereka mematuhi rekomendasi tolok ukur. |
Status GKE
Saat membuat cluster GKE baru dengan versi yang ditentukan, berikut adalah performanya pada Tolok Ukur Kubernetes CIS.
Status cluster GKE default:
# | Rekomendasi | Dinilai/ Tidak Dinilai | Level | Status Default |
---|---|---|---|---|
1 | Komponen Bidang Kontrol | |||
1.1 | File Konfigurasi Node Bidang Kontrol | |||
1.1.1 | Memastikan izin file spesifikasi pod server API disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.2 | Memastikan kepemilikan file spesifikasi pod server API disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.3 | Memastikan izin file spesifikasi pod pengelola pengontrol disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.4 | Memastikan kepemilikan file spesifikasi pod pengelola pengontrol disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.5 | Memastikan izin file spesifikasi pod scheduler disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.6 | Memastikan kepemilikan file spesifikasi pod scheduler disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.7 | Memastikan izin file spesifikasi pod etcd disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.8 | Memastikan kepemilikan file spesifikasi pod etcd disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.9 | Memastikan izin file Antarmuka Jaringan Container disetel ke 644 atau lebih ketat |
Tidak Dinilai | L1 | Lulus |
1.1.10 | Memastikan kepemilikan file Antarmuka Jaringan Container disetel ke root:root |
Tidak Dinilai | L1 | Lulus |
1.1.11 | Memastikan izin direktori data etcd disetel ke 700 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.12 | Memastikan kepemilikan direktori data etcd disetel ke etcd:etcd |
Dinilai | L1 | Lulus |
1.1.13 | Memastikan izin file admin.conf disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.14 | Memastikan kepemilikan file admin.conf disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.15 | Memastikan izin file scheduler.conf disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.16 | Memastikan kepemilikan file scheduler.conf disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.17 | Memastikan izin file controller-manager.conf disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.18 | Memastikan kepemilikan file controller-manager.conf disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.19 | Memastikan kepemilikan file dan direktori IKP Kubernetes disetel ke root:root |
Dinilai | L1 | Lulus |
1.1.20 | Memastikan izin file sertifikat IKP Kubernetes disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
1.1.21 | Memastikan izin file kunci IKP Kubernetes disetel ke 600 |
Dinilai | L1 | Lulus |
1.2 | Server API | |||
1.2.1 | Memastikan argumen --anonymous-auth disetel ke false | Tidak Dinilai | L1 | Gagal |
1.2.2 | Memastikan argumen --basic-auth-file tidak disetel | Dinilai | L1 | Lulus |
1.2.3 | Memastikan parameter --token-auth-file tidak ditetapkan | Dinilai | L1 | Gagal |
1.2.4 | Memastikan argumen --kubelet-https disetel ke true | Dinilai | L1 | Lulus |
1.2.5 | Memastikan argumen --kubelet-client-certificate dan --kubelet-client-key disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.6 | Memastikan argumen --kubelet-certificate-authority disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.7 | Memastikan argumen --authorization-mode tidak disetel ke AlwaysAllow | Dinilai | L1 | Lulus |
1.2.8 | Memastikan argumen --authorization-mode menyertakan Node | Dinilai | L1 | Lulus |
1.2.9 | Memastikan argumen --authorization-mode menyertakan RBAC | Dinilai | L1 | Lulus |
1.2.10 | Memastikan plugin kontrol penerimaan EventRateLimit ditetapkan | Tidak Dinilai | L1 | Gagal |
1.2.11 | Memastikan plugin kontrol penerimaan AlwaysAdmit tidak ditetapkan | Dinilai | L1 | Lulus |
1.2.12 | Memastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan | Tidak Dinilai | L1 | Gagal |
1.2.13 | Memastikan plugin kontrol penerimaan SecurityContextDeny ditetapkan jika PodSecurityPolicy tidak digunakan | Tidak Dinilai | L1 | Gagal |
1.2.14 | Memastikan plugin kontrol penerimaan ServiceAccount ditetapkan | Dinilai | L1 | Lulus |
1.2.15 | Memastikan plugin kontrol penerimaan NamespaceLifecycle ditetapkan | Dinilai | L1 | Lulus |
1.2.16 | Memastikan plugin kontrol penerimaan PodSecurityPolicy ditetapkan | Dinilai | L1 | Gagal |
1.2.17 | Memastikan plugin kontrol penerimaan NodeRestriction ditetapkan | Dinilai | L1 | Lulus |
1.2.18 | Memastikan argumen --insecure-bind-address tidak ditetapkan | Dinilai | L1 | Lulus |
1.2.19 | Memastikan argumen --insecure-port disetel ke 0 | Dinilai | L1 | Lulus |
1.2.20 | Memastikan argumen --secure-port tidak disetel ke 0 | Dinilai | L1 | Lulus |
1.2.21 | Memastikan argumen --profiling disetel ke false | Dinilai | L1 | Gagal |
1.2.22 | Memastikan argumen --audit-log-path ditetapkan | Dinilai | L1 | Kontrol Setara |
1.2.23 | Memastikan argumen --audit-log-maxage disetel ke 30 atau sebagaimana mestinya | Dinilai | L1 | Kontrol Setara |
1.2.24 | Memastikan argumen --audit-log-maxbackup disetel ke 10 atau sebagaimana mestinya | Dinilai | L1 | Kontrol Setara |
1.2.25 | Memastikan argumen --audit-log-maxsize disetel ke 100 atau sebagaimana mestinya | Dinilai | L1 | Kontrol Setara |
1.2.26 | Memastikan argumen --request-timeout disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.27 | Memastikan argumen --service-account-lookup disetel ke true | Dinilai | L1 | Lulus |
1.2.28 | Memastikan argumen --service-account-key-file disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.29 | Memastikan argumen --etcd-certfile dan --etcd-keyfile disetel sebagaimana mestinya | Dinilai | L1 | Gagal |
1.2.30 | Memastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.31 | Memastikan argumen --client-ca-file disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.32 | Memastikan argumen --etcd-cafile disetel sebagaimana mestinya | Dinilai | L1 | Gagal |
1.2.33 | Memastikan argumen --encryption-provider-config disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.2.34 | Memastikan penyedia enkripsi dikonfigurasi dengan benar | Dinilai | L1 | Gagal |
1.2.35 | Memastikan Server API hanya menggunakan Cipher Kriptografi yang Kuat | Tidak Dinilai | L1 | Lulus |
1.3 | Controller Manager | |||
1.3.1 | Memastikan argumen --resolved-pod-gc-threshold disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.3.2 | Memastikan argumen --profiling disetel ke false | Dinilai | L1 | Gagal |
1.3.3 | Memastikan argumen --use-service-account-credentials disetel ke true | Dinilai | L1 | Gagal |
1.3.4 | Memastikan argumen --service-account-private-key-file disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.3.5 | Memastikan argumen --root-ca-file disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
1.3.6 | Memastikan argumen RotateKubeletServerCertificate disetel ke true | Dinilai | L2 | Kontrol Setara |
1.3.7 | Memastikan argumen --bind-address disetel ke 127.0.0.1 | Dinilai | L1 | Lulus |
1.4 | Scheduler | |||
1.4.1 | Memastikan argumen --profiling disetel ke false | Dinilai | L1 | Gagal |
1.4.2 | Memastikan argumen --bind-address disetel ke 127.0.0.1 | Dinilai | L1 | Lulus |
2 | etcd | |||
2.1 | Memastikan argumen --cert-file dan --key-file disetel sebagaimana mestinya | Dinilai | L1 | Gagal |
2.2 | Memastikan argumen --client-cert-auth disetel ke true | Dinilai | L1 | Gagal |
2.3 | Memastikan argumen --auto-tls tidak disetel ke true | Dinilai | L1 | Lulus |
2.4 | Memastikan argumen --peer-cert-file dan --peer-key-file disetel sebagaimana mestinya | Dinilai | L1 | Kontrol Setara |
2.5 | Memastikan argumen --peer-client-cert-auth disetel ke true | Dinilai | L1 | Kontrol Setara |
2.6 | Memastikan argumen --peer-auto-tls tidak disetel ke true | Dinilai | L1 | Kontrol Setara |
2.7 | Memastikan Certificate Authority yang digunakan untuk etcd unik | Tidak Dinilai | L2 | Lulus |
3 | Konfigurasi Bidang Kontrol | |||
3.1 | Autentikasi dan Otorisasi | |||
3.1.1 | Otentikasi sertifikat klien tidak boleh digunakan untuk pengguna. | Tidak Dinilai | L2 | Lulus |
3.2 | Logging | |||
3.2.1 | Memastikan kebijakan audit minimal telah dibuat | Dinilai | L1 | Lulus |
3.2.2 | Memastikan kebijakan audit mencakup masalah keamanan utama | Tidak Dinilai | L2 | Lulus |
4 | Worker Node | |||
4.1 | File Konfigurasi Worker Node | |||
4.1.1 | Memastikan izin file layanan kubelet disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
4.1.2 | Memastikan kepemilikan file layanan kubelet disetel ke root:root |
Dinilai | L1 | Lulus |
4.1.3 | Memastikan izin file kubeconfig proxy disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
4.1.4 | Memastikan kepemilikan file kubeconfig proxy disetel ke root:root |
Dinilai | L1 | Lulus |
4.1.5 | Memastikan izin file kubelet.conf disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
4.1.6 | Memastikan kepemilikan file kubelet.conf disetel ke root:root |
Dinilai | L1 | Lulus |
4.1.7 | Memastikan izin file certificate authority disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
4.1.8 | Memastikan kepemilikan file certificate authority klien disetel ke root:root |
Dinilai | L1 | Lulus |
4.1.9 | Memastikan izin file konfigurasi kubelet disetel ke 644 atau lebih ketat |
Dinilai | L1 | Lulus |
4.1.10 | Memastikan kepemilikan file konfigurasi kubelet disetel ke root:root |
Dinilai | L1 | Lulus |
4.2 | Kubelet | |||
4.2.1 | Memastikan argumen --anonymous-auth disetel ke false | Dinilai | L1 | Lulus |
4.2.2 | Memastikan argumen --authorization-mode tidak disetel ke AlwaysAllow | Dinilai | L1 | Lulus |
4.2.3 | Memastikan argumen --client-ca-file disetel sebagaimana mestinya | Dinilai | L1 | Lulus |
4.2.4 | Memastikan argumen --read-only-port disetel ke 0 | Dinilai | L1 | Gagal |
4.2.5 | Memastikan argumen --streaming-connection-idle-timeout tidak disetel ke 0 | Dinilai | L1 | Lulus |
4.2.6 | Memastikan argumen --Protect-kernel-defaults disetel ke true | Dinilai | L1 | Gagal |
4.2.7 | Memastikan argumen --make-iptables-util-chains disetel ke true | Dinilai | L1 | Lulus |
4.2.8 | Memastikan argumen --hostname-override tidak ditetapkan | Tidak Dinilai | L1 | Lulus |
4.2.9 | Memastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang sesuai | Tidak Dinilai | L2 | Gagal |
4.2.10 | Memastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya | Dinilai | L1 | Kontrol Setara |
4.2.11 | Memastikan argumen --rotate-certificates tidak disetel ke false | Dinilai | L1 | Kontrol Setara |
4.2.12 | Memastikan argumen RotateKubeletServerCertificate disetel ke true | Dinilai | L1 | Kontrol Setara |
4.2.13 | Memastikan Kubelet hanya menggunakan Cipher Kriptografi yang Kuat | Tidak Dinilai | L1 | Gagal |
5 | Kebijakan | |||
5.1 | RBAC dan Akun Layanan | |||
5.1.1 | Memastikan peran admin cluster hanya digunakan jika diperlukan | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.1.2 | Meminimalkan akses ke secret | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.1.3 | Meminimalkan penggunaan karakter pengganti dalam Peran dan ClusterRole | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.1.4 | Meminimalkan akses untuk membuat pod | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.1.5 | Memastikan akun layanan default tidak digunakan secara aktif | Dinilai | L1 | Bergantung pada Lingkungan |
5.1.6 | Memastikan Token Akun Layanan hanya dipasang jika diperlukan | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.2 | Kebijakan Keamanan Pod | |||
5.2.1 | Meminimalkan penerimaan container dengan hak istimewa | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.2.2 | Meminimalkan penerimaan container yang ingin berbagi namespace ID proses host | Dinilai | L1 | Bergantung pada Lingkungan |
5.2.3 | Meminimalkan penerimaan container yang ingin berbagi namespace IPC host | Dinilai | L1 | Bergantung pada Lingkungan |
5.2.4 | Meminimalkan penerimaan container yang ingin berbagi namespace jaringan host | Dinilai | L1 | Bergantung pada Lingkungan |
5.2.5 | Meminimalkan penerimaan container dengan allowPrivilegeEscalation | Dinilai | L1 | Bergantung pada Lingkungan |
5.2.6 | Meminimalkan penerimaan container root | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
5.2.7 | Meminimalkan penerimaan container dengan kemampuan NET_RAW | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.2.8 | Meminimalkan penerimaan container dengan kemampuan tambahan | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.2.9 | Meminimalkan penerimaan container dengan kemampuan yang ditetapkan | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
5.3 | Kebijakan Jaringan dan CNI | |||
5.3.1 | Memastikan CNI yang digunakan mendukung Kebijakan Jaringan | Tidak Dinilai | L1 | Lulus |
5.3.2 | Memastikan semua Namespace telah menentukan Kebijakan Jaringan | Dinilai | L2 | Bergantung pada Lingkungan |
5.4 | Pengelolaan Secret | |||
5.4.1 | Lebih memilih menggunakan secret sebagai file daripada sebagai variabel lingkungan | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.4.2 | Mempertimbangkan penyimpanan secret eksternal | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
5.5 | Kontrol Penerimaan yang Dapat Diperluas | |||
5.5.1 | Mengonfigurasi Provenance Image menggunakan pengontrol penerimaan ImagePolicyWebhook | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
5.6 | Kebijakan Umum | |||
5.6.1 | Membuat batas administratif antar resource menggunakan namespace | Tidak Dinilai | L1 | Bergantung pada Lingkungan |
5.6.2 | Memastikan profil seccomp disetel ke docker/default di definisi pod Anda | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
5.6.3 | Menerapkan Konteks Keamanan ke Pod dan Container Anda | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
5.6.4 | Namespace default tidak boleh digunakan | Dinilai | L2 | Bergantung pada Lingkungan |
Nilai default GKE
Jika default untuk cluster GKE baru tidak meneruskan rekomendasi Tolok Ukur Kubernetes CIS, berikut adalah nilai default yang digunakan di GKE, beserta penjelasannya. Beberapa rekomendasi ini dapat diperbaiki, dengan mengikuti prosedur perbaikan yang ditetapkan dalam Tolok Ukur GKE CIS. Item yang dapat diaudit secara otomatis ditandai sebagai Dinilai pada Tolok Ukur GKE CIS.
Nilai default untuk rekomendasi yang Gagal atau Bergantung pada Lingkungan di cluster GKE default:
# | Rekomendasi | Dinilai/ Tidak Dinilai pada Tolok Ukur Kubernetes CIS |
Level | Status Default | Nilai Default | Justifikasi | Dinilai/ Tidak Dinilai pada Tolok Ukur GKE CIS |
---|---|---|---|---|---|---|---|
1 | Komponen Bidang Kontrol | ||||||
1.2 | Server API | ||||||
1.2.1 | Memastikan argumen --anonymous-auth disetel ke false | Tidak Dinilai | L1 | Gagal | true |
Beberapa komponen pemantauan GKE menggunakan autentikasi anonim untuk mendapatkan metrik. Meskipun GKE mengizinkan autentikasi anonim untuk kubelet, eksposurnya identik dengan port hanya baca karena GKE menonaktifkan pengendali proses debug tambahan. | Tidak Dinilai |
1.2.3 | Memastikan parameter --token-auth-file tidak ditetapkan | Dinilai | L1 | Gagal | Ditetapkan | Beberapa komponen bidang kontrol di-bootstrap menggunakan token statis, yang kemudian digunakan untuk melakukan autentikasi ke server API. | Tidak Dinilai |
1.2.10 | Memastikan plugin kontrol penerimaan EventRateLimit ditetapkan | Tidak Dinilai | L1 | Gagal | Tidak ditetapkan | GKE tidak mendukung pengontrol penerimaan Batas Kapasitas Peristiwa karena pengontrol ini merupakan fitur Kubernetes Alpha. | Tidak Dinilai |
1.2.12 | Memastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan | Tidak Dinilai | L1 | Gagal | Tidak ditetapkan | Pengontrol penerimaan AlwaysPullImages memberikan beberapa perlindungan untuk image registry pribadi di cluster multitenant non-kooperatif, namun juga menjadikan container registry titik tunggal kegagalan untuk membuat Pod baru di seluruh cluster. GKE tidak mengaktifkan pengontrol penerimaan AlwaysPullImages, sehingga admin cluster bebas dalam menerapkan kebijakan penerimaan dan melakukan pertukaran ini. | Tidak Dinilai |
1.2.13 | Memastikan plugin kontrol penerimaan SecurityContextDeny ditetapkan jika PodSecurityPolicy tidak digunakan | Tidak Dinilai | L1 | Gagal | Tidak ditetapkan | GKE tidak mengaktifkan pengontrol penerimaan Konteks Keamanan secara default. Penggunaan Kebijakan Keamanan Pod memungkinkan lebih banyak kontrol dan lebih disarankan. | Tidak Dinilai |
1.2.16 | Memastikan plugin kontrol penerimaan PodSecurityPolicy ditetapkan | Dinilai | L1 | Gagal | Tidak ditetapkan | GKE tidak mengaktifkan pengontrol penerimaan Kebijakan Keamanan Pod secara default, karena tindakan ini memerlukan penyetelan kebijakan. Pelanggan GKE dapat mengaktifkan PodSecurityPolicy. | Tidak Dinilai, lihat juga 6.10.3 |
1.2.21 | Memastikan argumen --profiling disetel ke false | Dinilai | L1 | Gagal | Tidak ditetapkan | GKE menggunakan pembuatan profil untuk proses debug. | Tidak Dinilai |
1.2.22 | Memastikan argumen --audit-log-path ditetapkan | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menangkap log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat kebijakan Audit GKE untuk detail selengkapnya. | Tidak Dinilai |
1.2.23 | Memastikan argumen --audit-log-maxage disetel ke 30 atau sebagaimana mestinya | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menangkap log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat kebijakan Audit GKE untuk detail selengkapnya. | Tidak Dinilai |
1.2.24 | Memastikan argumen --audit-log-maxbackup disetel ke 10 atau sebagaimana mestinya | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menangkap log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat kebijakan Audit GKE untuk detail selengkapnya. | Tidak Dinilai |
1.2.25 | Memastikan argumen --audit-log-maxsize disetel ke 100 atau sebagaimana mestinya | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menangkap log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat kebijakan Audit GKE untuk detail selengkapnya. | Tidak Dinilai |
1.2.29 | Memastikan argumen --etcd-certfile dan --etcd-keyfile disetel sebagaimana mestinya | Dinilai | L1 | Gagal | Tidak ditetapkan | GKE saat ini tidak menggunakan mTLS untuk melindungi koneksi antara server API dan etcd. Perlu diingat bahwa etcd memproses di localhost. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
1.2.32 | Memastikan argumen --etcd-cafile disetel sebagaimana mestinya | Dinilai | L1 | Gagal | Tidak ditetapkan | GKE saat ini tidak menggunakan mTLS untuk melindungi koneksi antara server API dan etcd. Perlu diingat bahwa etcd memproses di localhost. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
1.2.34 | Memastikan penyedia enkripsi dikonfigurasi dengan benar | Dinilai | L1 | Gagal | identity |
GKE mengenkripsi konten pelanggan dalam penyimpanan secara default. Untuk mengenkripsi secret lebih lanjut, gunakan Enkripsi Secret lapisan Aplikasi. | Tidak Dinilai, lihat juga 6.3.1 |
1.3 | Controller Manager | ||||||
1.3.2 | Memastikan argumen --profiling disetel ke false | Dinilai | L1 | Gagal | true |
GKE menggunakan pembuatan profil untuk proses debug. | Tidak Dinilai |
1.3.6 | Memastikan argumen RotateKubeletServerCertificate disetel ke true | Dinilai | L2 | Kontrol Setara | false |
GKE merotasi sertifikat kubelet, tetapi tidak menggunakan flag ini. | Tidak Dinilai |
1.4 | Scheduler | ||||||
1.4.1 | Memastikan argumen --profiling disetel ke false | Dinilai | L1 | Gagal | true |
GKE menggunakan pembuatan profil untuk proses debug. | Tidak Dinilai |
2 | etcd | ||||||
2.1 | Memastikan argumen --cert-file dan --key-file disetel sebagaimana mestinya | Dinilai | L1 | Gagal | Tidak ditetapkan | GKE saat ini tidak menggunakan mTLS untuk melindungi koneksi antara server API dan etcd. Perlu diingat bahwa etcd memproses di localhost. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
2.2 | Memastikan argumen --client-cert-auth disetel ke true | Dinilai | L1 | Gagal | Tidak ditetapkan | GKE saat ini tidak menggunakan mTLS untuk melindungi koneksi antara server API dan etcd. Perlu diingat bahwa etcd memproses di localhost. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
2.4 | Memastikan argumen --peer-cert-file dan --peer-key-file disetel sebagaimana mestinya | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menggunakan mTLS untuk traffic peer antar instance etcd. Flag ini digunakan untuk cluster regional, tetapi tidak untuk cluster zonal, karena hanya ada satu instance etcd dalam cluster zonal. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
2.5 | Memastikan argumen --peer-client-cert-auth disetel ke true | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menggunakan mTLS untuk traffic peer antar instance etcd. Flag ini digunakan untuk cluster regional, tetapi tidak untuk cluster zonal, karena hanya ada satu instance etcd dalam cluster zonal. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
2.6 | Memastikan argumen --peer-auto-tls tidak disetel ke true | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menggunakan mTLS untuk traffic peer antar instance etcd. Flag ini digunakan untuk cluster regional, tetapi tidak untuk cluster zonal, karena hanya ada satu instance etcd dalam cluster zonal. Lihat Kepercayaan cluster untuk detail selengkapnya. | Tidak Dinilai |
4 | Worker Node | ||||||
4.2 | Kubelet | ||||||
4.2.4 | Memastikan argumen --read-only-port disetel ke 0 | Dinilai | L1 | Gagal | 10255 |
Beberapa komponen pemantauan GKE menggunakan port hanya baca kubelet untuk mendapatkan metrik. | Dinilai |
4.2.6 | Memastikan argumen --Protect-kernel-defaults disetel ke true | Dinilai | L1 | Gagal | false |
GKE tidak melindungi default kernel dari Kubernetes, karena workload pelanggan mungkin ingin mengubahnya. | Dinilai |
4.2.9 | Memastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang sesuai | Tidak Dinilai | L2 | Gagal | 5 |
Peristiwa adalah objek Kubernetes yang disimpan di etcd. Agar etcd tidak terbebani, peristiwa hanya disimpan selama satu jam, dan bukan merupakan mekanisme audit keamanan yang tepat. Mengizinkan jumlah peristiwa tak terbatas seperti yang disarankan dalam kontrol ini akan mengekspos cluster pada risiko DoS yang tidak perlu dan bertentangan dengan rekomendasi untuk menggunakan penerimaan EventRateLimits. Peristiwa terkait keamanan yang memerlukan penyimpanan permanen harus dikirim ke log. | Dinilai |
4.2.10 | Memastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE menggunakan mTLS untuk traffic kubelet ke server API. GKE menggunakan TLS untuk server API ke traffic kubelet, yang telah diautentikasi untuk cluster GKE v1.12+. GKE tidak menggunakan flag ini, tetapi flag ini ditentukan dalam file konfigurasi kubelet. Lihat Kepercayaan cluster untuk detail selengkapnya. | Dinilai |
4.2.11 | Memastikan argumen --rotate-certificates tidak disetel ke false | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE merotasi sertifikat server untuk cluster GKE v1.12+. GKE tidak menggunakan flag ini, tetapi flag ini ditentukan dalam file konfigurasi kubelet. GKE tidak merotasi sertifikat klien, kecuali jika Node GKE yang Terlindungi diaktifkan. Dalam kasus ini, GKE tidak menggunakan flag ini, tetapi menjalankan proses terpisah untuk rotasi sertifikat. Lihat Kepercayaan cluster untuk detail selengkapnya. | Dinilai |
4.2.12 | Memastikan argumen RotateKubeletServerCertificate disetel ke true | Dinilai | L1 | Kontrol Setara | Tidak ditetapkan | GKE merotasi sertifikat server untuk cluster GKE v1.12+. GKE tidak menggunakan flag ini, tetapi flag ini ditentukan dalam file konfigurasi kubelet. Lihat Kepercayaan cluster untuk detail selengkapnya. | Dinilai |
4.2.13 | Memastikan kubelet hanya menggunakan Cipher Kriptografi yang Kuat | Tidak Dinilai | Gagal | Tidak ditetapkan | GKE menggunakan set cipher yang diizinkan default golang, yang dianggap aman untuk digunakan oleh pakar kriptografi golang, dan juga merupakan default untuk Kubernetes. | Tidak Dinilai | |
5 | Kebijakan | ||||||
5.1 | RBAC dan Akun Layanan | ||||||
5.1.1 | Memastikan peran admin cluster hanya digunakan jika diperlukan | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.1.2 | Meminimalkan akses ke secret | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.1.3 | Meminimalkan penggunaan karakter pengganti dalam Peran dan ClusterRole | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.1.4 | Meminimalkan akses untuk membuat pod | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.1.5 | Memastikan akun layanan default tidak digunakan secara aktif | Dinilai | L1 | Bergantung pada Lingkungan | t/a | Dinilai | |
5.1.6 | Memastikan Token Akun Layanan hanya dipasang jika diperlukan | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.2 | Kebijakan Keamanan Pod | ||||||
5.2.1 | Meminimalkan penerimaan container dengan hak istimewa | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.2 | Meminimalkan penerimaan container yang ingin berbagi namespace ID proses host | Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.3 | Meminimalkan penerimaan container yang ingin berbagi namespace IPC host | Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.4 | Meminimalkan penerimaan container yang ingin berbagi namespace jaringan host | Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.5 | Meminimalkan penerimaan container dengan allowPrivilegeEscalation | Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.6 | Meminimalkan penerimaan container root | Tidak Dinilai | L2 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.7 | Meminimalkan penerimaan container dengan kemampuan NET_RAW | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.8 | Meminimalkan penerimaan container dengan kemampuan tambahan | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.2.9 | Meminimalkan penerimaan container dengan kemampuan yang ditetapkan | Tidak Dinilai | L2 | Bergantung pada Lingkungan | t/a | Tidak ada Kebijakan Keamanan Pod yang disetel secara default. | Dinilai |
5.3 | Kebijakan Jaringan dan CNI | ||||||
5.3.2 | Memastikan semua Namespace telah menentukan Kebijakan Jaringan | Dinilai | L2 | Bergantung pada Lingkungan | t/a | Dinilai | |
5.4 | Pengelolaan Secret | ||||||
5.4.1 | Lebih memilih menggunakan secret sebagai file daripada sebagai variabel lingkungan | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.4.2 | Mempertimbangkan penyimpanan secret eksternal | Tidak Dinilai | L2 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.5 | Kontrol Penerimaan yang Dapat Diperluas | ||||||
5.5.1 | Mengonfigurasi Provenance Image menggunakan pengontrol penerimaan ImagePolicyWebhook | Tidak Dinilai | L2 | Bergantung pada Lingkungan | Tidak diaktifkan | GKE tidak mengaktifkan pengontrol penerimaan Webhook Kebijakan Image secara default. Provenance Gambar yang menggunakan Otorisasi Biner tidak ditetapkan secara default, karena ini membutuhkan kebijakan untuk ditetapkan. | Tidak Dinilai, lihat juga 6.10.5 |
5.6 | Kebijakan Umum | ||||||
5.6.1 | Membuat batas administratif antar resource menggunakan namespace | Tidak Dinilai | L1 | Bergantung pada Lingkungan | t/a | Tidak Dinilai | |
5.6.2 | Memastikan profil seccomp disetel ke docker/default di definisi pod Anda | Tidak Dinilai | L2 | Bergantung pada Lingkungan | t/a | Tidak ada profil seccomp yang disetel secara default. | Tidak Dinilai |
5.6.3 | Menerapkan Konteks Keamanan ke Pod dan Container Anda | Tidak Dinilai | L2 | Bergantung pada Lingkungan | t/a | Tidak ada Konteks Keamanan yang disetel secara default. | Tidak Dinilai |
5.6.4 | Namespace default tidak boleh digunakan | Dinilai | L2 | Bergantung pada Lingkungan | t/a | Dinilai |
Tolok Ukur GKE CIS
Mengakses Tolok Ukur
Tolok Ukur GKE CIS tersedia di situs CIS:
- Buka daftar lengkap Tolok Ukur CIS.
- Di bawah judul Kubernetes, klik Luaskan untuk melihat konten terkait.
- Tolok Ukur GKE CIS tersedia untuk didownload.
Level Rekomendasi
Dalam Tolok Ukur GKE CIS,
Level | Deskripsi |
---|---|
Level 1 | Rekomendasi dimaksudkan untuk dapat diterapkan secara luas. Rekomendasi ini harus diterapkan ke hampir semua lingkungan. |
Level 2 | Rekomendasi menghasilkan lingkungan keamanan yang lebih ketat, tetapi tidak selalu berlaku untuk semua kasus. Rekomendasi ini mungkin berdampak pada performa, atau mungkin tidak dapat diterapkan bersama dengan rekomendasi lain. Rekomendasi ini harus dievaluasi untuk lingkungan Anda sebelum diterapkan. Dalam beberapa kasus, misalnya workload multi-tenant, rekomendasi ini mungkin lebih relevan. |
Penskoran rekomendasi
Dalam Tolok Ukur GKE CIS,
Pemberian skor | Deskripsi |
---|---|
Dinilai |
Rekomendasi mudah diuji menggunakan metode otomatis, dan memiliki nilai yang dapat dievaluasi secara pasti. Rekomendasi ini hanya mencakup produk atau fitur yang Tersedia secara Umum. |
Tidak Dinilai |
Rekomendasi tidak dapat dengan mudah dinilai menggunakan otomatisasi atau memerlukan evaluasi untuk menentukan implementasi yang tepat dan sesuai dengan workload Anda. Rekomendasi ini mungkin menggunakan produk atau fitur Beta. Misalnya, Kebijakan Keamanan Pod memerlukan penggunaan kebijakan khusus untuk workload Anda, dan merupakan fitur Beta, sehingga Tidak Dinilai. |
Evaluasi GKE
Untuk rekomendasi khusus GKE (bagian 6), karena semuanya dapat dikonfigurasi untuk Lulus di lingkungan Anda, kami menggunakan nilai berikut untuk menentukan nilai default:
Status | Deskripsi |
---|---|
Default | Cluster baru mematuhi rekomendasi tolok ukur secara default. |
Bukan Default | Cluster baru tidak mematuhi rekomendasi tolok ukur secara default. |
Bergantung pada Lingkungan | GKE tidak mengonfigurasi item yang terkait dengan Rekomendasi ini. Konfigurasi pengguna menentukan apakah lingkungan mereka mematuhi rekomendasi tolok ukur. |
Nilai default GKE
Saat membuat cluster GKE baru dengan versi yang ditentukan, berikut adalah performanya pada Tolok Ukur Kubernetes CIS.
Status cluster GKE default:
# | Rekomendasi | Dinilai/ Tidak Dinilai | Level | Status Default |
---|---|---|---|---|
6 | Layanan terkelola | |||
6.1 | Registry Image dan Pemindaian Image | |||
6.1.1 | Memastikan Pemindaian Kerentanan Image menggunakan Container Analysis GCR atau penyedia pihak ketiga | Dinilai | L1 | Bukan Default |
6.1.2 | Meminimalkan akses pengguna ke GCR | Dinilai | L1 | Bergantung pada Lingkungan |
6.1.3 | Meminimalkan akses cluster ke hanya baca untuk GCR | Dinilai | L1 | Bukan Default |
6.1.4 | Meminimalkan Container Registry hanya untuk yang disetujui | Tidak Dinilai | L2 | Bukan Default |
6.2 | Identity and Access Management (IAM) | |||
6.2.1 | Memilih tidak menjalankan cluster GKE menggunakan akun layanan default Compute Engine | Dinilai | L2 | Bukan Default |
6.2.2 | Lebih memilih menggunakan Akun Layanan Google Cloud dan Workload Identity khusus | Tidak Dinilai | L1 | Bukan Default |
6.3 | Cloud Key Management Service (Cloud KMS) | |||
6.3.1 | Pertimbangkan untuk mengenkripsi Secret Kubernetes menggunakan kunci yang dikelola di Cloud KMS | Dinilai | L1 | Bukan Default |
6.4 | Metadata Node | |||
6.4.1 | Memastikan API metadata instance Compute Engine lama Dinonaktifkan | Dinilai | L1 | Default |
6.4.2 | Memastikan Server Metadata GKE Diaktifkan | Tidak Dinilai | L2 | Bukan Default |
6.5 | Konfigurasi dan Pemeliharaan Node | |||
6.5.1 | Memastikan Container-Optimized OS (COS) digunakan untuk image node GKE | Dinilai | L2 | Default |
6.5.2 | Memastikan Perbaikan Otomatis Node diaktifkan untuk node GKE | Dinilai | L1 | Default |
6.5.3 | Memastikan Upgrade Otomatis Node diaktifkan untuk node GKE | Dinilai | L1 | Default |
6.5.4 | Pertimbangkan untuk mengotomatiskan pengelolaan versi GKE menggunakan Saluran Rilis | Tidak Dinilai | L1 | Bukan Default |
6.5.5 | Memastikan Node GKE yang Terlindungi Diaktifkan | Tidak Dinilai | L1 | Bukan Default |
6.5.6 | Memastikan Pemantauan Integritas untuk Node GKE yang Terlindungi Diaktifkan | Tidak Dinilai | L1 | Bukan Default |
6.5.7 | Memastikan Booting Aman untuk Node GKE yang Terlindungi Diaktifkan | Tidak Dinilai | L2 | Bukan Default |
6.6 | Jaringan Cluster | |||
6.6.1 | Pertimbangkan untuk mengaktifkan Log Aliran Traffic VPC dan Visibilitas Intranode | Tidak Dinilai | L2 | Bukan Default |
6.6.2 | Lebih memilih cluster VPC native | Dinilai | L1 | Bukan Default |
6.6.3 | Memastikan Jaringan yang Diizinkan Master Diaktifkan | Dinilai | L1 | Bukan Default |
6.6.4 | Memastikan cluster dibuat dengan Endpoint Pribadi Aktif dan Akses Publik Nonaktif | Dinilai | L2 | Bukan Default |
6.6.5 | Memastikan cluster dibuat dengan Node Pribadi | Dinilai | L1 | Bukan Default |
6.6.6 | Mempertimbangkan untuk membuat firewall worker node GKE | Tidak Dinilai | L1 | Bukan Default |
6.6.7 | Memastikan Kebijakan Jaringan Diaktifkan dan disetel sebagaimana mestinya | Tidak Dinilai | L1 | Bukan Default |
6.6.8 | Mempertimbangkan untuk menggunakan Sertifikat SSL yang dikelola Google | Tidak Dinilai | L2 | Bergantung pada Lingkungan |
6.7 | Logging | |||
6.7.1 | Memastikan Logging dan Monitoring Stackdriver Kubernetes Diaktifkan | Dinilai | L1 | Default |
6.7.2 | Mempertimbangkan untuk mengaktifkan logging auditd Linux | Tidak Dinilai | L2 | Bukan Default |
6.8 | Autentikasi dan Otorisasi | |||
6.8.1 | Memastikan Autentikasi Dasar yang menggunakan sandi statis Dinonaktifkan | Dinilai | L1 | Default |
6.8.2 | Memastikan autentikasi menggunakan Sertifikat Klien Dinonaktifkan | Dinilai | L1 | Default |
6.8.3 | Mempertimbangkan untuk mengelola pengguna RBAC Kubernetes dengan Google Grup untuk RBAC | Tidak Dinilai | L2 | Bukan Default |
6.8.4 | Memastikan Otorisasi Lama (ABAC) Dinonaktifkan | Dinilai | L1 | Default |
6.9 | Penyimpanan | |||
6.9.1 | Mempertimbangkan untuk mengaktifkan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) untuk persistent disk (PD) GKE | Tidak Dinilai | L1 | Bukan Default |
6.10 | Konfigurasi Cluster Lainnya | |||
6.10.1 | Memastikan UI Web Kubernetes Dinonaktifkan | Dinilai | L1 | Default |
6.10.2 | Memastikan cluster Alfa tidak digunakan untuk workload produksi | Dinilai | L1 | Default |
6.10.3 | Memastikan Kebijakan Keamanan Pod Diaktifkan dan disetel sebagaimana mestinya | Tidak Dinilai | L1 | Bukan Default |
6.10.4 | Mempertimbangkan GKE Sandbox untuk menjalankan workload yang tidak tepercaya | Tidak Dinilai | L2 | Bukan Default |
6.10.5 | Lebih memilih mengaktifkan Otorisasi Biner dan mengonfigurasi kebijakan yang sesuai | Tidak Dinilai | L2 | Bukan Default |
6.10.6 | Lebih memilih mengaktifkan Cloud Security Command Center (Cloud SCC) | Tidak Dinilai | L1 | Bukan Default |
Cara mengaudit Tolok Ukur
Petunjuk spesifik untuk mengaudit setiap rekomendasi tersedia sebagai bagian dari Tolok Ukur CIS yang relevan. Namun, Anda mungkin ingin mengotomatiskan beberapa pemeriksaan untuk menyederhanakan verifikasi kontrol ini di lingkungan Anda. Alat yang tercantum di bawah dapat membantu ini.
Perlu diingat bahwa ini bukan berarti Anda dapat mengaudit rekomendasi dari Kubernetes CIS Benchmark yang tidak dapat diaudit di GKE. Untuk komponen yang tidak dapat Anda audit secara langsung, lihat Nilai default untuk memahami bagaimana lingkungan Anda sudah dikonfigurasi oleh GKE.
Audit otomatis Tolok Ukur Kubernetes CIS
Anda dapat menggunakan alat open source kube-bench
untuk menguji konfigurasi cluster dengan Tolok Ukur Kubernetes CIS. Perlu diingat
bahwa Anda tidak akan dapat menjalankan pengujian kube-bench master
pada
workload GKE karena Anda tidak memiliki akses ke node
bidang kontrol secara langsung; dan hanya dapat menjalankan pengujian kube-bench node
.
Pastikan untuk menentukan versi yang sesuai, misalnya:
kube-bench node --benchmark cis-1.5
Audit otomatis Tolok Ukur GKE CIS
Security Health Analytics mengidentifikasi kesalahan konfigurasi umum di lingkungan Anda, seperti firewall terbuka atau bucket publik. Security Health Analytics mencakup rekomendasi keamanan GKE. Dengan mengaktifkan Security Health Analytics, Anda akan diberi tahu kesalahan konfigurasi cluster yang mungkin Anda miliki di Cloud Security Command Center.
Banyak rekomendasi Dinilai Level 1 yang dicakup temuan terkait di Security Health Analytics.
# | Rekomendasi | Dinilai/ Tidak Dinilai | Level | Temuan Security Health Analytics |
---|---|---|---|---|
6.1 | Registry Image dan Pemindaian Image | |||
6.1.1 | Memastikan Pemindaian Kerentanan Image menggunakan Container Analysis GCR atau penyedia pihak ketiga | Dinilai | L1 | t/a |
6.1.2 | Meminimalkan akses pengguna ke GCR | Dinilai | L1 | t/a |
6.1.3 | Meminimalkan akses cluster ke hanya baca untuk GCR | Dinilai | L1 | t/a |
6.1.4 | Meminimalkan Container Registry hanya untuk yang disetujui | Tidak Dinilai | L2 | t/a |
6.2 | Identity and Access Management (IAM) | |||
6.2.1 | Memilih tidak menjalankan cluster GKE menggunakan akun layanan default Compute Engine | Dinilai | L2 | OVER_PRIVILEGED_ACCOUNT dan OVER_PRIVILEGED_SCOPES |
6.2.2 | Lebih memilih menggunakan Akun Layanan Google Cloud dan Workload Identity khusus | Tidak Dinilai | L1 | WORKLOAD_IDENTITY_DISABLED |
6.3 | Cloud Key Management Service (Cloud KMS) | |||
6.3.1 | Pertimbangkan untuk mengenkripsi Secret Kubernetes menggunakan kunci yang dikelola di Cloud KMS | Dinilai | L1 | t/a |
6.4 | Metadata Node | |||
6.4.1 | Memastikan API metadata instance Compute Engine lama Dinonaktifkan | Dinilai | L1 | LEGACY_METADATA_ENABLED |
6.4.2 | Memastikan Server Metadata GKE Diaktifkan | Tidak Dinilai | L2 | t/a |
6.5 | Konfigurasi dan Pemeliharaan Node | |||
6.5.1 | Memastikan Container-Optimized OS (COS) digunakan untuk image node GKE | Dinilai | L2 | COS_NOT_USED |
6.5.2 | Memastikan Perbaikan Otomatis Node diaktifkan untuk node GKE | Dinilai | L1 | AUTO_REPAIR_DISABLED |
6.5.3 | Memastikan Upgrade Otomatis Node diaktifkan untuk node GKE | Dinilai | L1 | AUTO_UPGRADE_DISABLED |
6.5.4 | Pertimbangkan untuk mengotomatiskan pengelolaan versi GKE menggunakan Saluran Rilis | Tidak Dinilai | L1 | t/a |
6.5.5 | Memastikan Node GKE yang Terlindungi Diaktifkan | Tidak Dinilai | L1 | t/a |
6.5.6 | Memastikan Pemantauan Integritas untuk Node GKE yang Terlindungi Diaktifkan | Tidak Dinilai | L1 | t/a |
6.5.7 | Memastikan Booting Aman untuk Node GKE yang Terlindungi Diaktifkan | Tidak Dinilai | L2 | t/a |
6.6 | Jaringan Cluster | |||
6.6.1 | Pertimbangkan untuk mengaktifkan Log Aliran Traffic VPC dan Visibilitas Intranode | Tidak Dinilai | L2 | FLOW_LOGS_DISABLED |
6.6.2 | Lebih memilih cluster VPC native | Dinilai | L1 | IP_ALIAS_DISABLED |
6.6.3 | Memastikan Jaringan yang Diizinkan Master Diaktifkan | Dinilai | L1 | MASTER_AUTHORIZED_NETWORKS_DISABLED |
6.6.4 | Memastikan cluster dibuat dengan Endpoint Pribadi Aktif dan Akses Publik Nonaktif | Dinilai | L2 | t/a |
6.6.5 | Memastikan cluster dibuat dengan Node Pribadi | Dinilai | L1 | PRIVATE_CLUSTER_DISABLED |
6.6.6 | Mempertimbangkan untuk membuat firewall worker node GKE | Tidak Dinilai | L1 | t/a |
6.6.7 | Memastikan Kebijakan Jaringan Diaktifkan dan disetel sebagaimana mestinya | Tidak Dinilai | L1 | NETWORK_POLICY_DISABLED |
6.6.8 | Mempertimbangkan untuk menggunakan Sertifikat SSL yang dikelola Google | Tidak Dinilai | L2 | t/a |
6.7 | Logging | |||
6.7.1 | Memastikan Logging dan Monitoring Stackdriver Kubernetes Diaktifkan | Dinilai | L1 | CLUSTER_LOGGING_DISABLED dan CLUSTER_MONITORING_DISABLED |
6.7.2 | Mempertimbangkan untuk mengaktifkan logging auditd Linux | Tidak Dinilai | L2 | t/a |
6.8 | Autentikasi dan Otorisasi | |||
6.8.1 | Memastikan Autentikasi Dasar yang menggunakan sandi statis Dinonaktifkan | Dinilai | L1 | t/a |
6.8.2 | Memastikan autentikasi menggunakan Sertifikat Klien Dinonaktifkan | Dinilai | L1 | t/a |
6.8.3 | Mempertimbangkan untuk mengelola pengguna RBAC Kubernetes dengan Google Grup untuk RBAC | Tidak Dinilai | L2 | t/a |
6.8.4 | Memastikan Otorisasi Lama (ABAC) Dinonaktifkan | Dinilai | L1 | LEGACY_AUTHORIZATION_ENABLED |
6.9 | Penyimpanan | |||
6.9.1 | Mempertimbangkan untuk mengaktifkan Kunci Enkripsi yang Dikelola Pelanggan (CMEK) untuk persistent disk (PD) GKE | Tidak Dinilai | L1 | t/a |
6.10 | Konfigurasi Cluster Lainnya | |||
6.10.1 | Memastikan UI Web Kubernetes Dinonaktifkan | Dinilai | L1 | WEB_UI_ENABLED |
6.10.2 | Memastikan cluster Alfa tidak digunakan untuk workload produksi | Dinilai | L1 | t/a |
6.10.3 | Memastikan Kebijakan Keamanan Pod Diaktifkan dan disetel sebagaimana mestinya | Tidak Dinilai | L1 | POD_SECURITY_POLICY_DISABLED |
6.10.4 | Mempertimbangkan GKE Sandbox untuk menjalankan workload yang tidak tepercaya | Tidak Dinilai | L2 | t/a |
6.10.5 | Lebih memilih mengaktifkan Otorisasi Biner dan mengonfigurasi kebijakan yang sesuai | Tidak Dinilai | L2 | t/a |
6.10.6 | Lebih memilih mengaktifkan Cloud Security Command Center (Cloud SCC) | Tidak Dinilai | L1 | t/a |
Langkah selanjutnya
- Baca ringkasan keamanan GKE.
- Ikuti praktik terbaik keamanan dalam panduan hardening GKE.
- Pelajari model tanggung jawab bersama di GKE lebih lanjut.