Aracılığıyla paylaş


Azure'da güvenli uygulamalar tasarlama

Bu makalede, bulut için uygulama tasarlarken göz önünde bulundurmanız gereken güvenlik etkinliklerini ve denetimlerini sunuyoruz. Microsoft Güvenlik Geliştirme Yaşam Döngüsü'nin (SDL) gereksinimleri ve tasarım aşamaları sırasında dikkate alınacak güvenlik soruları ve kavramlarıyla birlikte eğitim kaynakları ele alınmaktadır. Amaç, daha güvenli bir uygulama tasarlamak için kullanabileceğiniz etkinlikleri ve Azure hizmetlerini tanımlamanıza yardımcı olmaktır.

Bu makalede aşağıdaki SDL aşamaları ele alınmıştır:

  • Eğitim
  • Gereksinimler
  • Tasarlama

Eğitim

Bulut uygulamanızı geliştirmeye başlamadan önce Azure'da güvenlik ve gizliliği anlamak için zaman ayırın. Bu adımı atarak uygulamanızdaki güvenlik açıklarının sayısını ve önem derecesini azaltabilirsiniz. Sürekli değişen tehdit ortamına uygun şekilde tepki vermek için daha hazırlıklı olacaksınız.

Geliştiricilerin kullanımına sunulan Azure hizmetlerini ve Azure'daki en iyi güvenlik uygulamalarını öğrenmek için eğitim aşamasında aşağıdaki kaynakları kullanın:

  • Geliştiricinin Azure kılavuzu, Azure'ı kullanmaya başlamayı gösterir. Kılavuzda uygulamalarınızı çalıştırmak, verilerinizi depolamak, zekayı birleştirmek, IoT uygulamaları oluşturmak ve çözümlerinizi daha verimli ve güvenli bir şekilde dağıtmak için kullanabileceğiniz hizmetler gösterilir.

  • Azure geliştiricilerine yönelik başlangıç kılavuzu, geliştirme gereksinimleri için Azure platformunu kullanmaya başlamak isteyen geliştiriciler için temel bilgiler sağlar.

  • SDK'lar ve araçlar , Azure'da kullanılabilen araçları açıklar.

  • Azure DevOps Services , geliştirme işbirliği araçları sağlar. Araçlar yüksek performanslı işlem hatlarını, ücretsiz Git depolarını, yapılandırılabilir Kanban panolarını ve kapsamlı otomatik ve bulut tabanlı yük testlerini içerir. DevOps Kaynak Merkezi, DevOps uygulamalarını, Git sürüm denetimini, çevik yöntemleri, Microsoft'ta DevOps ile nasıl çalıştığımızı ve kendi DevOps ilerleme durumunuzu nasıl değerlendirebileceğinizi öğrenmek için kaynaklarımızı birleştirir.

  • Üretime göndermeden önce göz önünde bulundurmanız gereken en önemli beş güvenlik öğesi, Azure'da web uygulamalarınızın güvenliğini sağlamaya ve uygulamalarınızı en yaygın ve tehlikeli web uygulaması saldırılarına karşı korumaya nasıl yardımcı olduğunuzu gösterir.

  • Azure için Secure DevOps Kit, kapsamlı otomasyon kullanan DevOps ekiplerinin kapsamlı Azure aboneliği ve kaynak güvenliği gereksinimlerini karşılayan betikler, araçlar, uzantılar ve otomasyonlardan oluşan bir koleksiyondur. Azure için Güvenli DevOps Seti, güvenliği yerel DevOps iş akışlarınızla sorunsuz bir şekilde tümleştirmeyi gösterebilir. Set, geliştiricilerin güvenli kod yazmasına ve bulut uygulamalarının güvenli yapılandırmasını kodlama ve erken geliştirme aşamalarında test etmelerine yardımcı olabilecek güvenlik doğrulama testleri (SVT) gibi araçları ele alır.

  • Azure güvenlikle ilgili en iyi yöntemler ve desenler - Azure kullanarak bulut çözümlerini tasarlarken, dağıtırken ve yönetirken kullanılacak en iyi güvenlik yöntemleri koleksiyonu. Rehberlik, BT uzmanları için bir kaynak olarak tasarlanmıştır. Bu, güvenli Azure çözümleri oluşturup dağıtan tasarımcıları, mimarları, geliştiricileri ve test edicileri içerebilir.

Gereksinimler

Gereksinimler tanımı aşaması, uygulamanızın ne olduğunu ve yayınlandığında ne yaptığını tanımlamada önemli bir adımdır. Gereksinimler aşaması, uygulamanızda oluşturduğunuz güvenlik denetimlerini düşünme zamanıdır. Bu aşamada, güvenli bir uygulamayı yayınlayıp dağıttığınızdan emin olmak için SDL boyunca gerçekleştirdiğiniz adımları da başlatırsınız.

Güvenlik ve gizlilik sorunlarını göz önünde bulundurun

