Mikroservisler nedir?
Kısaca, mikro hizmetler, uygulamanın entegre hizmetlerden oluştuğu yazılım uygulamaları geliştirmeye yönelik süreçlerdir. Her mikro hizmet dağıtılabilir ve benzersiz bir süreç çalıştırır. İş hedeflerine hizmet etmek için iyi tanımlanmış bir mekanizma aracılığıyla bağlanırlar. Bir mikro hizmet, veri arama, günlük kaydı işlevi veya web hizmeti işlevi gibi tek bir sorunu gidermeye çalışır. Dolayısıyla, böyle bir yaklaşım esnekliği belirli şekillerde artırır. Örneğin, tek bir işlevin kodunu özgürce güncellemeye ve mikro hizmet mimarisinin geri kalanını yeniden dağıtmaya yardımcı olur.
Tipik mikro hizmet mimarisi, istemcileri, kimlik sağlayıcı ağ geçidini, mesajlaşma biçimlerini, veritabanını, statik içeriği, hizmet yönetimini ve keşfi içerir.
Mikro hizmetleri korumak için aşağıdaki yöntemler ve araçlar kullanılır:
• Çoğu mikro hizmet dahili bir API'yi destekler ve harici aracılar tarafından görülmez. Birisinin API'yi (geliştiricilerin web uygulamalarıyla etkileşim kurmak için kullanabileceği bir çerçeve olan) kırmaya çalıştığını varsayalım. Bu durumda, HTTP'ye yalnızca sınırlı erişim elde edebileceklerdir.
• Etki alanı sınırları, rol tabanlı kimlik doğrulama kullanılarak korunur. Güvenlik, veritabanı katmanından uygulama API'sine kadar başlar ve kimlerin erişebileceği, konuşlandırılabileceği ve ölçeklenebileceği konusunda kesin roller üstlenir.
• Cloud Foundry ve Kubernetes gibi açık kaynaklı bulut platformlarını kullanan belirteçler, sertifikalar ve ağlar gibi API mimarisinde erişim kontrolü için standart bir protokol sağlanması.
• Eski güvenli yuva katmanı (SSL) protokolü ve yeni sürümü TLS (taşıma katmanı güvenliği), bilgisayar ağlarında iletişimin güvenliğini sağlayan kriptojenik protokollerdir. API ağ geçidi anahtarları, uygulama geliştiricilerinin API'ye erişmesine izin verir. Aynı şekilde, IP beyaz listeye alma, yalnızca güvenilir bir kullanıcının güvenilir IP adresleri listesine erişmesine veya bir liste oluşturmasına izin veren başka bir güvenlik özelliğidir. API ağ geçitleri, mikro hizmetlerin güvenliğini sağlamak için yaygın olarak kullanılan bir çözümdür.
• Düzenli güvenlik taramaları sızıntıyı ortadan kaldırmaya yardımcı olur. Ayrıca geliştiriciler ve mimarlarla birlikte tasarım yaparken güvenliği en baştan düşünmeniz gerekir. API ağ geçidi ve yerinde güvenlik çerçeveleri ile tek bir giriş noktası en iyi seçenektir.
• Uygulama güvenliğine ek olarak API güvenliği de aynı derecede önemlidir. Bu, tanımlamanın kritik hale geldiği ve sisteme dahil olma ve erişim yetkilendirmesi gibi farklı seviyelerin entegre edilmesi ihtiyacının zorunlu hale geldiği yerdir.
• API'ler, mikro hizmetlerin mimarisini yönetir. Geliştiriciler, bunları mikro hizmetlerin neler yapabileceği ve yapamayacağı konusunda sözleşmeler olarak kullanır. Bu nedenle, SLA'ları (hizmet düzeyi sözleşmesi) API ağ geçitleri aracılığıyla yönetildiğinden, merkezi IT departmanlarının mikro hizmetleri yönetmesi ve düzenlemesi daha kolaydır. API ağ geçitleri, mikro hizmetler için proxy görevi gördüğünden, IT yönetişimi ile etki alanı çevikliği arasında doğru dengeyi sağlar.
• Mikro hizmetler kullanıyorsanız, SELinux (Güvenlik-Geliştirilmiş Linux) bir zorunluluktur. Yöneticilerin sisteme kimlerin erişebileceğini daha iyi kontrol etmelerini sağlayan Linux sistemleri için bir güvenlik mimarisidir. Ayrıca programın sistem üzerinde alakasız bir şey çalıştırmasını da engeller. Bu, saldırganın şeytani konteyneri kullanma yeteneğini daraltır ve onu çaresiz hale getirir. SELinux'un nasıl kullanılacağını bilmek hayati önem taşır çünkü herhangi bir üretim iş yükü kapsayıcısının ve ona bağlı kapsayıcıların düzenli olarak kontrol edilmesi ve güncellenmesi gerekir.
• SSO (Tek oturum açma) kimlik doğrulama şeması, bir kullanıcının mikro hizmetle ilgili birden çok uygulama için tek bir kimlik ve parola ile oturum açmasına olanak tanır. Birçok geliştirici, veri sunma gibi birden çok hizmetle ve HTML sunma gibi web uygulamalarıyla projeler geliştirirken, mikro hizmetleri iyi bir seçenek ve ideal bir çözüm olarak görür. SSO'yu uygulamak için çeşitli yaklaşımlar vardır. Tüm uygulamalara ve çeşitli hizmetlere erişmek için yalnızca bir kez kimlik doğrulaması yapabilirsiniz. Aşağıdaki gibi iki yaklaşım vardır:
1. Kimlik hizmetinin ve uygulamanın eklenmesi, korunan kaynaklara sahip herhangi bir hizmetin kimlik bilgilerinin geçerli olduğundan emin olmak için Kimlik hizmetiyle iletişim kurmasını sağlar. Değilse, kullanıcıyı kimlik doğrulaması için yönlendirecektir.
2. Openıd'yi uygulayın ve her hizmetin kendi kimlik bilgileriyle çalışmasını sağlayın. Bu, kullanıcının hizmete veya uygulamaya ayrı ayrı giriş yapması gerektiği anlamına gelir. Bununla birlikte, bundan sonra sadece SSO kalacaktır.
Sorun şu ki geliştiricilerin iş uygulamalarını modernize etmeye çok fazla odaklanmaları ve bu nedenle mevcut sisteme uyan bir güvenlik modeline sahip olmaya çalışmalarıdır. Bu yanlış bir yaklaşımdır, çünkü mevcut herhangi bir güvenlik açığı fark edilmeyecektir. Çift koruma veya şifrelemenin başka bir yolu, bir kullanıcı uygulaması ile başka bir uygulama arasında SSO için bir JWT (JSON web token) tekniği kullanmak olabilir.
• Statik uygulama güvenliği testini gömülü bir işleme entegre etmek, mikro servisler için daha iyi çalışır. Bu, mevcut güvenlik sürecini iyileştirir ve aynı zamanda uygulama dağıtıldıktan sonra riskleri net bir şekilde tanımlamanıza yardımcı olur.
• Güvenlik teknolojisinin etkinliği, mikro hizmetin dağıtıldığı ortama ve araçlara bağlıdır. Başka bir yol da tam disk şifrelemesi, yetkilendirme ve otomasyonun sağlanmasıdır. Hem mimari hem de şifreleme, denetim açısından güvenlik gereksinimlerini karşıladığında güvenlik daha da artar. Güvenlik sürecinin belgelenmesi, denetlenmesi ve belgelendirilmesi, her şeyin PC, ISO ve diğer uyumluluk gereksinimleri için kilitlendiğinden emin olmalıdır.
Çözüm
Mikro hizmetleri güvence altına almak, mimarlar, mühendisler ve bilgi güvenliği ile koordineli çalışmak anlamına gelir. Saldırıları öngören kalıpları ve kanıtları vurgulayan raporlar için düzenli kod incelemeleri ve statik analiz gereklidir. Mikro hizmetleri daha küçük ekip sorumluluklarıyla yönetirken, uygun rol tabanlı erişim kontrolleriyle teslimata yönelik bir tedarik zinciri yaklaşımı da uygulanabilir.