Cara mengotomatiskan keamanan wadah dengan gaya Kebijakan sebagai Kode menggunakan CRD



Kami akan menunjukkan kepada Anda cara menggunakan Kubernetes CRD untuk mengotomatisasi keamanan dan melindungi aplikasi Anda.

Terjemahan dari tim majalah Tomorrow Cloudy Mail.ru Cloud Solutions . Sumber: Niteen Kole Cara Mengotomatiskan Keamanan Kontainer dengan Menggunakan CRD untuk Mendapatkan Kebijakan Keamanan sebagai Kode dengan Ekstra .

Mengapa Anda perlu CRD


Keamanan telah lama memusingkan tim DevOps . Alat perangkat lunak yang ada berhasil menyelesaikan masalah otomatisasi perakitan dan peluncuran aplikasi - peluncuran otomatis aplikasi berdasarkan wadah telah menjadi standar. Pada saat yang sama, otomatisasi pengaturan keamanan jauh tertinggal.

Anda dapat menerapkan pemindaian kerentanan otomatis, tetapi kebutuhan untuk mengkonfigurasi kebijakan secara manual untuk keamanan aplikasi menjadi sakit kepala.

Pengenalan definisi sumber daya khusus Kubernet (CRD) akan membantu menyelesaikan masalah dengan mendefinisikan kebijakan keamanan sebagai kode pada tahap awal perakitan dan peluncuran aplikasi, dan mengotomatiskan penggunaannya saat meluncurkan aplikasi ke lingkungan produksi.

CRD dapat digunakan untuk mengimplementasikan kebijakan keamanan global yang mendefinisikan perilaku aplikasi dan mengkonfigurasi keamanan beberapa cluster Kubernetes yang digunakan.

Menggunakan CRD untuk otomatisasi dan mendefinisikan pengaturan keamanan secara terpusat sebagai kode, Anda dapat secara bersamaan memperketat pengaturan keamanan dan menyederhanakan aplikasi mereka. Ini pada akhirnya menyebabkan aplikasi menjadi lebih efisien, dengan lebih sedikit kesalahan, dan yang paling penting, lebih aman.

Bagaimana cara kerja CRD?


Untuk menetapkan kebijakan keamanan, kami akan menggunakan NeuVector CRD di dalam platform wadah NeuVector . Alternatif untuk NeuVector untuk keamanan wadah: AquaSec, StackRox, Sysdig Secure, Twistlock.

NeuVector CRD berisi kebijakan yang pertama kali mengumpulkan profil lengkap perilaku aplikasi normal.

Perilaku yang dikumpulkan ditambahkan ke daftar putih, termasuk semua aturan jaringan, proses, protokol, dan operasi file. Semua ini bersama-sama merupakan satu set operasi aplikasi standar. Kemudian, pengaturan keamanan diterapkan, yang memungkinkan hanya koneksi jaringan yang dikonfirmasi di dalam wadah yang membentuk aplikasi. Koneksi ini diidentifikasi selama inspeksi model OSI layer 7 (lapisan protokol aplikasi). Dengan demikian, segala upaya koneksi eksternal yang tidak sah akan dicegah.

Kebijakan keamanan akan mencegah penyerang menggunakan komunikasi di luar atau di dalam wadah untuk menggunakan aplikasi untuk tujuan mereka sendiri.

CRD memungkinkan Anda untuk menentukan aturan dan aturan global untuk setiap layanan secara terpisah. CRD juga kompatibel dengan Kubernetes RBAC, memungkinkan Anda untuk menggunakan akun layanan dan peran Kubernetes untuk menegakkan kebijakan keamanan.

Selain itu, versi tersedia untuk membuat kebijakan sendiri untuk setiap versi aplikasi, integrasi dengan alat manajemen kebijakan keamanan seperti Agen Kebijakan Terbuka didukung . Cluster

siap pakai Kubernetes dengan sistem pemantauan yang disesuaikan secara khusus berdasarkan Prometheus dan Grafana, serta TLS dan RBAC untuk mengelola hak akses dan pengembangan standardisasi dalam tim yang didistribusikan, dapat diuji secara gratis di cloud Cloud Mail.ru Solution.

