DevSecOps

馃洝DevSecOps & K8s G眉venlik Taray谋c谋lar谋鈽革笍

G眉n眉m眉z sekt枚r眉nde DevOps k眉lt眉r眉 h谋zla yay谋lmaya devam etmektedir. Bu durum, yaz谋l谋m geli艧tirme s眉re莽lerini her ne kadar iyile艧tirse de genellikle atlan谋lan 枚nemli bir konu var; g眉venlik! Halihaz谋rda bir莽ok pipeline'谋m谋zda Sonarqube, Fortify gibi ara莽larla statik kod analizi ve kod kalitesi (covarage, reliability, maintainability ve dublications gibi verilerin) 枚l莽眉m眉n眉 yap谋yoruz. T谋k谋r t谋k谋r i艧leyen pipeline'lar谋m谋z aras谋na birka莽 g眉venlik testi ad谋m谋 eklemeyi, 'ya ne de olsa internal servis' diyerek 莽o臒u zaman atlayabiliyoruz. Fakat hepimizin bildi臒i 眉zere oltalama (phishing) teknikleri ile 艧irket i莽 a臒谋na s谋zmak o kadar da zor bir i艧 de臒il. Hele ki b眉y眉k 枚l莽ekli bir firma ise risk daha da art谋yor. 陌艧te tam da bu noktada DevSecOps kavram谋 devreye giriyor. DevSecOps, t眉m g眉venlik kontrollerini birim testlerinde kodlayarak ve bunlar谋 d枚ng眉n眉n (SDLC) sonunda de臒il, yaz谋l谋m geli艧tirmenin en ba艧谋ndan itibaren kullanarak otomatikle艧tirme e臒ilimidir. Geli艧tirme, g眉venlik ve operasyonlar anlam谋na gelip, t眉m BT ya艧am d枚ng眉s眉 boyunca g眉venli臒i payla艧谋lan bir sorumluluk olarak b眉t眉nle艧tiren bir k眉lt眉r, otomasyon ve platform tasar谋m谋 yakla艧谋m谋d谋r. Yaz谋n谋n uzamamas谋 ad谋na DevSecOps nedir, faydalar谋 nelerdir, bu yakla艧谋m谋 uygulamal谋 m谋y谋z, k谋s谋mlar谋n谋 direkt atlay谋p sadede geliyorum. 馃檪 DevSecOps hakk谋nda biraz daha detayl谋 bilgi edinmek i莽in t谋klayabilirsiniz.

Esnekli臒i ve di臒er avantajlar谋 nedeniyle kubernetes'i sadece bir orkestrasyon arac谋 olarak kullanan kurulu艧lar谋n say谋s谋 artt谋k莽a, cluster'lar谋n g眉venli臒i daha savunmas谋z hale geliyor. Kubernetes, sistemin g眉venli臒ini sa臒lamak i莽in temel IAM ve rol tabanl谋 eri艧im denetimi (RBAC) rolleri sa臒lasa da, bunlar prod ortamlar i莽in yetersiz kalabiliyor. Cluster'谋n谋z谋n g眉venli臒i, kubernetes'in ciddi dikkat gerektiren alanlar谋ndan birisidir. Sald谋rganlar, uygulama ortam谋n谋za s谋zmak i莽in kubernetes cluster'谋n谋zdaki bir a莽谋ktan veya yanl谋艧 yap谋land谋rmadan yararlanabilir. Cluster'谋n谋z谋 taramaya ve k枚t眉ye kullan谋lmadan 枚nce olas谋 a莽谋klar谋 belirlemeye yard谋mc谋 olmak i莽in geli艧tirilmi艧 open source 3rd party k8s g眉venlik ara莽lar谋 vard谋r. Gelin bunlardan faydal谋 olabileceklerden baz谋lar谋na g枚z atal谋m.

Kubeaudit

