Security Center mendukung koneksi kluster Kubernetes (K8s) yang dikelola sendiri untuk manajemen terpusat dan deteksi risiko keamanan. Topik ini menjelaskan cara menghubungkan kluster K8s yang dikelola sendiri.
Batasan Versi
Langganan: Ultimate (Jika edisi saat ini tidak mendukung fitur ini, upgrade).
CatatanEdisi perlindungan server harus diatur ke edisi yang Anda beli. Untuk informasi selengkapnya, lihat Bind a server protection edition.
Pay-as-you-go: Host and Container Security pay-as-you-go telah diaktifkan (Jika belum diaktifkan, purchase).
CatatanTingkat perlindungan server harus diatur ke Host and Container Security. Untuk informasi selengkapnya, lihat Bind a server protection level.
Pembatasan
Pembatasan wilayah untuk onboarding adalah sebagai berikut:
Jika jenis jaringan kluster K8s yang dikelola sendiri adalah VPC, kluster hanya dapat dihubungkan di wilayah Tiongkok (Hangzhou), Tiongkok (Beijing), Tiongkok (Shanghai), Tiongkok (Shenzhen), dan Tiongkok (Hong Kong).
Jika jenis jaringan kluster K8s yang dikelola sendiri adalah jaringan publik, tidak ada pembatasan wilayah.
Prasyarat
Kluster K8s telah disiapkan di server.
Docker telah diinstal.
Jika Anda ingin menggunakan fitur analisis eksposur kluster, Anda juga harus menyelesaikan konfigurasi jaringan berikut berdasarkan mode penerapan kluster dan konfigurasi kebijakan kontrol akses Anda. Untuk informasi selengkapnya, lihat Analyze cluster exposure.
Jika kluster K8s Anda diterapkan di cloud hibrida dan tidak dapat diakses langsung melalui jaringan publik, konfigurasikan aturan pengalihan lalu lintas untuk memastikan konektivitas jaringan sebelum menghubungkan kluster ke Security Center.
Jika kebijakan kontrol akses dikonfigurasi untuk kluster Anda, pastikan kolam alamat IP wilayah tempat kontainer berada telah ditambahkan ke daftar putih kebijakan kontrol akses.
Tambahkan kluster Kubernetes yang dikelola sendiri ke Security Center
Login ke Security Center console.
Di panel navigasi kiri, pilih . Di pojok kiri atas konsol, pilih wilayah tempat aset yang akan dilindungi berada: Chinese Mainland atau Outside Chinese Mainland.
Di tab Cluster, klik Self-built cluster access.
Di panel Self-built cluster management, klik Self-built cluster access, konfigurasikan informasi tentang kluster K8s yang dikelola sendiri yang ingin Anda hubungkan, lalu klik Generate Command.
Parameter
Deskripsi
Cluster name
Masukkan nama kluster K8s yang dikelola sendiri. Contoh: text-001.
Expiration Time
Pilih waktu kedaluwarsa perintah yang digunakan untuk menghubungkan kluster K8s yang dikelola sendiri.
Group
Pilih grup kluster setelah kluster terhubung (yaitu grup tempat server tempat kluster berada).
Service Provider
Pilih penyedia server tempat kluster berada.
(Opsional) Di bagian Enable Log Collection, tentukan apakah akan mengaktifkan deteksi ancaman berbasis log K8s.
Setelah Anda mengaktifkan deteksi ancaman berbasis log K8s, Security Center dapat memperoleh lebih banyak log audit untuk mendeteksi risiko keamanan secara lebih komprehensif. Sebelum mengaktifkan deteksi ancaman, Anda harus menginstal komponen Logtail di kluster K8s dan menyelesaikan konfigurasi terkait audit. Untuk informasi selengkapnya, lihat Enable log-based threat detection.
Login ke server tempat kluster berada, buat file bernama text-001.yaml, salin perintah yang dihasilkan ke file tersebut, lalu jalankan perintah
kubectl apply -f text-001.yamluntuk menghubungkan kluster.Secara default, perintah yang dihasilkan di Langkah 4 tidak menghubungkan node master atau node yang memiliki taint. Jika Anda ingin menghubungkan node master dan node yang memiliki taint, modifikasi konfigurasi dalam file YAML berdasarkan petunjuk berikut.
Setelah Anda menghubungkan kluster K8s yang dikelola sendiri, Anda dapat melihat informasi tentang kluster yang terhubung di daftar kluster pada tab Cluster.
Aktifkan deteksi ancaman berbasis log
Jika versi kluster K8s adalah 1.16 atau lebih baru, Anda dapat mengaktifkan deteksi ancaman berbasis log K8s untuk memberikan deteksi risiko keamanan yang lebih komprehensif untuk kluster yang dikelola sendiri, seperti mendeteksi operasi berisiko tinggi dan serangan.
Langkah 1. Instal Logtail
Untuk informasi selengkapnya, lihat Install Logtail components in a self-managed Kubernetes cluster, khususnya bagian Install Logtail.
Langkah 2. Aktifkan auditing kluster
Langkah-langkah berikut hanya sebagai referensi. Untuk informasi selengkapnya, lihat Use cluster auditing.
Kluster terdaftar telah dibuat dan kluster Kubernetes yang dikelola sendiri telah dihubungkan ke kluster terdaftar. Untuk informasi selengkapnya, lihat Create an ACK One registered cluster.
Konfigurasikan file kebijakan audit di node master.
Login ke node master dan edit
/etc/kubernetes/audit-policy.yamlmenggunakan templat di bawah ini. Ulangi langkah ini di semua node master lainnya.CatatanNilai
apiVersionbergantung pada versi Kubernetes Anda:Kubernetes sebelum 1.24: gunakan
audit.k8s.io/v1beta1Kubernetes 1.24 dan seterusnya: gunakan
audit.k8s.io/v1
Untuk detailnya, lihat Kubernetes 1.24 release notes.
apiVersion: audit.k8s.io/v1beta1 # Gunakan audit.k8s.io/v1 untuk Kubernetes >= 1.24 kind: Policy # Sembunyikan event pada tahap RequestReceived. omitStages: - "RequestReceived" rules: # Permintaan volume tinggi dengan risiko rendah — tidak dicatat. - level: None users: ["system:kube-proxy"] verbs: ["watch"] resources: - group: "" # core resources: ["endpoints", "services"] - level: None users: ["system:unsecured"] namespaces: ["kube-system"] verbs: ["get"] resources: - group: "" # core resources: ["configmaps"] - level: None users: ["kubelet"] # identitas kubelet lama verbs: ["get"] resources: - group: "" # core resources: ["nodes"] - level: None userGroups: ["system:nodes"] verbs: ["get"] resources: - group: "" # core resources: ["nodes"] - level: None users: - system:kube-controller-manager - system:kube-scheduler - system:serviceaccount:kube-system:endpoint-controller verbs: ["get", "update"] namespaces: ["kube-system"] resources: - group: "" # core resources: ["endpoints"] - level: None users: ["system:apiserver"] verbs: ["get"] resources: - group: "" # core resources: ["namespaces"] # URL hanya-baca — tidak dicatat. - level: None nonResourceURLs: - /healthz* - /version - /swagger* # Event — tidak dicatat. - level: None resources: - group: "" # core resources: ["events"] # Secrets, ConfigMaps, dan TokenReviews berisi data sensitif atau biner — # catat hanya metadata. - level: Metadata resources: - group: "" # core resources: ["secrets", "configmaps"] - group: authentication.k8s.io resources: ["tokenreviews"] # Permintaan baca untuk grup API yang dikenal — catat hanya metadata permintaan (respons bisa besar). - level: Request verbs: ["get", "list", "watch"] resources: - group: "" # core - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" # Permintaan tulis untuk grup API yang dikenal — catat permintaan dan respons lengkap. - level: RequestResponse resources: - group: "" # core - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" # Semua permintaan lainnya — catat hanya metadata. - level: MetadataKonfigurasikan file Kube API Server di node master.
Login ke semua node master satu per satu dan selesaikan konfigurasi berikut dalam file Kube API Server di path /etc/kubernetes/manifests/kube-apiserver.yaml:
Tambahkan parameter
--audit-log-*ke perintah berdasarkan contoh berikut:... spec: containers: - command: - kube-apiserver - --audit-log-maxbackup=10 - --audit-log-maxsize=100 - --audit-log-path=/var/log/kubernetes/kubernetes.audit - --audit-log-maxage=30 - --audit-policy-file=/etc/kubernetes/audit-policy.yaml ...Tambahkan parameter env
aliyun_logs_audit-*berdasarkan contoh berikut:Anda harus mengganti {cluster_id} dalam contoh berikut dengan Cluster ID kluster Anda. Anda dapat login ke Security Center console dan memperoleh Cluster ID kluster di halaman Container.
${cluster_id}menentukan ID kluster. Anda dapat login ke konsol Security Center dan memperoleh Cluster ID kluster tujuan dari kolom Cluster Information di daftar kluster pada halaman Container Assets > Cluster.... spec: containers: - command: - kube-apiserver - --audit-log-maxbackup=10 - --audit-log-maxsize=100 - --audit-log-path=/var/log/kubernetes/kubernetes.audit - --audit-log-maxage=30 - --audit-policy-file=/etc/kubernetes/audit-policy.yaml ... ... env: - name: aliyun_logs_audit-${cluster_id} value: /var/log/kubernetes/kubernetes.audit - name: aliyun_logs_audit-${cluster_id}_tags value: audit=apiserver - name: aliyun_logs_audit-${cluster_id}_product value: k8s-audit - name: aliyun_logs_audit-${cluster_id}_jsonfile value: "true" image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1Mount
/etc/kubernetes/audit-policy.yamlke Pod API Server seperti pada contoh berikut.... spec: containers: - command: - kube-apiserver - --audit-log-maxbackup=10 - --audit-log-maxsize=100 - --audit-log-path=/var/log/kubernetes/kubernetes.audit - --audit-log-maxage=30 - --audit-policy-file=/etc/kubernetes/audit-policy.yaml ... ... env: - name: aliyun_logs_audit-${cluster_id} value: /var/log/kubernetes/kubernetes.audit - name: aliyun_logs_audit-${cluster_id}_tags value: audit=apiserver - name: aliyun_logs_audit-${cluster_id}_product value: k8s-audit - name: aliyun_logs_audit-${cluster_id}_jsonfile value: "true" image: registry-vpc.cn-shenzhen.aliyuncs.com/acs/kube-apiserver:v1.20.4-aliyun.1 ... ... volumeMounts: - mountPath: /var/log/kubernetes name: k8s-audit - mountPath: /etc/kubernetes/audit-policy.yaml name: audit-policy readOnly: true ... ... volumes: - hostPath: path: /var/log/kubernetes type: DirectoryOrCreate name: k8s-audit - hostPath: path: /etc/kubernetes/audit-policy.yaml type: FileOrCreate name: audit-policy ...
Langkah 3. Verifikasi pengumpulan log
Login ke Simple Log Service console.
Klik nama proyek tujuan.
Periksa apakah log terkait telah dikumpulkan ke Logstore di bawah proyek tujuan.
Langkah 4. Aktifkan deteksi ancaman
Login ke Security Center console.
Di panel navigasi kiri, pilih . Di pojok kiri atas konsol, pilih wilayah tempat aset yang akan dilindungi berada: Chinese Mainland atau Outside Chinese Mainland.
Di tab Cluster, klik Self-built cluster access.
Temukan kluster yang dikelola sendiri tempat Anda ingin mengaktifkan deteksi ancaman berbasis log K8s. Di kolom Actions, klik Edit.
Di tab Enable Log Collection, pilih Enable Kubernetes Log Reporting to Detect Threats, konfigurasikan informasi log audit, lalu klik Save.
Region of Log Audit Service: Pilih wilayah tempat log audit disimpan.
Project of Log Audit Service: Masukkan nama proyek yang dibuat di Langkah 1. Install Logtail. Contoh: k8s-log-custom-sd89ehdq.
Logstore of Log Audit Service: Masukkan nama Logstore yang dibuat secara otomatis di Langkah 1. Install Logtail. Contoh: audit-027b007a7dd11967a9f7e2449d8dc497.