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 duplications 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