Pembuatan NeuVector CRD


NeuVector CRD memungkinkan Anda untuk menggunakan file asli YAML Kubernetes untuk membuat aturan keamanan.

Buat file nvsecurityrule.yaml yang berisi deskripsi NeuVector CRD. File ini mengontrol yang NvSecurityRuleberkaitan dengan sifat namespaceddan NvClusterSecurityRuleterkait dengan cluster.

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: nvsecurityrules.neuvector.com
spec:
  group: neuvector.com
  names:
    kind: NvSecurityRule
    listKind: NvSecurityRuleList
    plural: nvsecurityrules
    singular: nvsecurityrule
  scope: Namespaced
  version: v1
  versions:
  — name: v1
    served: true
    storage: true

---

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: nvclustersecurityrules.neuvector.com
spec:
  group: neuvector.com
  names:
    kind: NvClusterSecurityRule
    listKind: NvClusterSecurityRuleList
    plural: nvclustersecurityrules
    singular: nvclustersecurityrule
  scope: Cluster
  version: v1
  versions:
  — name: v1
    served: true
    storage: true

Untuk membuat CRD, jalankan:

$ kubectl create -f nvsecurityrule.yaml

Segera setelah NeuVector CRD dibuat, semua sumber daya yang dibuat nanti dengan parameter kind: NvSecurityRuleakan diproses oleh CRD ini. Dengan demikian, Anda dapat membuat sumber daya Anda sendiri dengan kebijakan keamanan yang terhubung. Sebelum melakukan apa pun, disarankan untuk mempelajari dokumentasi NeuVector dan menambahkan yang diperlukan clusterrolesdan clusterrolebindings.

Juga, menggunakan CRD ini untuk menerapkan kebijakan keamanan NeuVector di cluster Kubernetes memerlukan pengaturan hak yang tepat (RBAC). Kebijakan keamanan yang ditentukan oleh CRD untuk ruang nama apa pun hanya dapat diterapkan oleh pengguna yang memiliki hak untuk menggunakan ruang nama yang ditentukan. Menerapkan kebijakan keamanan untuk sebuah cluster memerlukan hak administrator cluster.

Di bawah ini adalah kode uji dari demo-security-v1.yaml, yang membatasi kontainer nginx-poddi namespace demodengan menyediakan akses ke kontainer lain dari namespace yang sama hanya melalui HTTP.

apiVersion: v1
items:
- apiVersion: neuvector.com/v1
  kind: NvSecurityRule
  metadata:
    name: nv.nginx-pod.demo
  spec:
    egress:
    — Selector:
        criteria:
        — key: service
          op: =
          value: node-pod.demo
        — key: domain
          op: =
          value: demo
        name: nv.node-pod.demo
      action: allow
      applications:
      - HTTP
      name: nv.node-pod.demo-egress-0
      ports: any
    — Selector:
        criteria:
        — key: service
          op: =

Di bawah cuplikan harus ada deskripsi dari semua koneksi jaringan yang diizinkan untuk kontainer di namespace demo, misalnya, koneksi ke server redis, serta proses dan aktivitas disk yang diizinkan untuk setiap wadah. Jangan lupa untuk terlebih dahulu menerapkan kebijakan keamanan NeuVector dan kemudian menyebarkan aplikasi. Dengan demikian, kebijakan keamanan akan efektif sejak aplikasi dimulai.

Untuk menerapkan kebijakan keamanan:

$ kubectl create -f demo-security-v1.yaml

NeuVector membaca kebijakan keamanan di sumber daya yang dibuat dan menggunakan REST API untuk menghubungi pengontrol NeuVector, yang membuat aturan dan konfigurasi sesuai dengan kebijakan keamanan yang ditransfer.

Opsi untuk menerapkan kebijakan keamanan sebagai kode


Menggunakan kebijakan keamanan sebagai kode membuka banyak peluang untuk perintah dan programer DevOps / DevSecOps. Berikut ini beberapa contohnya.