Kubeaudit, Shopify taraf谋ndan Golang ile geli艧tirilen command-line bir ara莽t谋r. Kubernetes cluster'lar谋n谋, "auditors" (denet莽i) ad谋 verilen 枚nceden tan谋mlanm谋艧 baz谋 g眉venlik testleriyle kar艧谋la艧t谋rarak denetler. Kubernetes cluster'谋n谋, ayr谋cal谋k y眉kseltmeye izin veren a莽谋klar olup olmad谋臒谋, herhangi bir cluster image'谋nda yanl谋艧 yap谋land谋rma olup olmad谋臒谋, pod'lar谋n SecurityContext'i veya root hesab谋n sistem i莽in devre d谋艧谋 b谋rak谋l谋p b谋rak谋lmad谋臒谋 gibi bir denet莽i listesine kar艧谋 test eder. Yaln谋zca k眉meyi g眉venlik a莽谋klar谋 a莽谋s谋ndan denetlemekle kalmaz, ayn谋 zamanda bunlar谋n nas谋l 莽枚z眉lece臒i konusunda 枚nerilerde bulunur. Her "auditors", sisteminizde uygulanacak kapsaml谋 ayr谋nt谋lar ve best practices sa臒lar. Ara莽 ayr谋ca uygulamalar谋n谋z谋n root kullan谋c谋 olmadan 莽al谋艧t谋r谋lmas谋n谋, root dosya sistemine salt okunur eri艧im verilmesini ve di臒er genel g眉venlik uygulamalar谋n谋 te艧vik eder.

Kubeaudit denetimini 眉莽 modda ger莽ekle艧tirir: Manifest, Local ve Cluster ve sonucu bulunan sorunun 枚nem derecesine g枚re Error, Warm veya Info olarak bildirir. Tek bir komut 莽al谋艧t谋rarak Homebrew arac谋l谋臒谋yla kurulabilir: brew install kubeaudit veya kubectl denetimini kullanarak bir kubectl eklentisi olarak 莽al谋艧t谋r谋labilir.

kubeaudit

brew install kubeaudit komutu ile kurup kubeaudit all ile cluster'谋n谋zdaki zafiyetlerin raporunu konsol ekran谋 眉zerinden h谋zl谋ca alabilirsiniz.


Kube-Bench

Kube Bench, CIS (Center for Internet Security)'in best practices ile uyumlulu臒u sa臒lamak ad谋na kubernetes'te testler yapmak i莽in kullan谋l谋r. CIS, g眉venli ve standart kodlar yazmak i莽in k谋lavuzlar ve kar艧谋la艧t谋rma testleri sa臒layan bir d眉zenleyici kurumdur.
Kube Bench, Kubernetes k眉menizin CIS k谋yaslamalar谋n谋 kar艧谋lay谋p kar艧谋lamad谋臒谋n谋 kontrol eden Aqua Security'nin open source bir arac谋d谋r. Kubernetes ortam谋n谋z谋n CIS kar艧谋la艧t谋rma 枚l莽眉tlerine uymayan alanlar谋n谋 vurgular ve ayr谋ca bunlar谋 莽枚zmek i莽in 枚nerilen 莽枚z眉mler sunar.
Container olarak deploy edilebilen bir Golang uygulamas谋d谋r. Testler kolayca geni艧letilebilir ve JSON format谋 莽谋kt谋s谋 deste臒iyle YAML'da tan谋mlan谋r. Bu, Kube Bench'i Amazon Elastic Kubernetes Service (EKS) ve OpenShift gibi y枚netilen Kubernetes hizmetlerinde 莽al谋艧t谋rmay谋 kolayla艧t谋r谋r.

kube-bench

kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml ile cluster'谋n谋z i莽erisinde bir job ba艧lat谋p, kubectl logs kube-bench-kt2y7 ile pod'un log'undan g枚rseldeki gibi rapor 莽谋kt谋s谋na ula艧abilirsiniz.


Kube-Hunter

Kube Hunter, Aqua Security taraf谋ndan olu艧turulan ba艧ka bir open source kubernetes g眉venlik a莽谋臒谋 taray谋c谋s谋d谋r. Bu ara莽, sald谋rganlar bunlar谋 istismar etmeden 枚nce potansiyel olarak tehlikeli sorunlar谋 belirlemek i莽in CIS uygulamalar谋n谋n d谋艧谋ndaki kubernetes pod'lar谋n谋 ve cluster'lar谋n谋 tarayarak Kube Bench'ten daha derine iner.
Kubernetes cluster'谋ndaki olas谋 g眉venlik tehditlerini yakalamak i莽in ke艧if ve s谋zma testi yetenekleriyle Kube Bench'in CIS kurallar谋n谋 daha da geli艧tirir.
Kube Hunter, arac谋 uzak bir aray眉ze veya a臒 taramas谋na ayarlayarak yerel olarak 莽al谋艧t谋rmak i莽in birden 莽ok se莽enek sunar. Her sorunu aramay谋 kolayla艧t谋rmak i莽in bireysel kimlikler ve hata mesajlar谋yla birlikte gelen yakla艧谋k 40 farkl谋 g眉venlik a莽谋臒谋 d枚nd眉r眉r.

  1. pip install kube-hunter
  2. docker run -it --rm --network host aquasec/kube-hunter
  3. kubectl create -f https://raw.githubusercontent.com/aquasecurity/kube-hunter/main/job.yaml

