Yazılım projelerinde çoğu zaman öncelik hızlı geliştirme olur. Yeni özellik çıkması, ürün çalışması, kullanıcıya ulaşması istenir. Bu anlaşılır bir durumdur. Fakat bir yazılımın sadece çalışıyor olması yeterli değildir. Güvenli olması, kim tarafından nasıl geliştirildiğinin takip edilebilmesi ve belirli kurallara uygun ilerlemesi de en az ürünün kendisi kadar önemlidir. Bu konu GenAI projelerinde daha da kritik hale gelmektedir. Çünkü bu projelerde sadece kod yazılmamaktadır. Kullanıcı verileri, şirket içi dokümanlar, yapay zekâ modelleri, API anahtarları ve farklı servisler aynı sistemin parçası haline gelmektedir. Küçük gibi görünen bir dikkatsizlik, hem güvenlik hem de compliance açısından ciddi sorunlara yol açabilmektedir. Bu yüzden güvenlik ve compliance konularını projenin sonunda bakılacak bir kontrol listesi gibi değil, geliştirme sürecinin doğal bir parçası olarak görmek gerekir.
Security ve Compliance Ne Demek?
Security, yani güvenlik, sistemin kötüye kullanılmasını önlemek için alınan önlemleri ifade eder. Yetkisiz erişimi engellemek, gizli bilgileri korumak, kullanıcı verilerini güvenli tutmak ve sistemde açık oluşmasını önlemek bu kapsama girer. Compliance ise yapılan işin belirli kurallara, yasalara, şirket politikalarına veya standartlara uygun olmasıdır. Yani sadece güvenli bir sistem kurmak değil, bu güvenliğin nasıl sağlandığını gösterebilmek de önemlidir. Security, “Sistem güvenli mi?” diye sorar. Compliance ise “Bunu kanıtlayabiliyor muyuz?” diye sorar. Örneğin, bir projede kimlerin koda erişebildiği, kimin hangi değişikliği yaptığı, bu değişikliğin kim tarafından onaylandığı ve gizli bilgilerin nasıl korunduğu net değilse, compliance tarafında eksik vardır.
GenAI Projelerinde Risk Neden Artıyor?
Klasik yazılım projelerinde kullanıcı girişleri, veritabanı, sunucular ve API’ler dikkat edilmesi gereken başlıca alanlardır. GenAI projelerinde ise bunlara ek olarak yapay zekâ modeli de devreye girer. Bir kullanıcıdan gelen soru, şirket içi bir doküman ya da sistemden alınan bir bilgi modele gönderilebilir. Bu noktada modele hangi verilerin gittiği, bu veriler içinde kişisel ya da gizli bilgi olup olmadığı, modelin verdiği cevabın doğrudan kullanıcıya gösterilip gösterilemeyeceği ve çıktının otomatik bir işlem başlatıp başlatmadığı önem kazanır. Örneğin, bir geliştiricinin hata çözmek için gerçek bir API anahtarını ya da müşteri bilgisini bir yapay zekâ aracına göndermesi ciddi bir risktir. Modele gönderilen veri kontrol edilmeli, modelden gelen cevap da doğrudan doğru kabul edilmemelidir. Yapay zekâ güçlü bir yardımcı olabilir; fakat kontrolsüz bırakıldığında riskli kararlar da üretebilir.
GitHub Sadece Kod Saklama Yeri Değildir
GitHub çoğu ekip için kodların tutulduğu bir platformdur. Ancak doğru kullanıldığında bundan çok daha fazlasıdır. GitHub, projenin güvenli ilerlemesini sağlayan en önemli kontrol noktalarından biridir. Kod değişiklikleri GitHub üzerinde yapılır, pull requestler burada açılır, incelemeler burada gerçekleşir, testler burada çalışır ve bazen canlı ortama çıkış süreci de buradan yönetilir. Bu nedenle GitHub kullanımında bazı soruların cevabı net olmalıdır: Ana koda kim değişiklik yapabiliyor? Değişiklikler başka biri tarafından inceleniyor mu? Gizli bilgiler yanlışlıkla repository’ye yüklenebilir mi? Canlı ortama çıkış kontrollü mü yapılıyor? Yapılan değişikliklerin geçmişi takip edilebiliyor mu? Bu soruların cevabı net değilse, proje hem güvenlik hem de compliance açısından zayıf kalır.
Ana Branch Mutlaka Korunmalı
Bir projede genellikle en güncel ve kritik kod main branch üzerinde tutulur. Bu nedenle bu branch’e herkesin doğrudan kod gönderebilmesi risklidir. Hatalı bir değişiklik, güvenlik açığı ya da eksik test edilmiş bir özellik doğrudan ana koda karışabilir. Bunun önüne geçmek için ana branch korunmalıdır. Her değişiklik pull request üzerinden yapılmalı, en az bir kişi tarafından incelenmeli ve gerekli kontroller geçmeden birleştirilmemelidir. Bu yaklaşım sadece hataları azaltmaz. Aynı zamanda ileride bir sorun olduğunda “bu değişiklik ne zaman yapıldı, kim onayladı, hangi amaçla eklendi?” sorularına cevap vermeyi de kolaylaştırır.
Pull Request Gerçekten İncelenmeli
Pull request açmak tek başına yeterli değildir. Önemli olan, bu sürecin gerçekten anlamlı şekilde işletilmesidir. İyi bir pull request, yapılan değişikliğin ne işe yaradığını, hangi problemi çözdüğünü ve güvenlik açısından bir etkisi olup olmadığını açıkça anlatmalıdır. Özellikle GenAI projelerinde birkaç ekstra soruyu sormak faydalı olur: Bu değişiklik modele yeni bir veri gönderiyor mu? Kullanıcı verisi işleniyor mu? Gizli bilgi loglara düşebilir mi? Model çıktısı otomatik bir işlem başlatıyor mu? Prompt veya model davranışı değişiyor mu? Bu sorular çok karmaşık görünmeyebilir, ama birçok riski daha en başta fark etmeyi sağlar.
Gizli Bilgiler Koda Yazılmamalı
Yazılım projelerinde en sık yapılan hatalardan biri API anahtarı, şifre, token veya veritabanı bağlantı bilgilerinin yanlışlıkla koda eklenmesidir. Bu bilgiler repository’ye yüklendiğinde, proje private olsa bile risk oluşur. Çünkü bu bilgilere erişimi olan herkes onları görebilir. Ayrıca Git geçmişine giren bir bilgiyi sonradan silmek her zaman yeterli olmaz. Kod GitHub’da durur, gizli bilgiler kodun içinde durmaz. Gerçek anahtarlar ve şifreler güvenli secret yönetim sistemlerinde saklanmalıdır. GitHub’a örnek dosya koymak gerekiyorsa, gerçek değerler yerine sahte değerler kullanılmalıdır. “OPENAI_API_KEY=your-api-key-here” “DATABASE_PASSWORD=your-password-here” Bu küçük alışkanlık, ileride yaşanabilecek büyük güvenlik problemlerinin önüne geçebilir.
GenAI Projelerinde Veri Daha Dikkatli Yönetilmeli
GenAI projelerinde verinin nereye gittiği çok önemlidir. Çünkü modele gönderilen bilgi bazen kullanıcı verisi, bazen şirket içi doküman, bazen de hassas bir iş bilgisi olabilir. Bu yüzden projede hangi verilerin kullanılabileceği önceden belirlenmelidir. Herkese açık bilgiler ile kişisel veya gizli bilgiler aynı şekilde ele alınmamalıdır. Örneğin, ürün dokümanları modele gönderilebilirken, müşteri bilgileri, sözleşmeler, finansal veriler veya erişim anahtarları çok daha sıkı kurallarla korunmalıdır. Modele gönderilen her veri, güvenlik kapsamına girer.
Otomasyonlar Kontrolsüz Bırakılmamalı
GitHub Actions gibi araçlar geliştirme sürecini hızlandırır. Testleri çalıştırabilir, kodu analiz edebilir veya uygulamayı canlı ortama taşıyabilir. Ancak bu araçlar yanlış yapılandırılırsa risk oluşturabilir. Bir otomasyona gereğinden fazla yetki verilirse, küçük bir hata daha büyük bir güvenlik problemine dönüşebilir. Bu nedenle otomasyonlar sadece ihtiyaç duydukları yetkilere sahip olmalıdır. Canlı ortama çıkışlarda onay mekanizması kullanmak, kullanılan üçüncü parti araçları dikkatli seçmek ve gizli bilgileri otomasyon dosyalarının içine yazmamak önemlidir. Kısacası, otomasyon faydalıdır, ancak kontrolsüz otomasyon risklidir.
Bağımlılıklar da Risk Oluşturabilir
Modern yazılım projelerinde birçok hazır kütüphane ve açık kaynak paket kullanıyoruz. Bu geliştirme sürecini hızlandırır, fakat her eklenen paket projeye yeni bir bağımlılık ve potansiyel risk getirir. Bu nedenle projeye eklenen paketlerin güncel, güvenilir ve gerçekten gerekli olup olmadığı kontrol edilmelidir. Bilinen güvenlik açığı bulunan paketler takip edilmeli ve düzenli olarak güncellenmelidir. Bu konu bazen küçük bir teknik detay gibi görülür, ancak birçok güvenlik problemi ihmal edilen bağımlılıklardan kaynaklanır.
Dokümantasyon İşi Zorlaştırmaz, Kolaylaştırır
Compliance denince akla çoğu zaman uzun ve sıkıcı dokümanlar gelir. Aslında iyi dokümantasyonun amacı ekibi yavaşlatmak değildir. Tam tersine, işlerin kişilere bağlı kalmadan yürütülmesini sağlar. Bir projede en azından şu konular net yazılı olmalıdır: Kimler repository’ye erişebilir? Kod değişiklikleri nasıl onaylanır? Gizli bilgiler nerede saklanır? Hangi veriler yapay zekâ sistemine gönderilebilir? Canlıya çıkış süreci nasıl işler? Bir güvenlik olayı yaşanırsa kim ne yapar? Bu dokümanların çok uzun olması gerekmez. Önemli olan güncel, anlaşılır ve uygulanabilir olmalarıdır.
Sonuç
GenAI ve modern yazılım projelerinde güvenlik ve compliance artık sonradan düşünülecek konular değildir. Projenin en başından itibaren sürecin içine dahil edilmeleri gerekir. GitHub bu noktada sadece kod saklanan bir yer değil, güvenli geliştirme sürecinin önemli bir parçası olarak görülmelidir. Branch koruması, pull request incelemeleri, gizli bilgi yönetimi, bağımlılık kontrolleri ve kontrollü otomasyonlar bu sürecin temel taşlarıdır. GenAI projelerinde ise bunlara ek olarak verinin nasıl kullanıldığı, modele ne gönderildiği ve model çıktısının nasıl değerlendirildiği ayrıca önem kazanır. Sonuç olarak, iyi bir yazılım projesi sadece çalışan bir proje değildir. İyi bir yazılım projesi; güvenli geliştirilen, değişiklikleri takip edilebilen, veriyi dikkatli kullanan ve gerektiğinde kurallara uygunluğu gösterilebilen projedir.
Yazımıza Medium üzerinden de ulaşabilirsiniz.
Yazar: Ömer Faruk Keklik, AI Engineer
Fikirlerini paylaş, destek al.
Aşağıdaki iletişim bilgilerinden bize ulaşabilir ve iletişim formumuzu doldurabilirsiniz.
Seba Office Boulevard / İstanbul
Ayazağa Mah. Mimar Sinan Sok. A,
No: 21A İç Kapı No:1 Sarıyer, İstanbul
Levent Office / İstanbul
Yeşilce Mh. Göktürk Cad. Çeşni Sok. No:4 Kat:2 Kağıthane
P: 444 0 885
Ankara
Beştepe, Dumlupınar Blv. No: 10B Yenimahalle / Ankara
P: +90 312 419 43 43
Yardım
Email:
info@treomind.com