.NET Core Proje Azure’da Linux Docker Container’ında Nasıl Yayınlanır?


Merhaba sevgili takipçilerim,

Uzun zamandır üzerinde çalıştığım bir .NET Core projeyi Azure’da yayınlamak istedim. Fırsat bu fırsat, projeyi Linux Docker containerı olarak yayınlamayı deneyeyim dedim.

Öncelikle şunları söylemeliyim:

  1. Projenizi Azure’da yayınlamak için Visual Studio’nun Publish seçeneklerini kullandığınızda standart planı seçerseniz ve eğer Azure SQL de kullanıyorsanız ayda 3000 TL’den yüksek faturalar çıkabileceğini dikkate alarak yayın öncesi Azure Portal’dan kullanacağınız servislerini kurmanızı tavsiye ederim. Böylece ekonomik ücretli hizmetleri seçebiliyorsunuz, çünkü Azure portal tüm seçenekleri size sağlıyor.
  2. Aynı şekilde projenize Docker özelliği eklediğinizde bunu yine Visual Studio ile Azure’a yayınlamak masraflı olacağı bunu tercih etmediğimi belirtmeliyim.

Diyelim ki katmanlı-mimari ile bir proje hazırladınız. Bunu Linux Docker container’ını kullanarak nasıl yayınlarsınız? Daha da ötesi bu işi nasıl ekonomik halledebiliriz? İşte bu makalemde size bunu anlatacağım.

  1. Katmanlı-mimari ile hazırladığınız projenin Api katmanına Docker özelliği eklemesiniz. (Api katmanınız yoksa UI katmanına da bu işlemi uygulayabilirsiniz) Bu işlemi Visual Studio’dan Api projesine sağ tıklayarak yapabiliyoruz.
  2. Yalnız oluşan Dockerfile Api projesinin altında oluşuyor. Bundan dolayı Docker Hub bu dosyayı bulamıyor. Bu nedenle Dockerfile’ı çözümünüzün kök dizinine taşıyınız.
  3. Tüm çözümü GitHub’a gönderiniz.
  4. Docker Hub’ta bir hesap oluşturunuz. Neden Docker Hub? Docker container’ını saklamak ve oradan çekmek için bir container repository kullanmamız gerekiyor. Azure’dakiler ücretli olduğu için Docker Hub’ı tercih ettim.
  5. Docker Hub ile GitHub’ı birbirine bağladığınızda, GitHub’taki repository’inizi Docker Hub’a çekebiliyorsunuz, hatta GitHub’a her commit gönderdiğinizde Docker Hub GitHub’tan projenizi çekip otomatik build edebiliyor.
  6. Docker Hub’daki derlenmiş docker container’ını Azure App Service’ine alıyoruz. Bu aşamada F1 (60 dakika ücretsiz) planı tercih edebilirsiniz. Azure SQL gerekliyse ayda 4$ olan temel planı tercih edebilirsiniz. Elbette Azure SQL işlemlerini çok daha önceden ayarlamış, projedeki connection stringi belirtmiş ve test etmiş olmanız gerekiyor. Azure App Servis’i Docker Hub’taki container’ınızı çekerek yapılandırdığınızda projenizin build’i artık Azure’da yayında demektir.

Mutlu kodlamalar 🙂

.NET Core 3.0 ile NextERP ve KVKK


Merhabalar,

Önceki makalemin devamı olan bu yazımda KVKK uyumlu yazılım geliştirmek için faydalı olabilecek analizlerimi paylaşıyor olacağım. Sonraki zamanda örnek bir implementasyon yayınlama imkanım olacak. Hali hazırda .NET Core 3.0’da katmanlı mimari ile Angular proje geliştirerek araştırmalarımı yapmaktayım.

Neden .NET Core 3.0?

.NET Core 3.0 IdentityServer4 apilerini içeren ve Angular/Ionic’le kolaylıkla entegre edebileceğiniz güvenli ve hazır bir üyelik sistemi ile geliyor. Bu üyelik sistemi bildiğim kadarıyla sadece SQL Server üzerinde çalıştığı için kullanıcılarımızın kişisel verilerini depolamak amacıyla SQL Server’ı kullanacağız.

KVKK ve Üyelik Sistemi

SQL Server’da MDF ve LOG dosyalarındaki verilerin herhangi bir çalınma durumunda kullanılamaması için TDE ile şifrelemenizi öneriyorum. Veri sorumlusu bu veritabanındaki verilere doğrudan veya uygulama üzerinden sadece süper adminlerin erişebildiğinden emin olmalıdır. Ayrıca veri hırsızlığını önleme ve/veya belirleme amacıyla bu veritabanındaki verilere erişimlerin loglanması gerekiyor.

GDPR Blockchain Logging

Gerek SQL Server’daki üyelik bilgilerinin gerek MongoDB’deki kişisel verilere yapılan erişimlerin (okumalar dahil) loglanması için append-only bir teknoloji olan Blockchain’den yararlanmak mantıklı olabilir.

MongoDB’de bir koleksiyonu blockchain ile audit logları kaydetmek için kullanabilirsiniz. Böylece logların değiştirilmediğinden emin olabilirsiniz. Tabi loglarda da kişisel veriler olacağı için log koleksiyonuna da sadece süper adminlerin erişebildiğinden hatta bu erişimlerinde de loglandığından emin olmalısınız.

MongoDB’de de genel bir şifreleme yapmanızı ve kritik koleksiyonlara sadece süper adminlerin erişmesine izin vermenizi öneririm.

MondoDB’deki kayıtlarda üyelik sistemindeki üyelerin mail adresleri yerine Guid bilgilerini kaydetmek daha güvenli olacaktır.

GDPR blockchain logging implementasyonu yerine basit bir çözüm olarak log koleksiyonunu update, delete ve truncate işlemlerine kapatmak da tercih edilebilir.

GDPR ve Yedekleme Güvenliği

MongoDB ve SQL Server yedeklerinizin güvenli bir hat üzerinden güvenli bir storage’ta depolandığından emin olmalısınız ve yedeklere sadece veri sorumlusunun belirleyeceği süper adminlerin erişebildiğinden emin olmanızı tavsiye ederim.

Kişisel Verilerin Yönetimi

Kullanıcılarınıza kişisel verilerine erişimlerin loglarını göstermeniz, onların kendilerini güvende hissetmesini sağlayabilir. .NET Core’daki hazır üyelik sistemi kişisel verilerin indirilmesi ve silinmesi gibi seçenekler sağlıyor. Ayrıca Microsoft Authenticator mobil uygulaması ile oturum açma ve 2-Faktörlü kimlik doğrulaması gibi ek güvenlik özellikleri içeriyor. Yetkilendirme ve izin sistemi de bulunuyor. Bu üyelik sistemini biraz modifiye ederek Audit Logging eklemek ve kullanıcıların ne zaman, hangi konumdan, hangi cihazdan oturum açtığını da loglamak iyi olacaktır.

Devam edecek…