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 . Clustersiap 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 NvSecurityRule
berkaitan dengan sifat namespaced
dan NvClusterSecurityRule
terkait 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
: NvSecurityRule
akan 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 clusterroles
dan 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-pod
di namespace demo
dengan 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.