Pengembangan dan pengujian manifes keamanan pada tahap awal membangun aplikasi


Pengembang dapat menggunakan CRD untuk membuat aplikasi lebih aman di tahap awal pengembangan. Mereka secara bersamaan dapat membuat manifes untuk menggunakan dan menerapkan kebijakan keamanan.

Setelah membangun gambar, secara otomatis memeriksa kerentanan, dan persetujuan oleh tim DevOps, DevOps dapat memverifikasi kedua manifesto dan memberikan rekomendasi kepada tim pengembangan dari sudut pandang keamanan. Aplikasi baru akan dikerahkan bersama dengan kebijakan keamanan yang efektif mulai dari penyebaran pertama hingga produksi.



Menggunakan analisis perilaku untuk membuat kebijakan keamanan


Tim DevOps dapat menggunakan kemampuan analisis perilaku NeuVector di lingkungan pengujian untuk mengembangkan kebijakan keamanan dan membuat file yaml yang cocok untuk digunakan dalam NeuVector CRD.

Gambar berikut, mulai dari sudut kanan bawah diagram, menunjukkan bagaimana tim DevOps Anda menyebarkan aplikasi ke lingkungan pengujian, di mana analisis lengkap perilaku aplikasi dilakukan dan profil keamanan untuk jaringan, aktivitas file, dan proses terbentuk.

Aturan-aturan ini diekspor dan diteruskan ke pengembang yang melakukan penyesuaian yang diperlukan, dan DevOps, yang mengujinya sebelum menggunakannya dalam produksi.



Kebijakan Keamanan Global


NeuVector CRD memungkinkan Anda untuk menentukan kebijakan keamanan global yang tidak terikat pada aplikasi tertentu atau sekelompok aplikasi dalam sebuah cluster. Misalnya, tim keamanan atau implementasi Anda dapat menetapkan aturan jaringan global untuk memblokir koneksi apa pun di semua wadah atau untuk mengkonfigurasi akses pemantauan ke semua proses di kluster.



Dengan menggunakan kebijakan keamanan umum dan kebijakan keamanan aplikasi bersamaan, Anda dapat membangun pengaturan keamanan yang kompleks dan tepat yang dibutuhkan organisasi Anda.

Berikut ini adalah contoh pelarangan koneksi ssh dari wadah ke luar:

- apiVersion: neuvector.com/v1
  kind: NvClusterSecurityRule
  metadata:
    name: containers
    namespace: default
  spec:
    egress: []
    file: []
    ingress:
    — Selector:
        criteria: []
        name: external
      action: deny
      applications:
      - SSH
      name: containers-ingress-0
      ports: tcp/22
    process:
    — action: deny
      name: ssh
      path: /bin/ssh
    target:    
      Selector:
        criteria:
        — key: container
          op: =
          value: '*'
        name: containers
      policymode: null
    version: v1  
 

Migrasi Kebijakan Keamanan dari Pengujian ke Produksi


Dengan NeuVector CRD, Anda dapat mengontrol migrasi otomatis kebijakan keamanan - semua atau hanya yang Anda butuhkan - dari lingkungan pengujian ke lingkungan produksi. Di konsol NeuVector, Anda dapat mengonfigurasi mode layanan baru untuk deteksi, pemantauan, atau perlindungan.

Pilihan mode pemantauan atau perlindungan berarti bahwa setiap penyebaran atau pembaruan layanan harus mencakup pengaturan kebijakan keamanan yang Anda tetapkan. Dengan demikian, layanan akan masuk ke status aktif hanya setelah menerapkan kebijakan keamanan.

Dengan menggunakan kemampuan Kubernetes CRD dan kebijakan keamanan sebagai kode, pengembang dan DevOps Anda akan dapat menerapkan otomasi kebijakan keamanan untuk aplikasi dan memastikan bahwa aplikasi jauh lebih terlindungi di semua tahap: dari awal pengembangan hingga bekerja di produksi.


All Articles