Yukar谋daki metodlardan herhangi birisi ile kurabilir ve kube-hunter komutu ile 莽al谋艧t谋rabilirsiniz.

kube-hunter
kube-hunter.aquasec.com 眉zerindeki rapor sonucu

NOT: Default olarak raporu konsol ekran谋na basmaktad谋r. Yukar谋daki gibi daha okunabilir UI 眉zerinden bir 莽谋kt谋 almak istedi臒inizde Kube-Hunter'谋n container olarak 莽al谋艧t谋rma metodunu kullanmal谋s谋n谋z. Web sitesi 眉zerinde mail adresi istedi臒i alana mailinizi yaz谋p "Get Started"a t谋klad谋ktan sonra size token i莽eren bir docker run komutu veriyor. O komut ile testi 莽al谋艧t谋rd谋臒谋n谋zda sonucunuzu da yine token'l谋 bir URL 眉zerinden g枚rebiliyorsunuz.


Trivy

trivy

Yine Aqua Security'nin open source tool'lar谋ndan birisi olan Trivy, container image'lar谋ndaki, dosya sistemlerindeki ve Git repo'lar谋ndaki g眉venlik a莽谋klar谋 ve konfig眉rasyon sorunlar谋 i莽in basit ve kapsaml谋 bir taray谋c谋d谋r. Trivy, i艧letim sistemi paketlerinin (Alpine, RHEL, CentOS, vb.) ve dile 枚zg眉 paketlerin (Bundler, Composer, npm, yarn vb.) g眉venlik a莽谋klar谋n谋 tespit eder. Ayr谋ca Trivy, deployment'lar谋n谋z谋 sald谋r谋 riskine maruz b谋rakan olas谋 yap谋land谋rma sorunlar谋n谋 tespit etmek i莽in Terraform, Dockerfile ve Kubernetes gibi IaC (Infrastructure as Code) dosyalar谋n谋 da tarar. Trivy'nin kullan谋m谋 kolayd谋r. Sadece binary dosyay谋 kurup taramaya haz谋r hale gelebilirsiniz.

trivy-vuln-demo
trivy-vuln-demo
trivy-misconf-demo
trivy-misconf-demo

brew install aquasecurity/trivy/trivy komutu ile h谋zl谋ca kurabilir, trivy image, trivy conf gibi komutlarla yukar谋daki g枚rsellerdeki gibi taramalar yapabilirsiniz. Di臒er kurulum y枚ntemlerine de buradan ula艧abilirsiniz.


Kubesec

Kubesec, open source bir kubernetes g眉venlik taray谋c谋s谋 ve analiz arac谋d谋r. Kubernetes cluster'谋n谋z谋 ayr谋cal谋kl谋 yetenekler (privileged capabilities) gibi yayg谋n olarak yararlan谋labilir riskler i莽in tarar ve bulunan her g眉venlik a莽谋臒谋 i莽in bir 枚nem puan谋 sa臒lar.
Tek bir kubernetes YAML manifest dosyas谋 giri艧i al谋r. Container image'谋n谋, binary paketi kullan谋larak sisteminize y眉klenebilir veya kubernetes deployment, pods, ve resources taramak i莽in bir kubectl eklentisi olarak kullanabilirsiniz.

Pratik kontroller yapmak ad谋na kubectl krew install kubesec-scan ile kubectl plugini olarak y眉kleyebilir, kubectl kubesec-scan -n kube-system deployment kubernetes-dashboard 艧eklinde testler 莽al谋艧t谋rabilirsiniz.

Ayr谋ca Kubesec-as-a-Service'i HTTPS arac谋l谋臒谋yla v2.kubesec.io/scan adresinde 莽al谋艧t谋rabilirsiniz. Bunu yapmak i莽in hedef yaml'谋n谋z谋 d眉zenleyip a艧a臒谋daki gibi bir curl atman谋z yeterli olacakt谋r. As a service olarak herhangi bir kurulum yapmadan h谋zl谋ca sonu莽 alabilirsiniz.
curl -sSX POST --data-binary @"k8s-deployment.yaml" https://v2.kubesec.io/scan


KubiScan