Bu aşama, temel güvenlik ve gizlilik sorunlarını göz önünde bulundurmak için en iyi zamandır. Projenin başlangıcında kabul edilebilir güvenlik ve gizlilik düzeylerini tanımlamak, bir ekiliğe yardımcı olur:

  • Güvenlik sorunlarıyla ilişkili riskleri anlayın.
  • Geliştirme sırasında güvenlik hatalarını belirleyin ve düzeltin.
  • Projenin tamamında yerleşik güvenlik ve gizlilik düzeylerini uygulayın.

Uygulamanızın gereksinimlerini yazarken, uygulamanızın ve verilerinizin güvenliğini sağlamaya yardımcı olabilecek güvenlik denetimlerini göz önünde bulundurduğunuzdan emin olun.

Güvenlik soruları sorun

Şu güvenlik sorularını sorun:

  • Uygulamam hassas veriler içeriyor mu?

  • Uygulamam, Federal Finansal Kurum Sınav Konseyi (FFIEC) veya Ödeme Kartı Sektörü Veri Güvenliği Standartları (PCI DSS) gibi sektör standartlarına ve uyumluluk programlarına uymamı gerektiren verileri toplar veya depolar mı?

  • Uygulamam tek bir kişiyi tanımlamak, iletişim kurmak veya bulmak için kendi başına veya başka bilgilerle kullanılabilecek hassas kişisel veya müşteri verileri topluyor mu?

  • Uygulamam bir kişinin tıbbi, eğitim, finansal veya iş bilgilerine erişmek için kullanılabilecek verileri topluyor mu veya içeriyor mu? Gereksinimler aşamasında verilerinizin duyarlılığını belirlemek, verilerinizi sınıflandırmanıza ve uygulamanız için kullandığınız veri koruma yöntemini belirlemenize yardımcı olur.

  • Verilerim nerede ve nasıl depolanır? Uygulamanızın beklenmeyen değişiklikler için kullandığı depolama hizmetlerini (örneğin, daha yavaş yanıt süreleri) nasıl izlediğinizi düşünün. Daha ayrıntılı veri toplamak ve bir sorunu derinlemesine analiz etmek için günlüğe kaydetmeyi etkileyebiliyor musunuz?

  • Uygulamam genel kullanıma açık mı (İnternet'te) yoksa yalnızca şirket içinde mi kullanılabilir? Uygulamanız genel kullanıma açıksa, toplanmış olabilecek verileri yanlış şekilde kullanılmaktan nasıl korursunuz? Uygulamanız yalnızca şirket içinde kullanılabiliyorsa, kuruluşunuzda kimlerin uygulamaya erişmesi gerektiğini ve ne kadar süreyle erişime sahip olması gerektiğini göz önünde bulundurun.

  • Uygulamanızı tasarlamaya başlamadan önce kimlik modelinizi anlıyor musunuz? Kullanıcıların söyledikleri kişi olduğunu ve bir kullanıcının ne yapmaya yetkili olduğunu belirleyebilir misiniz?

  • Uygulamam hassas veya önemli görevleri (para aktarımı, kapıların kilidini açma veya ilaç teslimi gibi) gerçekleştiriyor mu? Hassas bir görev gerçekleştiren kullanıcının görevi gerçekleştirme yetkisine sahip olduğunu nasıl doğruladığınıza ve kişinin söylediği kişi olduğunu nasıl doğruladığınıza dikkat edin. Yetkilendirme (AuthZ), kimliği doğrulanmış bir güvenlik sorumlusuna bir şey yapma izni verme işlemidir. Kimlik doğrulaması (AuthN), bir tarafın meşru kimlik bilgileri için zorlayıcı bir işlemdir.

  • Uygulamam, kullanıcıların dosyaları veya diğer verileri karşıya yüklemesine veya indirmesine izin verme gibi riskli yazılım etkinlikleri gerçekleştiriyor mu? Uygulamanız riskli etkinlikler gerçekleştiriyorsa, uygulamanızın kullanıcıları kötü amaçlı dosyaları veya verileri işlemeye karşı nasıl koruyup korumadığını göz önünde bulundurun.

OWASP ilk 10'u gözden geçirin

OWASP İlk 10 Uygulama Güvenliği Risklerini gözden geçirmeyi göz önünde bulundurun. OWASP İlk 10, web uygulamaları için kritik güvenlik risklerini ele alır. Bu güvenlik risklerinin farkında olmak, uygulamanızda bu riskleri en aza indiren gereklilik ve tasarım kararları oluşturmanıza yardımcı olabilir.

İhlalleri önlemek için güvenlik denetimlerini düşünmek önemlidir. Ancak, bir ihlalin gerçekleşeceğini de varsaymak istiyorsunuz. Bir ihlalin güvenlikle ilgili bazı önemli soruları önceden yanıtlamaya yardımcı olduğunu varsayarsak, acil bir durumda yanıtlanması gerekmez:

  • Bir saldırıyı nasıl algılayacağım?
  • Bir saldırı veya ihlal olursa ne yapacağım?
  • Veri sızıntısı veya kurcalama gibi saldırılardan nasıl kurtulacağım?

Tasarlama

Tasarım aşaması, tasarım ve işlevsel belirtimler için en iyi yöntemleri oluşturmak için kritik öneme sahiptir. Ayrıca, proje genelinde güvenlik ve gizlilik sorunlarının azaltılmasına yardımcı olan risk analizi gerçekleştirmek için de kritik öneme sahiptir.

Güvenlik gereksinimleriniz varsa ve güvenli tasarım kavramlarını kullandığınızda, güvenlik açığı fırsatlarından kaçınabilir veya en aza indirebilirsiniz. Güvenlik açığı, uygulamanın tasarımında bir kullanıcının uygulamanız yayımlandıktan sonra kötü amaçlı veya beklenmeyen eylemler gerçekleştirmesine izin verebilen bir gözetimdir.

Tasarım aşamasında, katmanlarda güvenliği nasıl uygulayabileceğinizi de düşünün; bir savunma düzeyi yeterli olmayabilir. Bir saldırgan web uygulaması güvenlik duvarınızı (WAF) geçerse ne olur? Bu saldırıya karşı savunmak için başka bir güvenlik denetimi istiyorsunuz.

Bunu göz önünde bulundurarak, aşağıdaki güvenli tasarım kavramlarını ve güvenli uygulamalar tasarlarken ele alınması gereken güvenlik denetimlerini ele almalıyız:

  • Güvenli bir kodlama kitaplığı ve yazılım çerçevesi kullanın.
  • Güvenlik açığı olan bileşenleri tarayın.
  • Uygulama tasarımı sırasında tehdit modellemeyi kullanın.
  • Saldırı yüzeyinizi azaltın.
  • Birincil güvenlik çevresi olarak bir kimlik ilkesi benimseyin.
  • Önemli işlemler için yeniden kimlik doğrulaması gerektir.
  • Anahtarların, kimlik bilgilerinin ve diğer gizli dizilerin güvenliğini sağlamak için bir anahtar yönetimi çözümü kullanın.
  • Hassas verileri koruma.
  • Başarısızlığa karşı güvenli ölçüler uygulayın.
  • Hata ve özel durum işleme avantajlarından yararlanın.
  • Günlüğe kaydetmeyi ve uyarıyı kullanın.

Güvenli bir kodlama kitaplığı ve yazılım çerçevesi kullanma

Geliştirme için güvenli bir kodlama kitaplığı ve ekli güvenlik içeren bir yazılım çerçevesi kullanın. Geliştiriciler, sıfırdan güvenlik denetimleri geliştirmek yerine mevcut, kanıtlanmış özellikleri (şifreleme, giriş temizleme, çıkış kodlaması, anahtarlar veya bağlantı dizesi ve güvenlik denetimi olarak kabul edilecek diğer her şeyi) kullanabilir. Bu, güvenlikle ilgili tasarım ve uygulama açıklarına karşı korunmaya yardımcı olur.

Çerçevenizin en son sürümünü ve çerçevede kullanılabilen tüm güvenlik özelliklerini kullandığınızdan emin olun. Microsoft, bulut uygulamaları sunmak için herhangi bir platform veya dil üzerinde çalışan tüm geliştiriciler için kapsamlı bir geliştirme araçları kümesi sunar. Çeşitli SDK'lar arasından seçim yaparak istediğiniz dille kodlayabilirsiniz. Gelişmiş hata ayıklama özelliklerine ve yerleşik Azure desteği sahip tam özellikli tümleşik geliştirme ortamlarından (IDE) ve düzenleyicilerden yararlanabilirsiniz.

Microsoft, Azure'da uygulama geliştirmek için kullanabileceğiniz çeşitli diller, çerçeveler ve araçlar sunar. .NET ve .NET Core geliştiricileri için Azure buna örnek olarak verilmiştir. Sunduğumuz her dil ve çerçeve için hızlı başlangıçları, öğreticileri ve API başvurularını hızla kullanmaya başlamanıza yardımcı olacak şekilde bulabilirsiniz.

Azure, web sitelerini ve web uygulamalarını barındırmak için kullanabileceğiniz çeşitli hizmetler sunar. Bu hizmetler .NET, .NET Core, Java, Ruby, Node.js, PHP veya Python olsun, en sevdiğiniz dilde geliştirmenizi sağlar. Azure Uygulaması Service Web Apps (Web Apps) bu hizmetlerden biridir.

Web Apps, Microsoft Azure'ın gücünü uygulamanıza ekler. Güvenlik, yük dengeleme, otomatik ölçeklendirme ve otomatik yönetim içerir. Azure DevOps, GitHub, Docker Hub ve diğer kaynaklardan paket yönetimi, hazırlama ortamları, özel etki alanları, SSL/TLS sertifikaları ve sürekli dağıtım gibi Web Apps'teki DevOps özelliklerinden de yararlanabilirsiniz.

Azure, web sitelerini ve web uygulamalarını barındırmak için kullanabileceğiniz başka hizmetler sunar. Çoğu senaryo için Web Apps en iyi seçenektir. Mikro hizmet mimarisi için Azure Service Fabric'i göz önünde bulundurun. Kodlarınızın çalıştığı sanal makineler üzerinde daha fazla denetime sahip olmanız gerekiyorsa Azure Sanal Makineler’i düşünün. Bu Azure hizmetleri arasında seçim yapma hakkında daha fazla bilgi için bkz. Azure Uygulaması Service, Sanal Makineler, Service Fabric ve Cloud Services karşılaştırması.

Güncelleştirmeleri bileşenlere uygulama

Güvenlik açıklarını önlemek için hem istemci tarafı hem de sunucu tarafı bileşenlerinizin (örneğin, çerçeveler ve kitaplıklar) ve bunların bağımlılıklarının güncelleştirmeleri için sürekli envanterini oluşturmanız gerekir. Yeni güvenlik açıkları ve güncelleştirilmiş yazılım sürümleri sürekli olarak yayınlanıyor. Kullandığınız kitaplıkları ve bileşenleri izlemek, önceliklendirmek ve güncelleştirmeleri veya yapılandırma değişikliklerini uygulamak için sürekli bir planınız olduğundan emin olun.

Araç önerileri için bilinen güvenlik açıklarına sahip bileşenleri kullanma hakkındaki Open Web Application Security Project (OWASP) sayfasına bakın. Kullandığınız bileşenlerle ilgili güvenlik açıkları için e-posta uyarılarına da abone olabilirsiniz.

Uygulama tasarımı sırasında tehdit modellemeyi kullanma

Tehdit modellemesi, işletmenize ve uygulamanıza yönelik olası güvenlik tehditlerini tanımlama ve ardından uygun risk azaltma işlemlerinin gerçekleştirilmesini sağlama sürecidir. SDL, olası sorunları çözmenin görece kolay ve uygun maliyetli olduğu tasarım aşamasında ekiplerin tehdit modellemesi yapması gerektiğini belirtir. Tehdit modellemesini tasarım aşamasında kullanmak toplam geliştirme maliyetinizi büyük ölçüde azaltabilir.

Tehdit modelleme sürecini kolaylaştırmaya yardımcı olmak için güvenlikle ilgili olmayan uzmanları göz önünde bulundurarak SDL Tehdit Modelleme Aracı'nı tasarladık. Bu araç, tehdit modellerini oluşturma ve analiz etme konusunda net yönergeler sağlayarak tehdit modellemeyi tüm geliştiriciler için kolaylaştırır.

Uygulama tasarımının modellenmesi ve STRIDE tehditleri-Kimlik Sahtekarlığı, Kurcalama, İnkar, Bilgilerin Açığa Çıkması, Hizmet Reddi ve Tüm güven sınırları genelinde Ayrıcalığı Yükseltme işlemlerinin numaralandırılması, tasarım hatalarını erken yakalamanın etkili bir yolunu kanıtlamıştır. Aşağıdaki tabloda STRIDE tehditleri listelenmiştir ve Azure tarafından sağlanan özellikleri kullanan bazı örnek risk azaltmaları verilmiştir. Bu risk azaltmalar her durumda işe yaramaz.

Tehdit Güvenlik özelliği Olası Azure platformu risk azaltma
Spoofing (Kimlik Sahtekarlığı) Kimlik Doğrulaması HTTPS bağlantıları gerektir.
Tampering (Kurcalama) Bütünlük SSL/TLS sertifikalarını doğrulayın. SSL/TLS kullanan uygulamaların bağlandıkları varlıkların X.509 sertifikalarını tam olarak doğrulaması gerekir. x509 sertifikalarınızı yönetmek için Azure Key Vault sertifikalarını kullanın.
İnkar İnkar edilemez Azure izleme ve tanılamayı etkinleştirin.
Information Disclosure (Bilgilerin Açığa Çıkması) Gizlilik Bekleyen ve aktarımdaki hassas verileri şifreleyin.
Denial of Service (Hizmet Reddi) Kullanılabilirlik Olası hizmet reddi koşulları için performans ölçümlerini izleyin. Bağlantı filtrelerini uygulama. Azure DDoS koruması, uygulama tasarımı en iyi yöntemleriyle birlikte DDoS saldırılarına karşı savunma sağlar.
Elevation of Privilege (Ayrıcalık Yükseltme) Yetkilendirme Microsoft Entra Id Privileged Identity Management kullanın.

Saldırı yüzeyinizi azaltın

Saldırı yüzeyi, olası güvenlik açıklarının oluşabileceği toplam değerdir. Bu makalede bir uygulamanın saldırı yüzeyine odaklanacağız. Odak, bir uygulamayı saldırıdan korumaktır. Saldırı yüzeyinizi en aza indirmenin basit ve hızlı bir yolu, kullanılmayan kaynakları ve kodu uygulamanızdan kaldırmaktır. Uygulamanız ne kadar küçük olursa saldırı yüzeyiniz de o kadar küçük olur. Örneğin, şunları kaldırın:

  • Henüz kullanıma sunulmamış özellikler için kod.
  • Hata ayıklama destek kodu.
  • Kullanılmayan veya kullanım dışı bırakılan ağ arabirimleri ve protokolleri.
  • Kullanmadığınız sanal makineler ve diğer kaynaklar.

Kaynaklarınızı düzenli olarak temizlemek ve kullanılmayan kodu kaldırdığınızdan emin olmak, kötü amaçlı aktörlerin saldırması için daha az fırsat olmasını sağlamanın harika yollarıdır.

Saldırı yüzeyinizi azaltmanın daha ayrıntılı ve ayrıntılı bir yolu, bir saldırı yüzeyi analizini tamamlamaktır. Saldırı yüzeyi analizi, güvenlik açıkları için gözden geçirilmesi ve test edilmesi gereken bir sistemin parçalarını eşlemenize yardımcı olur.

Saldırı yüzeyi analizinin amacı, geliştiricilerin ve güvenlik uzmanlarının uygulamanın hangi bölümlerinin saldırıya açık olduğunun farkında olması için uygulamadaki risk alanlarını anlamaktır. Ardından bu potansiyeli en aza indirmenin yollarını bulabilir, saldırı yüzeyinin ne zaman ve nasıl değiştiğini ve bunun risk açısından ne anlama geldiğini izleyebilirsiniz.

Saldırı yüzeyi analizi şunları belirlemenize yardımcı olur:

  • Güvenlik açıklarını gözden geçirmeniz ve test etmeniz gereken sistem işlevleri ve bölümleri.
  • Derinlemesine savunma koruması gerektiren yüksek riskli kod alanları (sistemin savunmanız gereken parçaları).
  • Saldırı yüzeyini değiştirdiğinizde ve bir tehdit değerlendirmesini yenilemeniz gerektiğinde.

Saldırganların olası bir zayıf nokta veya güvenlik açığından yararlanma fırsatlarını azaltmak, uygulamanızın genel saldırı yüzeyini kapsamlı bir şekilde analiz etmenizi gerektirir. Ayrıca sistem hizmetlerine erişimi devre dışı bırakmayı veya kısıtlamayı, en az ayrıcalık ilkesini uygulamayı ve mümkün olduğunca katmanlı savunmalar uygulamayı içerir.

SDL'nin doğrulama aşamasında bir saldırı yüzeyi incelemesi gerçekleştirmeyi ele alıyoruz.

Not

Tehdit modelleme ve saldırı yüzeyi analizi arasındaki fark nedir? Tehdit modellemesi, uygulamanıza yönelik olası güvenlik tehditlerini tanımlama ve tehditlere karşı uygun risk azaltma işlemlerinin gerçekleştirilmesini sağlama işlemidir. Saldırı yüzeyi analizi, saldırıya açık yüksek riskli kod alanlarını tanımlar. Uygulamanızın yüksek riskli alanlarını savunmanın yollarını bulmayı ve uygulamayı dağıtmadan önce bu kod alanlarını gözden geçirmeyi ve test etmeyi içerir.

Birincil güvenlik çevresi olarak kimlik ilkesini benimseme

Bulut uygulamaları tasarlarken, güvenlik çevre odağını ağ odaklı bir yaklaşımdan kimlik odaklı bir yaklaşıma genişletmeniz önemlidir. Geçmişte, birincil şirket içi güvenlik çevresi bir kuruluşun ağıydı. Çoğu şirket içi güvenlik tasarımı, ağı birincil güvenlik özeti olarak kullanır. Bulut uygulamaları için, kimliği birincil güvenlik çevresi olarak değerlendirerek size daha iyi hizmet sunulur.

Web uygulamaları geliştirmeye yönelik kimlik odaklı bir yaklaşım geliştirmek için yapabileceğiniz şeyler:

  • Kullanıcılar için çok faktörlü kimlik doğrulamasını zorunlu kılma.
  • Güçlü kimlik doğrulaması ve yetkilendirme platformları kullanın.
  • En az ayrıcalık ilkesini uygulayın.
  • Tam zamanında erişim uygulayın.

Kullanıcılar için çok faktörlü kimlik doğrulamasını zorunlu kılma

İki öğeli kimlik doğrulamasını kullanın. İki öğeli kimlik doğrulaması geçerli kimlik doğrulaması ve yetkilendirme standardıdır çünkü kullanıcı adı ve parola kimlik doğrulamasının doğasında bulunan güvenlik zayıflıklarını önler. Azure yönetim arabirimlerine (Azure portalı/uzak PowerShell) ve müşteriye yönelik hizmetlere erişim, Microsoft Entra çok faktörlü kimlik doğrulamasını kullanacak şekilde tasarlanmalı ve yapılandırılmalıdır.

Güçlü kimlik doğrulama ve yetkilendirme platformları kullanma

Özel kod yerine platform tarafından sağlanan kimlik doğrulama ve yetkilendirme mekanizmalarını kullanın. Bunun nedeni, özel kimlik doğrulama kodu geliştirmenin hataya açık olmasıdır. Ticari kod (örneğin, Microsoft'tan) genellikle güvenlik açısından kapsamlı bir şekilde gözden geçirilir. Microsoft Entra Id (Microsoft Entra ID), kimlik ve erişim yönetimi için Azure çözümüdür. Bu Microsoft Entra araçları ve hizmetleri güvenli geliştirme konusunda yardımcı olur:

  • Microsoft kimlik platformu, geliştiricilerin güvenli bir şekilde oturum açabilen uygulamalar oluşturmak için kullandığı bir bileşen kümesidir. Platform, tek kiracılı, iş kolu (LOB) uygulamaları oluşturan geliştiricilere ve çok kiracılı uygulamalar geliştirmek isteyen geliştiricilere yardımcı olur. Temel oturum açma işlemine ek olarak, Microsoft kimlik platformu kullanılarak oluşturulan uygulamalar Microsoft API'lerini ve özel API'leri çağırabilir. Microsoft kimlik platformu, OAuth 2.0 ve OpenID Connect gibi endüstri standardı protokolleri destekler.

  • Azure Active Directory B2C (Azure AD B2C), müşterilerin uygulamalarınızı kullanırken nasıl kaydolacaklarını, oturum açmalarını ve profillerini yönetmelerini özelleştirmek ve denetlemek için kullandığınız bir kimlik yönetimi hizmetidir. Buna iOS, Android ve .NET için geliştirilen uygulamalar da dahildir. Azure AD B2C, müşteri kimliklerini korurken bu eylemleri etkinleştirir.

En az ayrıcalık ilkesini uygulama

En az ayrıcalık kavramı, kullanıcılara işlerini yapmak için ihtiyaç duydukları tam erişim ve denetim düzeyini vermek ve başka bir şey yapmak anlamına gelir.

Yazılım geliştiricinin etki alanı yönetici haklarına ihtiyacı var mı? Bir yönetici yardımcının kişisel bilgisayarındaki yönetim denetimlerine erişmesi gerekir mi? Yazılıma erişimi değerlendirmek farklı değildir. Kullanıcılara uygulamanızda farklı yetenekler ve yetkiler vermek için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanıyorsanız herkese her şeye erişim izni vermezsiniz. Erişimi her rol için gerekli olanla sınırlayarak, bir güvenlik sorununun oluşma riskini sınırlarsınız.

Uygulamanızın erişim desenleri boyunca en az ayrıcalık uyguladığından emin olun.

Not

En düşük ayrıcalık kurallarının yazılıma ve yazılımı oluşturan kişilere uygulanması gerekir. Yazılım geliştiricilerine çok fazla erişim verilirse BT güvenliği için büyük bir risk oluşturabilir. Bir geliştiricinin kötü amaçlı olması veya çok fazla erişim verilmesi durumunda bunun sonuçları ciddi olabilir. Geliştirme yaşam döngüsü boyunca geliştiricilere en az ayrıcalık kurallarının uygulanmasını öneririz.

Tam zamanında erişim uygulama

Ayrıcalıkların açığa çıkarma süresini daha da azaltmak için tam zamanında (JIT) erişim uygulayın. Microsoft Entra Privileged Identity Management'ı kullanarak:

  • Kullanıcılara yalnızca JIT'ye ihtiyaç duydukları izinleri verin.
  • Ayrıcalıkların otomatik olarak iptal edilmiş olduğundan güvenle, kısaltılmış bir süre için roller atayın.

Önemli işlemler için yeniden kimlik doğrulaması gerektir

Siteler arası istek sahteciliği (XSRF veya CSRF olarak da bilinir), kötü amaçlı bir web uygulamasının istemci tarayıcısı ile bu tarayıcıya güvenen bir web uygulaması arasındaki etkileşimi etkilediği web'de barındırılan uygulamalara yönelik bir saldırıdır. Web tarayıcıları her istekte otomatik olarak bir web sitesine bazı kimlik doğrulama belirteçleri gönderdiğinden siteler arası istek sahteciliği saldırıları mümkündür. Saldırı, kullanıcının daha önce kimliği doğrulanmış oturumundan yararlandığından, bu yararlanma biçimi tek tıklamayla saldırı veya oturum sürme olarak da bilinir.

Bu tür bir saldırıya karşı savunmanın en iyi yolu, kullanıcıdan satın alma, hesap devre dışı bırakma veya parola değişikliği gibi her önemli işlemden önce yalnızca kullanıcının sağlayabilecekleri bir şey istemektir. Kullanıcıdan parolasını yeniden girmesini, bir captcha tamamlamasını veya yalnızca kullanıcının sahip olacağı bir gizli dizi belirteci göndermesini isteyebilirsiniz. En yaygın yaklaşım gizli belirteçtir.

Anahtarların, kimlik bilgilerinin ve diğer gizli dizilerin güvenliğini sağlamak için anahtar yönetimi çözümü kullanma

Anahtarları ve kimlik bilgilerini kaybetmek yaygın bir sorundur. Anahtarlarınızı ve kimlik bilgilerinizi kaybetmekten daha kötü olan tek şey, yetkisiz bir tarafın bunlara erişmesini sağlamaktır. Saldırganlar, GitHub gibi kod depolarında depolanan anahtarları ve gizli dizileri bulmak için otomatik ve el ile gerçekleştirilen tekniklerden yararlanabilir. Anahtarları ve gizli dizileri bu ortak kod depolarına veya başka bir sunucuya yerleştirmeyin.

Anahtarlarınızı, sertifikalarınızı, gizli dizilerinizi ve bağlantı dizesi her zaman bir anahtar yönetimi çözümüne yerleştirin. Anahtarların ve gizli dizilerin donanım güvenlik modüllerinde (HSM) depolandığı merkezi bir çözüm kullanabilirsiniz. Azure, Azure Key Vault ile bulutta bir HSM sağlar.

Key Vault bir gizli dizi deposudur: Uygulama gizli dizilerini depolamaya yönelik merkezi bir bulut hizmetidir. Key Vault, uygulama gizli dizilerini tek bir merkezi konumda tutarak ve güvenli erişim, izin denetimi ve erişim günlüğü sağlayarak gizli verilerinizi güvende tutar.

Gizli diziler tek tek kasalarda depolanır. Her kasanın erişimi denetlemek için kendi yapılandırma ve güvenlik ilkeleri vardır. Verilerinize bir REST API aracılığıyla veya çoğu programlama dili için kullanılabilen bir istemci SDK'sı aracılığıyla ulaşabilirsiniz.

Önemli

Azure Key Vault, sunucu uygulamaları için yapılandırma gizli dizilerini depolamak üzere tasarlanmıştır. Uygulama kullanıcılarına ait verileri depolamak için tasarlanmamıştır. Bu, hizmetin performans özelliklerine, API’sine ve maliyet modeline yansımıştır.

Kullanıcı verileri, Saydam Veri Şifrelemesi (TDE) içeren bir Azure SQL Veritabanı örneğinde veya Azure Depolama Hizmeti Şifrelemesi kullanan bir depolama hesabında olduğu gibi başka bir yerde depolanmalıdır. Uygulamanız tarafından bu veri depolarına erişmek için kullanılan gizli diziler Azure Key Vault'ta tutulabilir.

Hassas verileri koruma

Verileri korumak, güvenlik stratejinizin temel bir parçasıdır. Verilerinizi sınıflandırmak ve veri koruma gereksinimlerinizi belirlemek, uygulamanızı veri güvenliğini göz önünde bulundurarak tasarlamanıza yardımcı olur. Depolanan verileri duyarlılık ve iş etkisine göre sınıflandırma (kategorilere ayırma), geliştiricilerin verilerle ilişkili riskleri belirlemesine yardımcı olur.

Veri biçimlerinizi tasarlarken tüm geçerli verileri hassas olarak etiketleyin. Uygulamanın geçerli verileri hassas olarak ele aldığından emin olun. Bu uygulamalar hassas verilerinizi korumanıza yardımcı olabilir:

  • Şifrelemeyi kullanın.
  • Anahtarlar ve parolalar gibi gizli dizileri sabit kodlamaktan kaçının.
  • Erişim denetimlerinin ve denetimin yerinde olduğundan emin olun.

Şifrelemeyi kullanma

Verileri korumak, güvenlik stratejinizin temel bir parçası olmalıdır. Verileriniz bir veritabanında depolanıyorsa veya konumlar arasında gidip geliyorsa bekleyen verilerin şifrelenmesini (veritabanındayken) ve aktarımdaki verilerin şifrelenmesini (kullanıcı, veritabanı, API veya hizmet uç noktasına giderken) kullanın. Veri alışverişi için her zaman SSL/TLS protokollerini kullanmanızı öneririz. Şifreleme için en son TLS sürümünü kullandığınızdan emin olun (şu anda bu sürüm 1.2'dir).

Sabit kodlamadan kaçının

Bazı şeyler asla yazılımınızda sabit kodlanmamalıdır. Bazı örnekler konak adları veya IP adresleri, URL'ler, e-posta adresleri, kullanıcı adları, parolalar, depolama hesabı anahtarları ve diğer şifreleme anahtarlarıdır. Kodunuzun açıklama bölümleri de dahil olmak üzere, kodunuzda sabit kodla kodlanacak veya edilmeyecek özelliklerle ilgili gereksinimleri uygulamayı göz önünde bulundurun.

Kodunuza açıklama eklediğinizde, hassas bilgileri kaydetmediğinizden emin olun. Buna e-posta adresiniz, parolalarınız, bağlantı dizesi'leriniz, uygulamanızla ilgili yalnızca kuruluşunuzdaki bir kişi tarafından bilinen bilgiler ve bir saldırgana uygulamanıza veya kuruluşunuza saldırmada avantaj sağlayacak diğer her şey dahildir.

Temel olarak, geliştirme projenizdeki her şeyin dağıtıldığında genel bilgi olduğunu varsayalım. Projeye herhangi bir türde hassas veri dahil etmekten kaçının.

Daha önce Azure Key Vault'a değindik. Anahtar Kasası'nı kullanarak anahtarlar ve parolalar gibi gizli dizileri sabit kodlama yerine depolayabilirsiniz. Azure kaynakları için yönetilen kimliklerle birlikte Key Vault kullandığınızda, Azure web uygulamanız kaynak denetiminizde veya yapılandırmanızda gizli dizileri depolamadan gizli dizi yapılandırma değerlerine kolayca ve güvenli bir şekilde erişebilir. Daha fazla bilgi edinmek için bkz . Azure Key Vault ile sunucu uygulamalarınızda gizli dizileri yönetme.

Başarısızlığa karşı güvenli ölçüler uygulama

Uygulamanızın yürütme sırasında oluşan hataları tutarlı bir şekilde işleyebilmesi gerekir. Uygulama tüm hataları yakalamalı ve güvenli veya kapalı başarısız olmalıdır.

Ayrıca hataların şüpheli veya kötü amaçlı etkinlikleri tanımlamak için yeterli kullanıcı bağlamıyla günlüğe kaydedildiğinden de emin olmanız gerekir. Günlükler, gecikmeli adli analize izin vermek için yeterli bir süre tutulmalıdır. Günlükler, günlük yönetimi çözümü tarafından kolayca kullanılan bir biçimde olmalıdır. Güvenlikle ilgili hatalar için uyarıların tetiklendiğinden emin olun. Günlüğe kaydetme ve izlemenin yetersiz olması, saldırganların sistemlere daha fazla saldırmasına ve kalıcılığı sürdürmesine olanak tanır.

Hata ve özel durum işleme avantajlarından yararlanın

Doğru hata ve özel durum işlemenin uygulanması, savunma kodlamasının önemli bir parçasıdır. Hata ve özel durum işleme, sistemi güvenilir ve güvenli hale getirmek için kritik öneme sahiptir. Hata işlemedeki hatalar, saldırganlara bilgi sızdırma ve saldırganların platformunuz ve tasarımınız hakkında daha fazla bilgi edinmesine yardımcı olmak gibi farklı güvenlik açıklarına yol açabilir.

Şunlardan emin olun:

  • Kodda yinelenen try/catch bloklarından kaçınmak için özel durumları merkezi bir şekilde işlersiniz.

  • Tüm beklenmeyen davranışlar uygulamanın içinde işlenir.

  • Kullanıcılara görüntülenen iletiler kritik verileri sızdırmaz, ancak sorunu açıklamak için yeterli bilgi sağlar.

  • Özel durumlar günlüğe kaydedilir ve adli tıp veya olay yanıtı ekiplerinin incelemesi için yeterli bilgi sağlar.

Azure Logic Apps, bağımlı sistemlerin neden olduğu hataları ve özel durumları işlemek için birinci sınıf bir deneyim sağlar. Logic Apps'i kullanarak kuruluşlar ve kuruluşlar genelinde uygulamaları, verileri, sistemleri ve hizmetleri tümleştiren görevleri ve işlemleri otomatikleştirmek için iş akışları oluşturabilirsiniz.

Günlüğe kaydetme ve uyarı kullanma

Güvenlik araştırmalarına yönelik güvenlik sorunlarınızı günlüğe kaydedin ve insanların sorunları zamanında bilmelerini sağlamak için sorunlar hakkında uyarılar tetikler. Tüm bileşenlerde denetimi ve günlüğe kaydetmeyi etkinleştirin. Denetim günlükleri kullanıcı bağlamı yakalamalı ve tüm önemli olayları tanımlamalıdır.

Bir kullanıcının sitenize gönderdiği hassas verileri günlüğe kaydetmediğinizden denetleyin. Hassas verilere örnek olarak şunlar verilebilir:

  • Kullanıcı kimlik bilgileri
  • Sosyal Güvenlik numaraları veya diğer tanımlayıcı bilgiler
  • Kredi kartı numaraları veya diğer finansal bilgiler
  • Sistem durumu bilgileri
  • Şifrelenmiş bilgilerin şifresini çözmek için kullanılabilecek özel anahtarlar veya diğer veriler
  • Uygulamaya daha etkili bir şekilde saldırmak için kullanılabilecek sistem veya uygulama bilgileri

Uygulamanın başarılı ve başarısız kullanıcı oturum açma işlemleri, parola sıfırlamaları, parola değişiklikleri, hesap kilitleme ve kullanıcı kaydı gibi kullanıcı yönetimi olaylarını izlediğinden emin olun. Bu olaylar için günlüğe kaydetme, şüpheli olabilecek davranışları algılamanıza ve bunlara tepki göstermenize yardımcı olur. Ayrıca uygulamaya kimlerin eriştiği gibi işlem verilerini toplamanıza da olanak tanır.

Sonraki adımlar

Aşağıdaki makalelerde, güvenli uygulamalar geliştirmenize ve dağıtmanıza yardımcı olabilecek güvenlik denetimlerini ve etkinlikleri öneririz.