Halaman ini memperkenalkan CIS Kubernetes Benchmark, memberikan penilaian, dan menjelaskan tindakan yang dilakukan Google Distributed Cloud connected untuk mengatasi rekomendasi tersebut.
Tolok Ukur CIS
Center for Internet Security (CIS) merilis tolok ukur untuk rekomendasi praktik terbaik keamanan. Tolok Ukur Kubernetes CIS memberikan serangkaian rekomendasi untuk mengonfigurasi Kubernetes guna 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 agar dapat diterapkan secara universal di seluruh distribusi.
Versi
Tabel berikut mencantumkan versi Distributed Cloud Connected, Kubernetes, dan CIS Kubernetes Benchmark yang digunakan untuk melakukan penilaian yang dijelaskan dalam dokumen ini:
| Versi Distributed Cloud terhubung | Versi Kubernetes | Versi Tolok Ukur Kubernetes CIS |
|---|---|---|
| 1.4.0 - Bidang Kontrol Lokal | 1.25 | 1,70 |
Mengakses Tolok Ukur
Tolok Ukur Kubernetes CIS tersedia di situs CIS.
Level rekomendasi
Dalam Tolok Ukur Kubernetes CIS,
| Tingkat | Deskripsi |
|---|---|
| Level 1 | Rekomendasi bertujuan untuk: |
| Level 2 | Memperluas profil Level 1. Rekomendasi menunjukkan satu atau beberapa karakteristik berikut: |
Status penilaian
Status penilaian disertakan untuk setiap rekomendasi. Status penilaian menunjukkan apakah rekomendasi yang diberikan dapat diotomatiskan atau memerlukan langkah-langkah manual untuk diterapkan. Kedua status sama-sama penting dan ditentukan serta didukung seperti yang dijelaskan di bawah:
| Pemberian skor | Deskripsi |
|---|---|
| Otomatis | Mewakili rekomendasi yang penilaian kontrol teknisnya dapat sepenuhnya diotomatiskan dan divalidasi ke status lulus/gagal. Rekomendasi akan menyertakan informasi yang diperlukan untuk menerapkan otomatisasi. |
| Manual | Mewakili rekomendasi yang penilaian kontrol teknisnya tidak dapat sepenuhnya diotomatiskan dan memerlukan semua atau beberapa langkah manual untuk memvalidasi bahwa status yang dikonfigurasi ditetapkan seperti yang diharapkan. Status yang diharapkan dapat bervariasi, bergantung pada lingkungan. |
Status pada cluster bidang kontrol lokal Distributed Cloud yang terhubung
| # | Rekomendasi | Tingkat | Status |
|---|---|---|---|
| 1 | Konfigurasi Keamanan 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 (Otomatis) |
L1 | Lulus |
| 1.1.2 | Memastikan kepemilikan file spesifikasi pod server API disetel ke root:root (Otomatis) |
L1 | Lulus |
| 1.1.3 | Memastikan izin file spesifikasi pod pengelola pengontrol disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 1.1.4 | Memastikan kepemilikan file spesifikasi pod pengelola pengontrol disetel ke root:root (Otomatis) |
L1 | Lulus |
| 1.1.5 | Memastikan izin file spesifikasi pod scheduler disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 1.1.6 | Memastikan kepemilikan file spesifikasi pod scheduler disetel ke root:root (Otomatis) |
L1 | Lulus |
| 1.1.7 | Memastikan izin file spesifikasi pod etcd disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 1.1.8 | Memastikan kepemilikan file spesifikasi pod etcd disetel ke root:root (Otomatis) |
L1 | Lulus |
| 1.1.9 | Memastikan izin file Antarmuka Jaringan Container disetel ke 644 atau lebih ketat (Manual) |
L1 | Kontrol Setara |
| 1.1.10 | Memastikan kepemilikan file Antarmuka Jaringan Container disetel ke root:root (Manual) |
L1 | Lulus |
| 1.1.11 | Memastikan izin direktori data etcd disetel ke 700 atau lebih ketat (Otomatis) |
L1 | Kontrol Setara |
| 1.1.12 | Memastikan kepemilikan direktori data etcd disetel ke etcd:etcd (Otomatis) |
L1 | Kontrol Setara |
| 1.1.13 | Memastikan izin file admin.conf disetel ke 600 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 1.1.14 | Memastikan kepemilikan file admin.conf disetel ke root:root (Otomatis) |
L1 | Lulus |
| 1.1.15 | Memastikan izin file scheduler.conf disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 1.1.16 | Memastikan kepemilikan file scheduler.conf disetel ke root:root (Otomatis) |
L1 | Kontrol Setara |
| 1.1.17 | Memastikan izin file controller-manager.conf disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 1.1.18 | Memastikan kepemilikan file controller-manager.conf disetel ke root:root (Otomatis) |
L1 | Kontrol Setara |
| 1.1.19 | Memastikan kepemilikan file dan direktori IKP Kubernetes disetel ke root:root (Otomatis) |
L1 | Kontrol Setara |
| 1.1.20 | Memastikan izin file sertifikat PKI Kubernetes disetel ke 644 atau lebih ketat (Manual) |
L1 | Kontrol Setara |
| 1.1.21 | Memastikan izin file kunci IKP Kubernetes disetel ke 600 (Manual) |
L1 | Lulus |
| 1.2 | Server API | ||
| 1.2.1 | Memastikan argumen --anonymous-auth disetel ke false (Manual) |
L1 | Lulus |
| 1.2.2 | Pastikan parameter --token-auth-file tidak ditetapkan (Otomatis) |
L1 | Lulus |
| 1.2.3 | Pastikan --DenyServiceExternalIPs tidak disetel (Otomatis) |
L1 | Gagal |
| 1.2.4 | Pastikan argumen --kubelet-client-certificate dan --kubelet-client-key disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.5 | Pastikan argumen --kubelet-certificate-authority disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.6 | Pastikan argumen --authorization-mode tidak disetel ke AlwaysAllow (Otomatis) |
L1 | Lulus |
| 1.2.7 | Pastikan argumen --authorization-mode menyertakan Node (Otomatis) |
L1 | Lulus |
| 1.2.8 | Pastikan argumen --authorization-mode menyertakan RBAC (Otomatis) |
L1 | Gagal |
| 1.2.9 | Memastikan plugin kontrol penerimaan EventRateLimit ditetapkan (Manual) | L1 | Lulus |
| 1.2.10 | Memastikan plugin kontrol penerimaan AlwaysAdmit tidak ditetapkan (Otomatis) | L1 | Lulus |
| 1.2.11 | Memastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan (Manual) | L1 | Gagal |
| 1.2.12 | Memastikan plugin kontrol penerimaan SecurityContextDeny ditetapkan jika PodSecurityPolicy tidak digunakan (Manual) | L1 | Peringatkan |
| 1.2.13 | Memastikan plugin kontrol penerimaan ServiceAccount ditetapkan (Otomatis) | L1 | Lulus |
| 1.2.14 | Memastikan plugin kontrol penerimaan NamespaceLifecycle ditetapkan (Otomatis) | L1 | Lulus |
| 1.2.15 | Memastikan plugin kontrol penerimaan NodeRestriction ditetapkan (Otomatis) | L1 | Lulus |
| 1.2.16 | Pastikan argumen --secure-port tidak disetel ke 0 (Otomatis) |
L1 | Lulus |
| 1.2.17 | Pastikan argumen --profiling disetel ke false (Otomatis) |
L1 | Lulus |
| 1.2.18 | Pastikan argumen --audit-log-path disetel (Otomatis) |
L1 | Gagal |
| 1.2.19 | Pastikan argumen --audit-log-maxage disetel ke 30 atau sebagaimana mestinya (Otomatis) |
L1 | Gagal |
| 1.2.20 | Pastikan argumen --audit-log-maxbackup disetel ke 10 atau sebagaimana mestinya (Otomatis) |
L1 | Gagal |
| 1.2.21 | Pastikan argumen --audit-log-maxsize disetel ke 100 atau sebagaimana mestinya (Otomatis) |
L1 | Gagal |
| 1.2.22 | Memastikan argumen --request-timeout disetel sebagaimana mestinya (Manual) |
L1 | Gagal |
| 1.2.23 | Pastikan argumen --service-account-lookup disetel ke true (Otomatis) |
L1 | Lulus |
| 1.2.24 | Pastikan argumen --service-account-key-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.25 | Pastikan argumen --etcd-certfile dan --etcd-keyfile disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.26 | Pastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.27 | Pastikan argumen --client-ca-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.28 | Pastikan argumen --etcd-cafile disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.2.29 | Memastikan argumen --encryption-provider-config disetel sebagaimana mestinya (Manual) |
L1 | Lulus |
| 1.2.30 | Memastikan penyedia enkripsi dikonfigurasi dengan benar (Manual) | L1 | Lulus |
| 1.2.31 | Memastikan Server API hanya menggunakan Cipher Kriptografi yang Kuat (Manual) | L1 | Lulus |
| 1.3 | Controller Manager | ||
| 1.3.1 | Memastikan argumen --terminated-pod-gc-threshold disetel sebagaimana mestinya (Manual) |
L1 | Lulus |
| 1.3.2 | Pastikan argumen --profiling disetel ke false (Otomatis) |
L1 | Lulus |
| 1.3.3 | Pastikan argumen --use-service-account-credentials disetel ke true (Otomatis) |
L1 | Lulus |
| 1.3.4 | Pastikan argumen --service-account-private-key-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.3.5 | Pastikan argumen --root-ca-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 1.3.6 | Memastikan argumen RotateKubeletServerCertificate disetel ke true (Otomatis) | L2 | Lulus |
| 1.3.7 | Pastikan argumen --bind-address disetel ke 127.0.0.1 (Otomatis) |
L1 | Lulus |
| 1.4 | Scheduler | ||
| 1.4.1 | Pastikan argumen --profiling disetel ke false (Otomatis) |
L1 | Lulus |
| 1.4.2 | Pastikan argumen --bind-address disetel ke 127.0.0.1 (Otomatis) |
L1 | Lulus |
| 2 | ** etcd Konfigurasi Node** |
||
| 2.1 | Pastikan argumen --cert-file dan --key-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 2.2 | Pastikan argumen --client-cert-auth disetel ke true (Otomatis) |
L1 | Lulus |
| 2.3 | Pastikan argumen --auto-tls tidak disetel ke benar (Otomatis) |
L1 | Lulus |
| 2,4 | Pastikan argumen --peer-cert-file dan --peer-key-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 2,5 | Pastikan argumen --peer-client-cert-auth disetel ke true (Otomatis) |
L1 | Lulus |
| 2.6 | Pastikan argumen --peer-auto-tls tidak disetel ke benar (Otomatis) |
L1 | Lulus |
| 2,7 | Memastikan Certificate Authority yang digunakan untuk etcd unik (Manual) | L2 | Lulus |
| 3 | Konfigurasi Bidang Kontrol | ||
| 3.1 | Autentikasi dan Otorisasi | ||
| 3.1.1 | Otentikasi sertifikat klien tidak boleh digunakan untuk pengguna (Manual) | L2 | Lulus |
| 3.2 | Logging | ||
| 3.2.1 | Memastikan kebijakan audit minimal telah dibuat (Manual) | L1 | Lulus |
| 3.2.2 | Memastikan kebijakan audit mencakup masalah keamanan utama (Manual) | L2 | Gagal |
| 4 | Konfigurasi Keamanan Worker Node | ||
| 4.1 | File Konfigurasi Worker Node | ||
| 4.1.1 | Memastikan izin file layanan kubelet disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Gagal |
| 4.1.2 | Memastikan kepemilikan file layanan kubelet disetel ke root:root (Otomatis) |
L1 | Lulus |
| 4.1.3 | Jika file kubeconfig proxy ada, pastikan izin disetel ke 644 atau lebih ketat (Manual) |
L1 | Lulus |
| 4.1.4 | Jika file kubeconfig proxy ada, pastikan kepemilikannya disetel ke root:root (Manual) |
L1 | Lulus |
| 4.1.5 | Memastikan izin file --kubeconfig kubelet.conf disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Lulus |
| 4.1.6 | Pastikan kepemilikan file --kubeconfig kubelet.conf disetel ke root:root (Otomatis) |
L1 | Lulus |
| 4.1.7 | Memastikan izin file certificate authority disetel ke 644 atau lebih ketat (Manual) |
L1 | Gagal |
| 4.1.8 | Memastikan kepemilikan file certificate authority klien disetel ke root:root (Manual) |
L1 | Lulus |
| 4.1.9 | Memastikan izin file konfigurasi --config kubelet disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Gagal |
| 4.1.10 | Memastikan kepemilikan file konfigurasi --config kubelet disetel ke root:root (Otomatis) |
L1 | Lulus |
| 4.2 | Kubelet | ||
| 4.2.1 | Pastikan argumen --anonymous-auth disetel ke false (Otomatis) |
L1 | Lulus |
| 4.2.2 | Pastikan argumen --authorization-mode tidak disetel ke AlwaysAllow (Otomatis) |
L1 | Lulus |
| 4.2.3 | Pastikan argumen --client-ca-file disetel sebagaimana mestinya (Otomatis) |
L1 | Lulus |
| 4.2.4 | Pastikan argumen --read-only-port disetel ke 0 (Manual) |
L1 | Gagal |
| 4.2.5 | Pastikan argumen --streaming-connection-idle-timeout tidak disetel ke 0 (Manual) |
L1 | Lulus |
| 4.2.6 | Pastikan argumen --protect-kernel-defaults disetel ke true (Otomatis) |
L1 | Lulus |
| 4.2.7 | Pastikan argumen --make-iptables-util-chains disetel ke true (Otomatis) |
L1 | Lulus |
| 4.2.8 | Memastikan argumen --hostname-override tidak disetel (Manual) |
L2 | Lulus |
| 4.2.9 | Memastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang sesuai (Manual) |
L1 | Kontrol Setara |
| 4.2.10 | Memastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya (Manual) |
L1 | Lulus |
| 4.2.11 | Pastikan argumen --rotate-certificates tidak disetel ke false (Otomatis) |
L1 | Lulus |
| 4.2.12 | Pastikan argumen RotateKubeletServerCertificate disetel ke true (Manual) | L1 | Lulus |
| 4.2.13 | Memastikan Kubelet hanya menggunakan Cipher Kriptografi yang Kuat (Manual) | L1 | Gagal |
Kegagalan dan kontrol yang setara untuk cluster bidang kontrol lokal yang terhubung dengan Distributed Cloud
| # | Rekomendasi | Tingkat | Status | Nilai | Justifikasi |
|---|---|---|---|---|---|
| 1 | Konfigurasi Keamanan Bidang Kontrol | ||||
| 1.1.9 | Memastikan izin file Antarmuka Jaringan Container disetel ke 644 atau lebih ketat (Manual) |
L1 | Kontrol Setara | 755 |
Tidak ada. |
| 1.1.11 | Memastikan izin direktori data etcd disetel ke 700 atau lebih ketat (Otomatis) |
L1 | Kontrol Setara | 755 |
Direktori data etcd memiliki izin 755 default, tetapi subdirektorinya menggunakan 700. |
| 1.1.12 | Memastikan kepemilikan direktori data etcd disetel ke etcd:etcd (Otomatis) |
L1 | Kontrol Setara | 2003:2003 |
Direktori data etcd, /var/lib/etcd, dimiliki oleh 2003:2003 karena bidang kontrol tanpa root untuk meningkatkan keamanan. |
| 1.1.16 | Memastikan kepemilikan file scheduler.conf disetel ke root:root (Otomatis) |
L1 | Kontrol Setara | 2002:2002 |
scheduler.conf dimiliki oleh 2002:2002 karena bidang kontrol tanpa root untuk keamanan yang ditingkatkan. |
| 1.1.18 | Memastikan kepemilikan file controller-manager.conf disetel ke root:root (Otomatis) |
L1 | Kontrol Setara | 2001:2001 |
controller-manager.conf dimiliki oleh 2001:2001 karena bidang kontrol tanpa root untuk keamanan yang ditingkatkan. |
| 1.1.19 | Memastikan kepemilikan file dan direktori IKP Kubernetes disetel ke root:root (Otomatis) |
L1 | Kontrol Setara | Bervariasi | Direktori PKI, /etc/kubernetes/pki, dimiliki oleh root:root; file di dalam direktori memiliki berbagai pemilik. Hal ini disebabkan oleh bidang kontrol tanpa root untuk keamanan yang lebih baik. |
| 1.1.20 | Memastikan izin file sertifikat PKI Kubernetes disetel ke 644 atau lebih ketat (Manual) |
L1 | Kontrol Setara | 644 |
Hal ini disebabkan oleh bidang kontrol tanpa root untuk keamanan yang lebih baik. |
| 1.2 | Server API | ||||
| 1.2.3 | Pastikan --DenyServiceExternalIPs tidak disetel (Otomatis) |
L1 | Gagal | ||
| 1.2.9 | Pastikan argumen --authorization-mode menyertakan RBAC (Otomatis) |
L1 | Gagal | Pengontrol penerimaan Batas Kapasitas Peristiwa adalah fitur alfa Kubernetes. Google Distributed Cloud tidak mendukung fitur non-GA. | |
| 1.2.11 | Memastikan plugin kontrol penerimaan AlwaysAdmit tidak ditetapkan (Otomatis) |
L1 | Gagal | ||
| 1.2.12 | Memastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan (Manual) |
L1 | Gagal | 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. Cluster Distributed Cloud tidak mengaktifkan pengontrol penerimaan AlwaysPullImages, sehingga administrator cluster bebas dalam menerapkan kebijakan penerimaan dan melakukan pertukaran ini. |
|
| 1.2.18 | Pastikan argumen --audit-log-path disetel (Otomatis) |
L1 | Gagal | Distributed Cloud mencatat log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat Logging Audit untuk mengetahui informasi selengkapnya. | |
| 1.2.19 | Pastikan argumen --audit-log-maxage disetel ke 30 atau sebagaimana mestinya (Otomatis) |
L1 | Gagal | Distributed Cloud mencatat log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat Logging Audit untuk mengetahui informasi selengkapnya. | |
| 1.2.20 | Pastikan argumen --audit-log-maxbackup disetel ke 10 atau sebagaimana mestinya (Otomatis) |
L1 | Gagal | Distributed Cloud yang terhubung merekam log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat Logging Audit untuk mengetahui informasi selengkapnya. | |
| 1.2.21 | Pastikan argumen --audit-log-maxsize disetel ke 100 atau sebagaimana mestinya (Otomatis) |
L1 | Gagal | Distributed Cloud yang terhubung merekam log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat Logging Audit untuk mengetahui informasi selengkapnya. | |
| 1.2.22 | Memastikan argumen --request-timeout disetel sebagaimana mestinya (Manual) |
L1 | Gagal | Distributed Cloud yang terhubung merekam log audit, tetapi tidak menggunakan flag ini untuk audit. Lihat Logging Audit untuk mengetahui informasi selengkapnya. | |
| 3 | Konfigurasi Bidang Kontrol | ||||
| 3.2.2 | Memastikan kebijakan audit mencakup masalah keamanan utama (Manual) | L2 | Gagal | ||
| 4 | Konfigurasi Keamanan Worker Node | ||||
| 4.1.1 | Memastikan izin file layanan kubelet disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Gagal | 755 |
|
| 4.1.7 | Memastikan izin file certificate authority disetel ke 644 atau lebih ketat (Manual) |
L1 | Gagal | ||
| 4.1.9 | Memastikan izin file konfigurasi --config kubelet disetel ke 644 atau lebih ketat (Otomatis) |
L1 | Gagal | 644 |
|
| 4.2.4 | Pastikan argumen --read-only-port disetel ke 0 (Manual) |
L1 | Gagal | Cluster Distributed Cloud terhubung menetapkan argumen --read-only-port ke 10255 untuk mengumpulkan metrik kubelet. |
|
| 4.2.9 | Memastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang sesuai (Manual) |
L1 | Kontrol Setara | Cluster Distributed Cloud mengelola TLS server kubelet menggunakan tanda –rotate-server-certificates. |
|
| 4.2.13 | Memastikan Kubelet hanya menggunakan Cipher Kriptografi yang Kuat (Manual) | L1 | Gagal |