Tolok ukur CIS

Dokumen ini memperkenalkan CIS Kubernetes Benchmark. Bagian ini juga menjelaskan:

  • Cara mengaudit kepatuhan Anda terhadap tolok ukur
  • Apa yang dikonfigurasi GKE di AWS yang tidak dapat Anda terapkan sendiri.

Menggunakan 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 untuk dapat diterapkan secara universal di seluruh distribusi.

Versi

Perlu diingat bahwa nomor versi untuk tolok ukur yang berbeda mungkin tidak sama.

Dokumen ini merujuk pada versi berikut:

Versi Anthos Versi Kubernetes Versi Tolok Ukur Kubernetes CIS
1.14.0 1.25.3 1.23

Tolok Ukur Kubernetes CIS

Mengakses Tolok Ukur

Tolok Ukur Kubernetes CIS tersedia di situs CIS.

Level Rekomendasi

Dalam Tolok Ukur Kubernetes CIS, ada dua tingkat rekomendasi.

Tingkat Deskripsi
Level 1

Rekomendasi bertujuan untuk:

  • bersifat praktis dan cermat;
  • memberikan manfaat keamanan yang jelas; dan
  • tidak menghambat utilitas teknologi di luar batas yang dapat diterima.
  • Level 2

    Memperluas profil Level 1.

    Rekomendasi menunjukkan satu atau beberapa karakteristik berikut:

  • ditujukan untuk lingkungan atau kasus penggunaan yang sangat mengutamakan keamanan;
  • bertindak sebagai langkah defense in depth; atau
  • mungkin menghambat utilitas atau kinerja teknologi.
  • Status Penilaian

    Status penilaian disertakan untuk setiap rekomendasi. Status penilaian menunjukkan apakah rekomendasi tertentu dapat diotomatiskan atau memerlukan langkah-langkah manual untuk diterapkan. Kedua status sama-sama penting dan ditentukan serta didukung sebagaimana didefinisikan 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.

    Evaluasi GKE di AWS

    Kami menggunakan nilai berikut untuk menentukan status Rekomendasi Kubernetes di GKE di AWS:

    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 di AWS untuk memberikan kontrol keamanan yang setara.
    Bergantung pada Lingkungan GKE di AWS tidak mengonfigurasi item yang terkait dengan Rekomendasi ini. Konfigurasi pengguna menentukan apakah lingkungan mereka mematuhi Rekomendasi Tolok Ukur.

    Status GKE di AWS

    Saat membuat cluster baru dengan versi yang ditentukan, berikut adalah performanya pada Tolok Ukur Kubernetes CIS.

    Status cluster GKE di AWS:

    # 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 Kontrol Setara
    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 Kontrol Setara
    1.1.14 Memastikan kepemilikan file admin.conf disetel ke root:root (Otomatis) L1 Kontrol Setara
    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 Lulus
    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 Lulus
    1.1.19 Memastikan kepemilikan file dan direktori IKP Kubernetes disetel ke root:root (Otomatis) L1 Lulus
    1.1.20 Memastikan izin file sertifikat IKP Kubernetes disetel ke 644 atau lebih ketat (Manual) L1 Lulus
    1.1.21 Memastikan izin file kunci IKP Kubernetes disetel ke 600 (Manual) L1 Lulus
    1.2 Server API
    1.2.1 Pastikan 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 Lulus
    1.2.4 Pastikan argumen --kubelet-https disetel ke true (Otomatis) L1 Lulus
    1.2.5 Pastikan argumen --kubelet-client-certificate dan --kubelet-client-key disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.6 Pastikan argumen --kubelet-certificate-authority disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.7 Pastikan argumen --authorization-mode tidak disetel ke AlwaysAllow (Otomatis) L1 Lulus
    1.2.8 Pastikan argumen --authorization-mode menyertakan Node (Otomatis) L1 Lulus
    1.2.9 Memastikan argumen --authorization-mode menyertakan RBAC (Otomatis) L1 Lulus
    1.2.10 Memastikan plugin kontrol penerimaan EventRateLimit ditetapkan (Manual) L1 Peringatkan
    1.2.11 Memastikan plugin kontrol penerimaan AlwaysAdmit tidak ditetapkan (Otomatis) L1 Lulus
    1.2.12 Memastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan (Manual) L1 Peringatkan
    1.2.13 Memastikan plugin kontrol penerimaan SecurityContextDeny ditetapkan jika PodSecurityPolicy tidak digunakan (Manual) L1 Kontrol Setara
    1.2.14 Memastikan plugin kontrol penerimaan ServiceAccount ditetapkan (Otomatis) L1 Lulus
    1.2.15 Memastikan plugin kontrol penerimaan NamespaceLifecycle ditetapkan (Otomatis) L1 Lulus
    1.2.16 Memastikan plugin kontrol penerimaan NodeRestriction ditetapkan (Otomatis) L1 Lulus
    1.2.17 Pastikan argumen --secure-port tidak disetel ke 0 (Otomatis) L1 Lulus
    1.2.18 Pastikan argumen --profiling disetel ke false (Otomatis) L1 Lulus
    1.2.19 Pastikan argumen --audit-log-path ditetapkan (Otomatis) L1 Kontrol Setara
    1.2.20 Pastikan argumen --audit-log-maxage disetel ke 30 atau sebagaimana mestinya (Otomatis) L1 Kontrol Setara
    1.2.21 Pastikan argumen --audit-log-maxbackup disetel ke 10 atau sebagaimana mestinya (Otomatis) L1 Kontrol Setara
    1.2.22 Pastikan argumen --audit-log-maxsize disetel ke 100 atau sebagaimana mestinya (Otomatis) L1 Kontrol Setara
    1.2.23 Memastikan argumen --request-timeout disetel sebagaimana mestinya (Manual) L1 Lulus
    1.2.24 Pastikan argumen --service-account-lookup disetel ke true (Otomatis) L1 Lulus
    1.2.25 Pastikan argumen --service-account-key-file disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.26 Pastikan argumen --etcd-certfile dan --etcd-keyfile disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.27 Pastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.28 Pastikan argumen --client-ca-file disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.29 Pastikan argumen --etcd-cafile disetel sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.30 Memastikan argumen --encryption-provider-config disetel sebagaimana mestinya (Manual) L1 Lulus
    1.2.31 Memastikan penyedia enkripsi dikonfigurasi dengan benar (Manual) L1 Lulus
    1.2.32 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 Konfigurasi Node Etcd
    2 Konfigurasi Node Etcd
    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 true (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 true (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 Kontrol Setara
    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 Kontrol Setara
    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 Lulus
    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 --kubeconfigkubelet.conf disetel ke 644 atau lebih ketat (Otomatis) L1 Lulus
    4.1.6 Memastikan 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 Lulus
    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 Lulus
    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 Gagal
    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) L1 Lulus
    4.2.9 Memastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang sesuai (Manual) L2 Peringatkan
    4.2.10 Memastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya (Manual) L1 Kontrol Setara
    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 Lulus
    Deskripsi Kegagalan dan Kontrol Setara untuk cluster admin GKE di AWS:
    # Rekomendasi Tingkat Status Nilai Justifikasi
    1.1.9 Memastikan izin file Antarmuka Jaringan Container disetel ke 644 atau lebih ketat (Manual) L1 Kontrol Setara 755 Jalur Antarmuka Jaringan Container cluster Anthos di AWS adalah /opt/cni/bin, dan izinnya ditetapkan ke 755 untuk operasi cluster normal.
    1.1.10 Memastikan kepemilikan file Antarmuka Jaringan Container disetel ke root:root (Manual) L1 Kontrol Setara root:root Jalur Antarmuka Jaringan Container cluster Anthos di AWS adalah /opt/cni/bin, dan kepemilikannya disetel ke root:root.
    1.1.11 Memastikan izin direktori data etcd disetel ke 700 atau lebih ketat (Otomatis) L1 Kontrol Setara 755 Direktori data etcd /opt/data/var/lib/etcd memiliki izin 755 default, tetapi subdirektorinya adalah 700.
    1.1.12 Memastikan kepemilikan direktori data etcd disetel ke etcd:etcd (Otomatis) L1 Kontrol Setara root:root Penampung etcd berjalan sebagai root dan direktori data etcd dimiliki oleh root:root.
    1.1.13 Memastikan izin file admin.conf disetel ke 600 atau lebih ketat (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS tidak mendukung kubeadm.
    1.1.14 Memastikan kepemilikan file admin.conf disetel ke root:root (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS tidak mendukung kubeadm.
    1.2.10 Memastikan plugin kontrol penerimaan EventRateLimit ditetapkan (Manual) L1 Peringatkan tidak ditetapkan Cluster Anthos di AWS tidak mendukung pengontrol penerimaan Batas Kapasitas Peristiwa karena pengontrol ini merupakan fitur Kubernetes Alpha.
    1.2.12 Memastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan (Manual) L1 Peringatkan 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 di AWS tidak mengaktifkan pengontrol penerimaan AlwaysPullImages, sehingga admin cluster bebas dalam menerapkan kebijakan penerimaan dan melakukan pertukaran ini.
    1.2.13 Memastikan plugin kontrol penerimaan SecurityContextDeny ditetapkan jika PodSecurityPolicy tidak digunakan (Manual) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menentukan kebijakan keamanan default. Pelanggan dapat menyetel opsi terkait keamanan dengan konteks keamanan. Selengkapnya di Ringkasan keamanan.
    1.2.19 Pastikan argumen --audit-log-path ditetapkan (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Informasi selengkapnya tentang Cloud Audit Logs.
    1.2.20 Pastikan argumen --audit-log-maxage disetel ke 30 atau sebagaimana mestinya (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Informasi selengkapnya tentang Cloud Audit Logs.
    1.2.21 Pastikan argumen --audit-log-maxbackup disetel ke 10 atau sebagaimana mestinya (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Informasi selengkapnya tentang Cloud Audit Logs.
    1.2.22 Pastikan argumen --audit-log-maxsize disetel ke 100 atau sebagaimana mestinya (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Informasi selengkapnya tentang Cloud Audit Logs.
    3.1.1 Otentikasi sertifikat klien tidak boleh digunakan untuk pengguna (Manual) L2 Kontrol Setara Cluster Anthos di AWS mendukung OIDC sebagai salah satu mekanisme autentikasi untuk terhubung ke cluster. Untuk mengetahui informasi selengkapnya, lihat Menghubungkan dan melakukan autentikasi ke cluster Anda.
    3.2.2 Memastikan kebijakan audit mencakup masalah keamanan utama (Manual) L2 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Informasi selengkapnya tentang Cloud Audit Logs.
    4.2.4 Pastikan argumen --read-only-port disetel ke 0 (Manual) L1 Gagal 10255 Saat ini, cluster Anthos di AWS menetapkan argumen --read-only-port ke 10255 untuk mengumpulkan metrik dari kubelet.
    4.2.6 Pastikan argumen --protect-kernel-defaults disetel ke true (Otomatis) L1 Gagal false Cluster Anthos di AWS memungkinkan kubelet menyetel setelan kernel yang diperlukan.
    4.2.9 Memastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang sesuai (Manual) L2 Peringatkan tidak ditetapkan 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.
    4.2.10 Memastikan argumen --tls-cert-file dan --tls-private-key-file disetel sebagaimana mestinya (Manual) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS mengelola TLS server kubelet menggunakan tanda serverTLSBootstrap.

    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.

    Audit otomatis Tolok Ukur Kubernetes CIS

    Anda dapat menggunakan alat open source kube-bench untuk menguji konfigurasi cluster dengan Tolok Ukur Kubernetes CIS.

    Pastikan untuk menentukan versi yang sesuai, misalnya,

    kube-bench node --benchmark cis-1.23