KubiScan, kubernetes ortam谋n谋z谋n rol tabanl谋 eri艧im kontrol眉n眉 (RBAC) nas谋l idare etti臒i hakk谋nda fikir veren bir Kubernetes g眉venlik taray谋c谋s谋d谋r. 陌zinler ve rol ayarlar谋ndaki olas谋 riskleri taramaya ve belirlemeye odaklanan bir komut sat谋r谋 arac谋d谋r.
Ara莽, ayr谋cal谋kl谋 hesaplara sahip pod'lar谋 kolayca araman谋za ve belirli pod'larla ili艧kili rol眉 sorgulamak i莽in 莽a臒r谋lar ba艧latman谋za olanak tan谋r.

KubiScan, riskli roles\clusterroles, rolebindings\clusterrolebindings, users ve pod'lar hakk谋nda bilgi toplayarak geleneksel manuel s眉re莽leri otomatikle艧tirir ve riski azaltmak i莽in ihtiya莽 duyulan g枚r眉n眉rl眉臒眉 sa臒lar. Canl谋 demo videosu i莽in t谋klayabilirsiniz.

H谋zl谋 kurulum i莽in docker run -it --rm -e CONF_PATH=/config -v ~/.kube/:/tmp cyberark/kubiscan ile kurup, container i莽erisinde de kubiscan -rp, kubiscan -rs, kubiscan --help komutlar谋 ile testler yap谋p 莽谋kt谋lar alabilirsiniz.


KubeScape

Kubescape, risk analizi, g眉venlik uyumlulu臒u, RBAC ve image g眉venlik a莽谋klar谋 taramas谋 dahil olmak 眉zere g眉venli bir 艧ekilde deployment yap谋l谋p yap谋lmad谋臒谋n谋 test etmemizi sa臒layan open source bir k8s arac谋d谋r.

Kubescape, K8s k眉melerini, YAML dosyalar谋n谋 ve HELM 莽izelgelerini tarar, birden fazla framework'e (NSA-CISA, MITRE ATT&CK庐 gibi) g枚re yanl谋艧 yap谋land谋rmalar谋 tespit eder, yaz谋l谋m a莽谋klar谋n谋 bulur ve RBAC ihlallerini pipeline'lar谋n谋zda g枚sterebilir. Risk puanlar谋n谋 an谋nda hesaplar ve zaman i莽indeki risk e臒ilimlerini g枚sterir. Kubescape, Jenkins, CircleCI, Github i艧 ak谋艧lar谋, Gitlab, Prometheus, Slack dahil olmak 眉zere di臒er DevOps ara莽lar谋yla yerel olarak entegre olur ve EKS, GKE ve AKS gibi 莽oklu bulut K8s da臒谋t谋mlar谋n谋 destekler.

kube-scape

brew install kubescape komutu ile h谋zl谋ca y眉kleyip kubescape scan --submit --enable-host-scan --verbose komutu ile komple cluster taramas谋 yapabilirsiniz. Tarama sonucunu konsola bast谋ktan sonra Kube-Hunter'daki gibi token'l谋 bir URL ile kendi dashboard'una da at谋yor. Orada da a艧a臒谋daki g枚rseldeki gibi g眉zel bir dashboard sizleri bekliyor olacak. Sistemi cluster'lar谋n谋za ba臒lay谋p d眉zenli olarak rapor alma, data tutma gibi enterprise 莽枚z眉mler de sunuyor.

kubescape dashboard

Kube-Score

Son olarak quick-win bir tool olan Kube Score, kubernetes nesne tan谋mlar谋n谋n (deployment.yaml, service.yaml vs.) statik kod analizini ger莽ekle艧tirmek i莽in kullan谋lan bir ara莽t谋r. Daha sonra, 莽谋kt谋 olarak uygulama g眉venli臒inizi geli艧tirmek i莽in neler yap谋labilece臒ine dair bir 枚neri ve tavsiyeler listesi sunar.

Kube Score, sisteme herhangi bir y眉kleme yapmadan nesne tan谋mlar谋n谋 taramak i莽in kolay bir y枚ntem kullan谋r. Hata mesajlar谋n谋 ve risk 莽枚zme talimatlar谋n谋 insan taraf谋ndan okunabilir bir bi莽imde verir ve anla艧谋lmas谋n谋 kolayla艧t谋r谋r, b枚ylece uygulamay谋 daha g眉venilir ve esnek hale getirir.

Kube Score, kolay ve h谋zl谋 analiz i莽in do臒rudan web'den kube-score.com adresinde kullan谋labilir veya Docker, Homebrew, Krew veya Mac, Windows ve Linux i莽in 枚nceden olu艧turulmu艧 binary dosyalar kullan谋larak y眉klenebilir. Bu prati臒i yeni deployment tan谋mlar谋 yaparken atlamaman谋z谋 枚neririm.

kube-score-test

