Melindungi penguatan data plane Kubernetes Anda

Halaman ini menjelaskan cara menggunakan kumpulan rekomendasi keamanan Microsoft Defender untuk Cloud yang didedikasikan untuk penguatan data plane Kubernetes.

Tip

Untuk daftar rekomendasi keamanan yang mungkin muncul untuk kluster dan simpul Kubernetes, lihat bagian Rekomendasi kontainer dari tabel referensi rekomendasi.

Menyiapkan perlindungan beban kerja Anda

Microsoft Defender untuk Cloud menyertakan bundel rekomendasi yang tersedia setelah Anda menginstal Azure Policy untuk Kubernetes.

Prasyarat

Mengaktifkan penguatan data plane Kubernetes

Anda dapat mengaktifkan Azure Policy untuk Kubernetes dengan salah satu dari dua cara:

Aktifkan Azure Policy untuk Kubernetes untuk semua kluster saat ini dan yang akan datang menggunakan pengaturan rencana/konektor

Catatan

Jika Anda mengaktifkan pengaturan ini, Azure Policy untuk pod Kubernetes akan diinstal pada kluster. Melakukannya mengalokasikan sejumlah kecil CPU dan memori untuk digunakan pod. Alokasi ini mungkin mencapai kapasitas maksimum, tetapi tidak memengaruhi CPU dan memori lainnya di sumber daya.

Catatan

Pengaktifan untuk AWS melalui konektor tidak didukung karena keterbatasan dalam EKS yang mengharuskan admin kluster menambahkan izin untuk peran IAM baru pada kluster itu sendiri.

Mengaktifkan langganan Azure atau lokal

Saat Anda mengaktifkan Pertahanan Microsoft untuk Kontainer, pengaturan "Azure Policy for Kubernetes" diaktifkan secara default untuk Azure Kubernetes Service, dan untuk kluster Kubernetes dengan dukungan Azure Arc dalam langganan yang relevan. Jika Anda menonaktifkan pengaturan pada konfigurasi awal, Anda dapat mengaktifkannya setelah itu secara manual.

Jika Anda menonaktifkan pengaturan "Azure Policy for Kubernetes" di bawah paket kontainer, Anda dapat mengikuti langkah-langkah di bawah ini untuk mengaktifkannya di semua kluster dalam langganan Anda:

  1. Masuk ke portal Azure.

  2. Buka Microsoft Defender untuk Cloud>Pengaturan lingkungan.

  3. Pilih langganan yang relevan.

  4. Di halaman paket Defender, pastikan Kontainer dialihkan ke Aktif.

  5. Pilih pengaturan.

    Screenshot showing the settings button in the Defender plan.

  6. Di halaman Pengaturan & Pemantauan, alihkan "Azure Policy for Kubernetes" ke Aktif.

    Screenshot showing the toggles used to enable or disable the extensions.

Mengaktifkan untuk proyek GCP

Saat Anda mengaktifkan Pertahanan Microsoft untuk Kontainer pada konektor GCP, pengaturan "Ekstensi Azure Policy untuk Azure Arc" diaktifkan secara default untuk Google Kubernetes Engine di proyek yang relevan. Jika Anda menonaktifkan pengaturan pada konfigurasi awal, Anda dapat mengaktifkannya setelah itu secara manual.

Jika Anda menonaktifkan pengaturan "Ekstensi Azure Policy untuk Azure Arc" di bawah konektor GCP, Anda dapat mengikuti langkah-langkah di bawah ini untuk mengaktifkannya pada konektor GCP Anda.

Menyebarkan Azure Policy untuk Kubernetes pada kluster yang ada

Anda dapat mengonfigurasi Azure Policy untuk Kubernetes secara manual pada kluster Kubernetes yang ada melalui halaman Rekomendasi. Setelah diaktifkan, rekomendasi pengerasan tersedia (beberapa rekomendasi memerlukan konfigurasi lain untuk bekerja).

Catatan

