Container Security with Anchore
Anchore Engine ile container güvenliği.
Open source bir tool olan anchore ile nasıl daha güvenli containerlar yapabiliriz bu yazımda bunu anlatacağım. Burada amaç kullandığımız hazır imagelerde yada kendi yaptığımız imagelerdeki güvenlik açıklarını bulmak.

Anchore-Engine den bahsedersek kolay bir kurulumla anchore engine e eklediğiniz imagelerin zafiyet taramasını yaparak size sonuçları kritikliğine göre sıralayarak CVE koduyla (Common Vulnerabilities and Exposures) birlikte liste halinde verir.
Anchore-Engine i manuel bir şekilde de image yükle -> tara şeklinde kullanabileceğiniz gibi jenkins e entegre ederek daha güvenli bir CI/CD pipeline oluşturmanızı sağlar.

Burada anchore-engine yükleme ve image taratma kısmını göstereceğim bir başka bir yazımda jenkins entegrasyonu yapıp bir pipeline çalıştıracağız.
Anchore-Engine i docker-compose file ile yükleyebilceğiniz gibi kubernetes/openshift platformlarına da helm aracılığı ile yükleyebilirsiniz bu yazımda docker-compose ile kuracağız openshift için ayrı bir yazı yazacağım.
Anchore installation with Docker-Compose
https://docs.docker.com/compose/install/
https://docs.docker.com/engine/install/
öncelikle anchore-engine için bir dizin yaratıp docker-compose file i içine atalım.
mkdir ~/aevolume
cd aevolume
curl -O https://engine.anchore.io/docs/quickstart/docker-compose.yaml

docker-compose yaml dosyamızın olduğu yerde sırasıyla pull ve up yaparak containerları ayağa kaldırıyoruz.
#docker-compose pull
#docker-compose up -d

containerlarımızın durumuna bakıp çalıştıklarını göreceğiz.

iki tür anchore-cli kullanabiliriz. client yükleyerek yada container içine girip orada da işlem yapabiliriz.
anchore-engine api sinin içine girip anchore-cli ile sistem durumuna bakabiliriz. ama ben anchore-cli ile apiye direk istek atmayı da göstereceğim.
# docker-compose exec api anchore-cli system status

anchore-cli ı işletim sisteminize göre buradan yükleyebilirsiniz.
https://docs.anchore.com/current/docs/installation/anchore_cli/
anchore-cli yükledikten sonra 3 tane variable girmemiz gerekiyor. bunları export edip yada bash_profile ınıza ekleyip declare ederek uzun zamanlı kullanabilirsiniz.
eğer default makinenize kurduysanız direk aşağıdaki variablelar ile anchore-cli kullanabilirsiniz. farklı bir makinedeyseniz localhost yerine ipsini girebilirsiniz.
export ANCHORE_CLI_URL=http://localhost:8228/v1
export ANCHORE_CLI_USER=admin
export ANCHORE_CLI_PASS=foobar

şimdi image ekleyerek vulnerability datasını alacağız.
PS: anchore ilk kullanım için “anchore-cli system feeds list” diyerek mevcut vulnerability referanslarının olduğunu kontrol ediniz eğer liste komple pending durumda ise, “anchore-cli system feeds sync” komutu ile sync hale getirmeniz gerekiyor bu işlem biraz uzun sürebilir.
feeds list imiz olması gerektiği gibi olduktan sonra. image i ekleyebiliriz.
bilinen bir image ile başlayalım ( imageleri default olarak docker.io da search etmektedir)
“ anchore-cli image add ‘image tag’ “

“anchore-cli image list” komutu ile tarama durumunu görebiliriz. analyzed olana kadar bir süre geçecektir daha


analyzed olduktan sonra “anchore-cli image vuln ‘image tag’ all“ ile tüm açıklara bakabiliriz. isterseniz os veya non-os diyerek de ayırabilirsiniz.

gördüğünüz gibi High bir zafiyet görünmemektedir. zaten liste başı imagelerinden olan nginxden de bu beklenirdi. bir tane daha sık kullanılan image deneyelim bakalım high bulabilcek miyiz.

bu imagede yakalayabildik.

vulnerability id den kodunu aratabilceğiniz gibi vulnerability url den de zafiyet ile ilgili resmi açıklamayı ve nasıl kapatacağınızı bulabilirsiniz.
private bir repoda çalışmak istiyorsanız öncelikle registry eklemeniz gerekiyor.
anchore-cli registry add REGISTRY USERNAME PASSWORD
bu komutla registry ekledikten sonra private repodaki imageleri de scan edebilirsiniz.
bir sonraki yazıda görüşmek üzere, hepinize sağlıklı günler diliyorum.
h.a.s.
ref: