Tolok ukur CIS

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

  • Cara mengaudit kepatuhan Anda terhadap tolok ukur
  • Yang dikonfigurasi GKE di AWS tempat Anda tidak dapat menerapkan sendiri rekomendasi.

Menggunakan Tolok Ukur CIS

Center for Internet Security (CIS) merilis tolok ukur untuk rekomendasi praktik terbaik keamanan. CIS Kubernetes Benchmark memberikan serangkaian rekomendasi untuk mengonfigurasi Kubernetes guna mendukung postingan 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

CIS Kubernetes Benchmark tersedia di situs CIS.

Level Rekomendasi

Dalam CIS Kubernetes Benchmark, ada dua level 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 yang diberikan dapat otomatis atau memerlukan langkah manual untuk diterapkan. Kedua status tersebut sama pentingnya serta ditentukan dan didukung sebagaimana didefinisikan di bawah ini:

    Pemberian skor Deskripsi
    Otomatis Mewakili rekomendasi agar penilaian kontrol teknis dapat sepenuhnya diotomatiskan dan divalidasi ke status lulus/gagal. Rekomendasi akan mencakup informasi yang diperlukan untuk menerapkan otomatisasi.
    Manual Merepresentasikan rekomendasi dengan penilaian kontrol teknis yang tidak dapat sepenuhnya otomatis dan memerlukan semua atau beberapa langkah manual untuk memvalidasi bahwa status yang dikonfigurasi telah ditetapkan seperti yang diharapkan. Status yang diharapkan dapat bervariasi bergantung pada lingkungannya.

    Evaluasi GKE pada AWS

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

    Status Deskripsi
    Lulus Mematuhi Rekomendasi Tolok Ukur.
    Gagal Tidak mematuhi Rekomendasi Tolok Ukur.
    Kontrol Setara Tidak mematuhi persyaratan yang tepat dalam Rekomendasi Benchmark, tetapi mekanisme lain dalam GKE pada AWS tersedia untuk menyediakan kontrol keamanan yang setara.
    Bergantung pada Lingkungan GKE di AWS tidak mengonfigurasi item yang terkait dengan Rekomendasi ini. Konfigurasi pengguna menentukan apakah lingkungannya mematuhi Rekomendasi Benchmark.

    Status GKE di AWS

    Saat membuat cluster baru dengan versi yang ditentukan, berikut adalah performanya terhadap CIS Kubernetes Benchmark.

    Status GKE di cluster AWS:

    # Rekomendasi Tingkat Status
    1 Kontrol Konfigurasi Keamanan Bidang
    1.1 File Konfigurasi Node Bidang Kontrol
    1.1.1 Pastikan izin file spesifikasi pod server API disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    1.1.2 Pastikan kepemilikan file spesifikasi pod server API disetel ke root:root (Otomatis) L1 Lulus
    1.1.3 Pastikan izin file spesifikasi pod pengelola pengontrol disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    1.1.4 Pastikan kepemilikan file spesifikasi pod pengelola pengontrol disetel ke root:root (Otomatis) L1 Lulus
    1.1.5 Pastikan izin file spesifikasi pod penjadwal disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    1.1.6 Pastikan kepemilikan file spesifikasi pod penjadwal ditetapkan ke root:root (Otomatis) L1 Lulus
    1.1.7 Pastikan izin file spesifikasi pod etcd disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    1.1.8 Pastikan kepemilikan file spesifikasi pod etcd disetel ke root:root (Otomatis) L1 Lulus
    1.1.9 Pastikan izin file Antarmuka Jaringan Container ditetapkan ke 644 atau yang lebih ketat (Manual) L1 Kontrol Setara
    1.1.10 Pastikan kepemilikan file Antarmuka Jaringan Container ditetapkan ke root:root (Manual) L1 Kontrol Setara
    1.1.11 Pastikan izin direktori data etcd ditetapkan ke 700 atau yang lebih ketat (Otomatis) L1 Kontrol Setara
    1.1.12 Pastikan kepemilikan direktori data etcd ditetapkan ke etcd:etcd (Otomatis) L1 Kontrol Setara
    1.1.13 Pastikan izin file .conf admin disetel ke 600 atau yang lebih ketat (Otomatis) L1 Kontrol Setara
    1.1.14 Pastikan kepemilikan file.conf admin disetel ke root:root (Otomatis) L1 Kontrol Setara
    1.1.15 Pastikan izin file konfigurasi. penjadwal disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    1.1.16 Pastikan kepemilikan file konflik.disetel ke root:root (Otomatis) L1 Lulus
    1.1.17 Pastikan izin file konfigurasi.pengelola-pengontrol disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    1.1.18 Pastikan kepemilikan file konfigurasi.pengelola-pengontrol disetel ke root:root (Otomatis) L1 Lulus
    1.1.19 Pastikan direktori PKI Kubernetes dan kepemilikan file ditetapkan ke root:root (Otomatis) L1 Lulus
    1.1.20 Pastikan izin file sertifikat PKI Kubernetes ditetapkan ke 644 atau yang lebih ketat (Manual) L1 Lulus
    1.1.21 Pastikan izin file kunci IKP Kubernetes ditetapkan ke 600 (Manual) L1 Lulus
    1.2 Server API
    1.2.1 Pastikan argumen --anonymous-auth ditetapkan ke salah (Manual) L1 Lulus
    1.2.2 Pastikan parameter --token-auth-file tidak ditetapkan (Otomatis) L1 Lulus
    1.2.3 Pastikan --DenyServiceExternalIPs tidak ditetapkan (Otomatis) L1 Lulus
    1.2.4 Pastikan argumen --kubelet-https ditetapkan ke benar (Otomatis) L1 Lulus
    1.2.5 Pastikan argumen --kubelet-client-certificate dan --kubelet-client-key ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.6 Pastikan argumen --kubelet-certificate-authority ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.7 Pastikan argumen --authorization-mode tidak ditetapkan ke AlwaysAllow (Otomatis) L1 Lulus
    1.2.8 Pastikan argumen --authorization-mode menyertakan Node (Otomatis) L1 Lulus
    1.2.9 Pastikan argumen --authorization-mode menyertakan RBAC (Otomatis) L1 Lulus
    1.2.10 Pastikan plugin kontrol penerimaan EventRateLimit ditetapkan (Manual) L1 Peringatkan
    1.2.11 Pastikan plugin kontrol penerimaan AlwaysAdmit tidak ditetapkan (Otomatis) L1 Lulus
    1.2.12 Pastikan plugin kontrol penerimaan AlwaysPullImages ditetapkan (Manual) L1 Peringatkan
    1.2.13 Pastikan plugin kontrol penerimaan SecurityContextDeny ditetapkan jika PodSecurityPolicy tidak digunakan (Manual) L1 Kontrol Setara
    1.2.14 Pastikan ServiceAccount plugin kontrol penerimaan ditetapkan (Otomatis) L1 Lulus
    1.2.15 Memastikan NamespaceLifecycle plugin kontrol penerimaan ditetapkan (Otomatis) L1 Lulus
    1.2.16 Pastikan plugin kontrol penerimaan NodeRestriction ditetapkan (Otomatis) L1 Lulus
    1.2.17 Pastikan argumen --secure-port tidak ditetapkan ke 0 (Otomatis) L1 Lulus
    1.2.18 Pastikan argumen --profiling ditetapkan ke salah (Otomatis) L1 Lulus
    1.2.19 Pastikan argumen --audit-log-path telah ditetapkan (Otomatis) L1 Kontrol Setara
    1.2.20 Pastikan argumen --audit-log-maxage disetel ke 30 atau yang sesuai (Otomatis) L1 Kontrol Setara
    1.2.21 Pastikan argumen --audit-log-maxbackup disetel ke 10 atau yang sesuai (Otomatis) L1 Kontrol Setara
    1.2.22 Pastikan argumen --audit-log-maxsize disetel ke 100 atau yang sesuai (Otomatis) L1 Kontrol Setara
    1.2.23 Pastikan argumen --request-timeout ditetapkan sebagaimana mestinya (Manual) L1 Lulus
    1.2.24 Pastikan argumen --service-account-lookup ditetapkan ke benar (Otomatis) L1 Lulus
    1.2.25 Pastikan argumen --service-account-key-file ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.26 Pastikan argumen --etcd-certfile dan --etcd-keyfile ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.27 Pastikan argumen --tls-cert-file dan --tls-private-key-file ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.28 Pastikan argumen --client-ca-file ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.29 Pastikan argumen --etcd-cafile ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.2.30 Pastikan argumen --encryption-provider-config ditetapkan sebagaimana mestinya (Manual) L1 Lulus
    1.2.31 Pastikan penyedia enkripsi dikonfigurasi dengan benar (Manual) L1 Lulus
    1.2.32 Memastikan bahwa Server API hanya menggunakan Cipher Kriptografis yang Kuat (Manual) L1 Lulus
    1.3 Controller Manager
    1.3.1 Pastikan argumen --terminated-pod-gc-threshold ditetapkan sebagaimana mestinya (Manual) L1 Lulus
    1.3.2 Pastikan argumen --profiling ditetapkan ke salah (Otomatis) L1 Lulus
    1.3.3 Pastikan argumen --use-service-account-credentials ditetapkan ke benar (Otomatis) L1 Lulus
    1.3.4 Pastikan argumen --service-account-private-key-file ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.3.5 Pastikan argumen --root-ca-file ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    1.3.6 Pastikan 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 ditetapkan ke salah (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 ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    2.2 Pastikan argumen --client-cert-auth ditetapkan ke benar (Otomatis) L1 Lulus
    2.3 Pastikan argumen --auto-tls tidak ditetapkan ke benar (Otomatis) L1 Lulus
    2,4 Pastikan argumen --peer-cert-file dan --peer-key-file ditetapkan sebagaimana mestinya (Otomatis) L1 Lulus
    2,5 Pastikan argumen --peer-client-cert-auth ditetapkan ke benar (Otomatis) L1 Lulus
    2.6 Pastikan argumen --peer-auto-tls tidak ditetapkan ke benar (Otomatis) L1 Lulus
    2,7 Memastikan bahwa Certificate Authority unik digunakan untuk etcd (Manual) L2 Lulus
    3 Konfigurasi Bidang Kontrol
    3.1 Autentikasi dan Otorisasi
    3.1.1 Autentikasi sertifikat klien tidak boleh digunakan untuk pengguna (Manual) L2 Kontrol Setara
    3.2 Logging
    3.2.1 Memastikan bahwa kebijakan audit minimal telah dibuat (Manual) L1 Lulus
    3.2.2 Memastikan bahwa kebijakan audit mencakup masalah keamanan utama (Manual) L2 Kontrol Setara
    4 Konfigurasi Keamanan Node Pekerja
    4.1 File Konfigurasi Worker Node
    4.1.1 Pastikan izin file layanan kubelet disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    4.1.2 Pastikan 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 yang lebih ketat (Manual) L1 Lulus
    4.1.4 Jika file kubeconfig proxy ada, pastikan kepemilikan disetel ke root:root (Manual) L1 Lulus
    4.1.5 Pastikan izin file --kubeconfig kubelet.conf disetel ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    4.1.6 Pastikan kepemilikan file --kubeconfig kubelet.conf disetel ke root:root (Otomatis) L1 Lulus
    4.1.7 Pastikan izin file certificate authority ditetapkan ke 644 atau yang lebih ketat (Manual) L1 Lulus
    4.1.8 Pastikan kepemilikan file certificate authority klien disetel ke root:root (Manual) L1 Lulus
    4.1.9 Pastikan file konfigurasi --config kubelet memiliki izin yang ditetapkan ke 644 atau yang lebih ketat (Otomatis) L1 Lulus
    4.1.10 Pastikan kepemilikan file konfigurasi --config kubelet disetel ke root:root (Otomatis) L1 Lulus
    4.2 Kubelet
    4.2.1 Pastikan argumen --anonymous-auth ditetapkan ke salah (Otomatis) L1 Lulus
    4.2.2 Pastikan argumen --authorization-mode tidak ditetapkan ke AlwaysAllow (Otomatis) L1 Lulus
    4.2.3 Pastikan argumen --client-ca-file ditetapkan 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 ditetapkan ke 0 (Manual) L1 Lulus
    4.2.6 Pastikan argumen --protect-kernel-defaults ditetapkan ke benar (Otomatis) L1 Gagal
    4.2.7 Pastikan argumen --make-iptables-util-chains ditetapkan ke benar (Otomatis) L1 Lulus
    4.2.8 Pastikan argumen --hostname-override tidak ditetapkan (Manual) L1 Lulus
    4.2.9 Pastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang tepat (Manual) L2 Peringatkan
    4.2.10 Pastikan argumen --tls-cert-file dan --tls-private-key-file ditetapkan sebagaimana mestinya (Manual) L1 Kontrol Setara
    4.2.11 Pastikan argumen --rotate-certificates tidak ditetapkan ke salah (Otomatis) L1 Lulus
    4.2.12 Pastikan argumen RotateKubeletServerCertificate ditetapkan ke true (Manual) L1 Lulus
    4.2.13 Pastikan bahwa Kubelet hanya menggunakan Cipher Kriptografis yang Kuat (Manual) L1 Lulus
    Deskripsi Kegagalan dan Kontrol yang Setara untuk GKE di cluster admin AWS:
    # Rekomendasi Tingkat Status Nilai Justifikasi
    1.1.9 Pastikan izin file Antarmuka Jaringan Container ditetapkan ke 644 atau yang lebih ketat (Manual) L1 Kontrol Setara 755 Cluster Anthos di jalur Antarmuka Jaringan Container AWS adalah /opt/cni/bin, dan izinnya ditetapkan ke 755 untuk operasi cluster normal.
    1.1.10 Pastikan kepemilikan file Antarmuka Jaringan Container ditetapkan ke root:root (Manual) L1 Kontrol Setara root:root Cluster Anthos di jalur Antarmuka Jaringan Container AWS adalah /opt/cni/bin, dan kepemilikannya ditetapkan ke root:root.
    1.1.11 Pastikan izin direktori data etcd ditetapkan ke 700 atau yang 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 Pastikan kepemilikan direktori data etcd ditetapkan 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 Pastikan izin file .conf admin disetel ke 600 atau yang lebih ketat (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS tidak mendukung kubeadm.
    1.1.14 Pastikan kepemilikan file.conf admin disetel ke root:root (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS tidak mendukung kubeadm.
    1.2.10 Pastikan plugin kontrol penerimaan EventRateLimit ditetapkan (Manual) L1 Peringatkan tidak ditetapkan Cluster Anthos di AWS tidak mendukung pengontrol penerimaan Batas Kecepatan Peristiwa karena merupakan fitur Kubernetes Alpha.
    1.2.12 Pastikan 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, tetapi membuat registry container menjadi satu titik kegagalan untuk membuat Pod baru di seluruh cluster. GKE di AWS tidak mengaktifkan pengontrol penerimaan AlwaysPullImages, sehingga admin cluster dapat menerapkan kebijakan penerimaan untuk melakukan penyesuaian dengan sendirinya.
    1.2.13 Pastikan 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 menetapkan opsi terkait keamanan dengan konteks keamanan. Selengkapnya di Ringkasan keamanan.
    1.2.19 Pastikan argumen --audit-log-path telah ditetapkan (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Selengkapnya tentang Cloud Audit Logs.
    1.2.20 Pastikan argumen --audit-log-maxage disetel ke 30 atau yang sesuai (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Selengkapnya tentang Cloud Audit Logs.
    1.2.21 Pastikan argumen --audit-log-maxbackup disetel ke 10 atau yang sesuai (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Selengkapnya tentang Cloud Audit Logs.
    1.2.22 Pastikan argumen --audit-log-maxsize disetel ke 100 atau yang sesuai (Otomatis) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Selengkapnya tentang Cloud Audit Logs.
    3.1.1 Autentikasi 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, selengkapnya di Menghubungkan dan mengautentikasi ke cluster.
    3.2.2 Memastikan bahwa kebijakan audit mencakup masalah keamanan utama (Manual) L2 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS menyediakan opsi logging audit cloud. Selengkapnya tentang Cloud Audit Logs.
    4.2.4 Pastikan argumen --read-only-port disetel ke 0 (Manual) L1 Gagal 10255 Cluster Anthos di AWS saat ini menetapkan argumen --read-only-port ke 10255 untuk mengumpulkan metrik dari kubelet.
    4.2.6 Pastikan argumen --protect-kernel-defaults ditetapkan ke benar (Otomatis) L1 Gagal false Cluster Anthos di AWS memungkinkan kubelet mengatur setelan kernel yang diperlukan.
    4.2.9 Pastikan argumen --event-qps disetel ke 0 atau tingkat yang memastikan pengambilan peristiwa yang tepat (Manual) L2 Peringatkan tidak ditetapkan Peristiwa adalah objek Kubernetes yang disimpan di etcd. Untuk menghindari kewalahan, dll., penyimpanan tersebut hanya disimpan selama satu jam, dan bukan mekanisme audit keamanan yang tepat. Mengizinkan event tak terbatas seperti yang disarankan dalam kontrol ini akan mengekspos cluster terhadap 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 Pastikan argumen --tls-cert-file dan --tls-private-key-file ditetapkan sebagaimana mestinya (Manual) L1 Kontrol Setara tidak ditetapkan Cluster Anthos di AWS mengelola TLS server kubelet menggunakan flag serverTLSBootstrap.

    Cara mengaudit Tolok Ukur

    Petunjuk khusus untuk mengaudit setiap rekomendasi tersedia sebagai bagian dari CIS Benchmark 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 terhadap CIS Kubernetes Benchmark.

    Pastikan untuk menentukan versi yang sesuai, misalnya,

    kube-bench node --benchmark cis-1.23