Untuk AWS tidak dimungkinkan untuk melakukan onboarding dalam skala besar menggunakan konektor, tetapi dapat diinstal pada semua kluster yang ada atau pada kluster tertentu menggunakan rekomendasi kluster Kubernetes dengan dukungan Azure Arc harus menginstal ekstensi kebijakan Azure untuk ekstensi Kubernetes.

Untuk menyebarkanAzure Policy untuk Kuberneteske kluster tertentu:

  1. Dari halaman rekomendasi, cari rekomendasi yang relevan:

    • Azure-"Azure Kubernetes Service clusters should have the Azure Policy add-on for Kubernetes installed"

    • GCP - "GKE clusters should have the Azure Policy extension".

    • AWS dan Lokal - "Azure Arc-enabled Kubernetes clusters should have the Azure policy extension for Kubernetes extension installed". Screenshot showing the Azure Kubernetes service clusters recommendation.

      Tip

      Rekomendasi disertakan dalam kontrol keamanan yang berbeda, dan tidak masalah mana yang Anda pilih di langkah berikutnya.

  2. Dari salah satu kontrol keamanan, pilih rekomendasi untuk melihat sumber daya tempat Anda dapat memasang add-on.

  3. Pilih kluster yang relevan, dan pilih Remediasi.

    Screenshot that shows how to select the cluster to remediate.

Melihat dan mengonfigurasi bundel rekomendasi

Sekitar 30 menit setelah penginstalan Azure Policy for Kubernetes selesai, Defender untuk Cloud menunjukkan status kesehatan kluster untuk rekomendasi berikut, masing-masing dalam kontrol keamanan yang relevan seperti yang ditunjukkan:

Catatan

Jika Anda menginstal Azure Policy untuk Kubernetes untuk pertama kalinya, rekomendasi ini akan muncul sebagai tambahan baru dalam daftar rekomendasi.

Tip

Beberapa rekomendasi memiliki parameter yang harus disesuaikan melalui Azure Policy untuk menggunakannya secara efektif. Misalnya, untuk mendapatkan manfaat dari rekomendasi Gambar kontainer harus disebarkan hanya dari registri tepercaya, Anda harus menentukan registri tepercaya Anda. Jika Anda tidak memasukkan parameter yang diperlukan untuk rekomendasi yang membutuhkan konfigurasi, beban kerja Anda akan ditampilkan sebagai tidak sehat.

Nama rekomendasi Kontrol Keamanan Konfigurasi diperlukan
CPU kontainer dan batas memori harus diberlakukan Melindungi aplikasi dari serangan DDoS Ya
Gambar kontainer harus disebarkan hanya dari registri tepercaya Remediasi kerentanan Ya
Kemampuan Linux dengan hak istimewa paling rendah harus diberlakukan untuk kontainer Mengelola akses dan izin akses Ya
Kontainer hanya boleh menggunakan profil AppArmor yang diizinkan Remediasi konfigurasi keamanan Ya
Layanan hanya mendengarkan pada port yang diizinkan Membatasi akses jaringan yang tidak sah Ya
Penggunaan jaringan dan port host harus dibatasi Membatasi akses jaringan yang tidak sah Ya
Penggunaan volume pod HostPath yang dipasang harus dibatasi untuk daftar yang diketahui Mengelola akses dan izin akses Ya
Kontainer dengan eskalasi hak istimewa harus dihindari Mengelola akses dan izin akses No
Kontainer yang berbagi namespace layanan host yang sensitif harus dihindari Mengelola akses dan izin akses No
Sistem file akar yang tidak dapat diubah (baca-saja) harus diberlakukan untuk kontainer Mengelola akses dan izin akses No
Cluster Kubernetes hanya dapat diakses melalui HTTPS Mengenkripsi data dalam transit No
Kluster Kube harus menonaktifkan pemasangan otomatis info masuk API Mengelola akses dan izin akses No
Kluster Kube tidak boleh menggunakan namespace layanan default Menerapkan praktik keamanan terbaik No
Kluster Kube tidak boleh memberi kemampuan keamanan CAPSYSADMIN Mengelola akses dan izin akses No
Kontainer dengan hak istimewa harus dihindari Mengelola akses dan izin akses No
Menjalankan kontainer sebagai pengguna akar harus dihindari Mengelola akses dan izin akses No