brew install kube-score ile h谋zl谋ca kurup kube-score score deployment.yaml komutu ile statik olarak dosyalar谋n谋z谋 tarayabilirsiniz. Pipeline'lar谋n谋za ba臒lay谋p konfig眉rasyonda zafiyet testi yapabilirsiniz. Test listesini kube-score list ile g枚r眉p atlamak istedi臒iniz testleri --ignore-test flag'i ile veya annotation ge莽erek atlayabilirsiniz.


Bunlara ek olarak a艧a臒谋daki DevSecOps tool'lar谋ndan baz谋lar谋n谋n kullan谋lmas谋, BT altyap谋n谋z (IT infrastructure) i莽in gerekli g眉venlik 枚nlemlerinin uygulanmas谋na ve otomatikle艧tirilmesine yard谋mc谋 olacakt谋r.

Yaz谋y谋 uzatmamak ad谋na bunlar谋n detaylar谋na girmiyorum fakat ihtiya莽 durumunda detaylar谋na ula艧abilmeniz ad谋na linklerini b谋rakt谋m.


Hocam iyi ho艧 g眉zel de; bunlar谋n hepsini mi kullanaca臒谋m, y枚netti臒im cluster'lar i莽in do臒ru k8s g眉venlik taray谋c谋s谋n谋 nas谋l se莽ece臒im?

脰ncelikle Zero-Downtime ve g眉venli da臒谋t谋ma devam etmek i莽in g眉venlik taray谋c谋lar谋 se莽menin nihai amac谋n谋 anlamal谋s谋n谋z. Bir莽ok tool'dan bahsetti臒imizden dolay谋 hangisinin size uygun oldu臒unu belirlemek ve se莽mek i莽in biraz d眉艧眉nmek gerekebilir. K8s g眉venlik a莽谋臒谋 taray谋c谋n谋z谋 se莽erken, 枚ncelikle kullan谋m i莽in kurman谋n/y眉klemenin ne kadar kolay ve h谋zl谋 oldu臒unu d眉艧眉nmelisiniz. Kubeaudit gibi taray谋c谋lar, arac谋 y眉klemek i莽in zahmetsiz tek sat谋rl谋k bir komut sunar. Kube Score gibi web sitesi sa臒layan bir platform, taray谋c谋y谋 local olarak y眉klemeden k8s cluster'谋n谋z谋 taramay谋 kolay ve h谋zl谋 hale getirecektir.

Uygulama ortam谋n谋z谋n genel bir g眉venlik k谋yaslamas谋 ile uyumlu oldu臒undan emin olmak i莽in Kube Bench'i se莽ebilir veya daha da iyisi, kapsaml谋 ve derin bir g眉venlik a莽谋臒谋 taramas谋 i莽in Kube Hunter ile birlikte kullanabilirsiniz.

Cluster'谋n tam olarak sorunlu alan谋n谋 g枚steren basit bir g眉venlik a莽谋臒谋 taray谋c谋s谋na ihtiyac谋n谋z varsa, Kubeaudit sizin i莽in ideal bir ara莽t谋r. Ayr谋ca, ihtiyac谋n谋z olan 艧ey, temel sorunlar谋n ve 莽枚z眉m眉n kapsaml谋 bir ayr谋nt谋s谋ysa, Kube Score, Kube Scape ve Kube Hunter harika se莽eneklerdir.

Sonu莽 olarak, hangi arac谋 se莽erseniz se莽in, kubernetes ortam谋n谋z谋n ihtiyac谋na ba臒l谋d谋r. 陌stedi臒iniz sonucu elde etmek i莽in birka莽 farkl谋 taray谋c谋y谋 birle艧tirebilirsiniz. 艦u an i莽in pek g眉ndemde olan 莽枚z眉mler de臒il fakat siyah 艧apkal谋 arkada艧lar kubernetes'e ilgi duymaya ba艧lad谋臒谋nda herkesin kullanaca臒谋 莽枚z眉mler olabilir. 馃帺 馃檪 DevSecOps kapsam谋nda kullanabilece臒imiz, faydal谋 olabilecek open source tool'lar谋 hakk谋nda olabildi臒ince k谋sa tutarak bilgiler payla艧maya 莽al谋艧t谋m. 陌htiyac谋n谋za g枚re se莽ip, pipeline'lar谋n谋za dahil etmenizi tavsiye ederim.
Unutmay谋n, "hi莽bir sistem g眉venli de臒ildir".馃檪

1 Yorum

  1. Te艧ekk眉rler sedat bey
    陌艧 hayat谋nda ba艧ar谋lar dilerim.

    Cevapla

Yorum Yap谋n