GitLab ve Güvenlik
Şirketlere yapılan siber saldırı gün geçtikçe daha çok artıyor, veriler çalınıyor. Hırsızlık yapan kişi veya kişiler, bunu kötü niyetleri doğrultusunda kullanmak istiyor. GitLab, kullanıcılarına daha güvenli bir ortam sağlamak için her gün kendini bu konuda geliştiriyor.
GitLab güvenlik alanında bize sağladığı artıları iki madde altında anlatacağım. Birincisi GitLab kullanıcısı olarak, ikincisi DevSecOps alanında bize sağladığı destekler.
GitLab kullanıcısı olarak güvenlik
Çok Faktörlü Kimlik Doğrulama (MFA): MFA ile kullanıcıların, GitLab’a girişi iki aşamalıdır. Böylece kötü niyetli kişilerin giriş işlemleri için hem parola hem de daha önceden seçilen erişim girişini bilmek zorundadır. GitLab bu yöntemi şiddetle öneriyor.
Yazılım Güncellemeleri: Eğer GitLab’ı self-managed olarak kullanıyorsanız, her zaman en son sürümünü kullanmanız tavsiye edilir. Güvenlik önelemlerine dair erkenden haberdar olmak için bildirimleri açın ve abone olun.
Proje Bazında: GitLab’ın güvenli yapılandırma önerilerine ve mimarilere uymalısınız. Projenin görünürlüğünü ve kullanıcıların giriş kontrolleri uygulamanıza göre ayarlayabilirsiniz. GitLab’ınızda olmayan bir kullanıcının belirlediğiniz projeye ve yetkilere sahip olmasını sağlayabilirsiniz.
SSH ve HTTPS kullanarak reponuzdaki dosyalara sadece yetkilendirilmiş kullanıcılara erişim sağlayabilirsiniz. IDE yardımıyla hızlı değişiklikler yapabilir, yerelinize repoyu almadan güvenle kodunuzu düzeltebilirsiniz.
Audit Log: GitLab kullanıcılarının eylemlerine ilişkin, audit log özelliğini kullanarak çeşitli raporlar oluşturabilirsiniz. Hangi kullanıcı hangi işlemi yapmış bunları size tarihleriyle gösterebilir.
Runners: Runnerlar kodunuzun işlenmesini ve analizlerini sizin belirlediğiniz alanda çalışarak, GitLab sunucularının dışına gitmemesini sağlar.
DevOps alanında güvenlik
Yazılım geliştirme süreçlerinde güvenlik, gün geçtikçe daha önemli hale geliyor. GitLab, güvenliği yazılım geliştirme döngüsünün her aşamasına entegre ederek DevSecOps yaklaşımını benimser. Güvenlik açıklarının erken tespit edilmesine ve daha az maliyetle düzeltilmesini olanak sağlar. Geliştirici, güvenlik, operasyon yazılımcılarının arasındaki işbirliğini güçlendirir.
GitLab pek çok alanda güçlü ve efektif olmasının nedenlerinden biri tek elden yönetim sağlamasındandır. GitLab kullanmadan DevSecOps süreçlerini sağlamak için dışarıdan pek çok aracı yönetmeniz ve bunun güvenliğini sağlamanız gerekiyor. GitLab, müşterilerine hazırladığı template.yaml’lar sayesinde birkaç kod yazarak entegre etmenizi sağlar.
Dünyanın en güvenilir hacker destekli güvenlik şirketlerinden HackerOne, GitLab’ın müşterilerinden birisi. Yaptığı açıklamalara göre, güvenlik alanında GitLab’dan çok destek aldıklarını, GitLab teknolojilerinin pipeline süresini 7.5 kat hızlandırdığını, deployment hızını 5 kat ve bir geliştiricinin haftalık mesaisini 4 saat kısalttığını ifade ediyor. Daha fazla bilgi ve detaya ulaşmak için https://about.gitlab.com/customers/hackerone/ adresini ziyaret edebilirsiniz.
GitLab’ın CI/CD sürecinde güvenlik alanında sunduğu destekler:
Statik Uygulama Güvenlik Testi (SAST): GitLab, kaynak kodunu detaylı bir şekilde analiz ederek, güvenlik açıklarını erken aşamada tespit eder. Bu, geliştiricilere, kodu build etmeden önce güvenlik açıklarını düzeltme fırsatı verir.
Secret Detection: GitLab, kodlar içinde hassas bilgiler (parolalar ve API anahtarlar) olup olmadığını bulur. Bu, hassas bilgilerin korunmasını sağlar.
Bağımlılık Taraması: Projelerin bağımlılıklarını analiz ederek, bilinen güvenlik açıklarını belirler ve bunları düzeltmek için rehberlik sunar. Eğer başka bir araç olan Jenkins kullanmanız gerekseydi, her proje için gerekleri neyse ona göre düzenleme yapmalı ve CI/CD’ye entegre etmeliydiniz. Yukarıdaki bahsettiğim üç güvenlik önlemini almak için başka bir DevSecOps aracı olan Sonarqube kullansaydınız, önce Sonarqube’u sunucularınıza kurmalıydınız ve CI/CD sürecine entegre etmeliydiniz!
Konteyner Taraması: Konteyner teknolojisine hızlı bir geçiş başladı. GitLab konteyner görüntülerini tarayarak güvenlik açıklarını tespit eder ve bunları düzeltmek için önerilerde bulunur. Genel olarak iki yöntemi vardır. İlki ayakta olan containerların güvenlik açıklarını tarama, diğeri ise imajların saklandığı docker.hub, ecr gibi registrylerinin güvenlik açıklarını yakalamak. Bu güvenlik açıklarını anlamak için Qualys gibi araçları kullanamanız gerekmektedir. Bu durumda yine üçüncü bir uygulama ile iletişim halinde olacaktınız. GitLab’ın bir artısı ise kendi registry’sinin bulunmasıdır. Bu durum güvenlik zaafiyeti ortaya çıkarmaz ve image pull işlemleri daha hızlıdır.
İmaj Taraması: İmajlardaki güvenlik açıklarını ve yapılandırma hatalarını otomatik olarak tespit etmek için kullanılan bir süreçtir. GitLab olmadan kullanılırsa Trivy aracını kullanmanız gerekmekteydi, slave sunucunuza trivy aracını kurmanız ve CI/CD’de bu işlemleri tanıtmalıydınız.
IaC Taraması: GitLab, Terraform gibi araçların altyapıyı kod olarak oluşturduğunuz dosyaları analizi eder. Bu, altyapı güvenlik açıklarının önlenmesine yardımcı olur ve güvenli bir deploy ortamı sağlar.
Dinamik Uygulama Güvenlik Testi (DAST): Çalışan uygulamalar üstünde çalışır. Uygulamaların gerçek senaryolarda nasıl performans göstereceği hakkında bilgiler sunar.
API Güvenliği: API’ler, güvenlik açıklarına karşı detaylı bir şekilde test edilir.
GitLab’ın CI/CD sistemi, kod güncellendiğinde veya belirlenen zamanlarda güvenlik kontrollerini otomatik yapar. Bu durum, yazılım geliştirme sürecini hızlandırırken güvenliği de sağlar. Yukarıda hem uygulama hem de kod güvenliklerinde bahsettim. Şimdi GitLab’ın bize verdiği kolaylıkları göstermek için aşağıya bir ekran görüntüsü bırakıyorum. GitLab’ın hazırladığı template.yaml’larla cicd.yaml içine birkaç satır kod yazarak uygulamanın güvenliğini güçlendirmiş olacak ve pek çok aracı kullanmadan, kodlarınızı paylaşmadan runner içinde güvenlik kontrollerini sağlamış olacaksınız.