Untuk rekomendasi dengan parameter yang perlu disesuaikan, Anda perlu mengatur parameter:

Untuk mengatur parameter:

  1. Masuk ke portal Azure.

  2. Buka Microsoft Defender untuk Cloud>Pengaturan lingkungan.

  3. Pilih langganan yang relevan.

  4. Dari menu Defender untuk Cloud, pilih Kebijakan keamanan.

  5. Pilih penugasan yang relevan. Penugasan default adalah ASC default.

  6. Buka tab Parameter dan ubah nilai sesuai yang diperlukan.

    Screenshot showing where to modify the parameters for one of the recommendations in the Kubernetes data plane hardening protection bundle.

  7. Pilih Tinjau + simpan.

  8. Pilih Simpan.

Untuk menerapkan salah satu rekomendasi:

  1. Buka halaman detail rekomendasi dan pilih Tolak:

    Screenshot showing the Deny option for Azure Policy parameter.

    Panel untuk mengatur cakupan terbuka.

  2. Atur cakupan dan pilih Ubah untuk menolak.

Untuk melihat rekomendasi mana yang berlaku untuk kluster Anda:

  1. Buka halaman inventori aset Defender untuk Cloud dan atur filter jenis sumber daya ke layanan Kubernetes.

  2. Pilih kluster untuk menyelidiki dan meninjau rekomendasi yang tersedia.

Saat Anda melihat rekomendasi dari kumpulan perlindungan beban kerja, jumlah pod yang terpengaruh ("komponen Kubernetes") tercantum bersama kluster. Untuk daftar Pod tertentu, pilih kluster lalu pilih Ambil tindakan.

Screenshot showing where to view the affected pods for a Kubernetes recommendation.

Untuk menguji penerapannya, gunakan dua penyebaran Kubernetes di bawah ini:

  • Pertama adalah untuk penyebaran yang sehat, sesuai dengan bundel rekomendasi perlindungan beban kerja.

  • Yang lain adalah untuk penyebaran yang tidak sehat, tidak sesuai dengan salah satu rekomendasi.

Sebarkan contoh file .yaml apa adanya, atau gunakan sebagai referensi untuk memulihkan beban kerja Anda sendiri.

Contoh penyebaran file .yaml yang sehat

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-healthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
      annotations:
        container.apparmor.security.beta.kubernetes.io/redis: runtime/default
    spec:
      containers:
      - name: redis
        image: <customer-registry>.azurecr.io/redis:latest
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 100m
            memory: 250Mi
        securityContext:
          privileged: false
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
          runAsNonRoot: true
          runAsUser: 1000
---
apiVersion: v1
kind: Service
metadata:
  name: redis-healthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 80
    targetPort: 80

Contoh penyebaran file .yaml yang tidak sehat

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-unhealthy-deployment
  labels:
    app: redis
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
  template:
    metadata:      
      labels:
        app: redis
    spec:
      hostNetwork: true
      hostPID: true 
      hostIPC: true
      containers:
      - name: redis
        image: redis:latest
        ports:
        - containerPort: 9001
          hostPort: 9001
        securityContext:
          privileged: true
          readOnlyRootFilesystem: false
          allowPrivilegeEscalation: true
          runAsUser: 0
          capabilities:
            add:
              - NET_ADMIN
        volumeMounts:
        - mountPath: /test-pd
          name: test-volume
          readOnly: true
      volumes:
      - name: test-volume
        hostPath:
          # directory location on host
          path: /tmp
---
apiVersion: v1
kind: Service
metadata:
  name: redis-unhealthy-service
spec:
  type: LoadBalancer
  selector:
    app: redis
  ports:
  - port: 6001
    targetPort: 9001

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara mengonfigurasi penguatan data plane Kubernetes.

Untuk materi terkait, lihat halaman berikut ini: