Aracılığıyla paylaş


Azure'da güvenli uygulamalar geliştirme

Bu makalede, bulut için uygulama geliştirirken 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) uygulama ve doğrulama aşamalarında dikkate alınması gereken güvenlik soruları ve kavramları ele alınmıştır. Amaç, daha güvenli bir uygulama geliştirmek 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:

  • Implementation
  • Verification

Implementation

Uygulama aşamasının odak noktası, erken önleme için en iyi yöntemleri oluşturmak ve koddaki güvenlik sorunlarını algılayıp kaldırmaktır. Uygulamanızın, kullanılmayı amaçlamadığınız şekillerde kullanıldığını varsayalım. Bu, uygulamanızın yanlışlıkla veya kasıtlı olarak kötüye kullanılmasına karşı korumanıza yardımcı olur.

Kod incelemeleri gerçekleştirme

Kodu iade etmeden önce, genel kod kalitesini artırmak ve hata oluşturma riskini azaltmak için kod incelemeleri yapın. Kod gözden geçirme işlemini yönetmek için Visual Studio'yu kullanabilirsiniz.

Statik kod analizi gerçekleştirme

Statik kod analizi ( kaynak kod analizi olarak da bilinir) bir kod incelemesinin parçası olarak gerçekleştirilir. Statik kod analizi genellikle çalıştırılmayan koddaki olası güvenlik açıklarını bulmak için statik kod çözümleme araçlarını çalıştırmayı ifade eder. Statik kod analizi , renk tonu denetimi ve veri akışı analizi gibi teknikleri kullanır.

Azure Market, statik kod analizi gerçekleştiren ve kod incelemelerine yardımcı olan geliştirici araçları sunar.

Uygulamanız için her girişi doğrulama ve temizleme

Uygulamanızı en yaygın web uygulaması güvenlik açıklarından korumak için tüm girişleri güvenilmeyen olarak değerlendirin. Güvenilmeyen veriler, enjeksiyon saldırılarına yönelik bir araçtır. Uygulamanızın girişinde URL'deki parametreler, kullanıcıdan gelen girişler, veritabanından veya API'den alınan veriler ve kullanıcının işleyebileceği herhangi bir şey bulunur. Uygulamanın verileri herhangi bir şekilde (kullanıcıya geri görüntüleme dahil) kullanmadan önce verilerin söz dizimsel ve sembolik olarak geçerli olduğunu doğrulaması gerekir.

Yalnızca düzgün biçimlendirilmiş verilerin iş akışına girdiğinden emin olmak için veri akışının başlarında girişi doğrulayın. Hatalı biçimlendirilmiş verilerin veritabanınızda kalıcı olmasını veya aşağı akış bileşeninde bir arıza tetiklemesini istemezsiniz.

Blok listesi ve izin verilenler listesi, giriş söz dizimi doğrulamasını gerçekleştirmeye yönelik iki genel yaklaşımdır:

  • Engelleme listesi, belirli bir kullanıcı girişinin "kötü amaçlı olduğu bilinen" içerik içermediğini denetlemeye çalışır.

  • İzin verilenler listesi, belirli bir kullanıcı girişinin "bilinen iyi" olarak kabul edilen bir giriş kümesiyle eşleşip eşleşmediğini kontrol etmeye çalışır. Karakter tabanlı izin verilenler listesi, bir uygulamanın kullanıcı girişinin yalnızca "bilinen iyi" karakterler içerdiğini veya girişin bilinen bir biçimle eşleştiklerini denetlediği bir izin listesi biçimidir.

    Örneğin, bu bir kullanıcı adının yalnızca alfasayısal karakterler içerdiğini veya tam olarak iki sayı içerdiğini denetlemeyi içerebilir.

Güvenli yazılım oluşturmak için tercih edilen yaklaşım izin verilenler listesidir. Kara listeleme hataya açıktır çünkü potansiyel olarak hatalı olabilecek girişlerin tam listesini oluşturmak imkansızdır.

Bunu istemci tarafında değil sunucuda (veya sunucuda ve istemci tarafında) yapın.

Uygulamanızın çıkışlarını doğrulama

Görsel olarak veya belge içinde sunduğunuz tüm çıkışlar her zaman kodlanmış ve kaçış şeklinde olmalıdır. Kaçış, aynı zamanda çıkış kodlaması olarak da bilinir, güvenilmeyen verilerin bir enjeksiyon saldırısına araç olmamasını sağlamak için kullanılır. Kaçış, veri doğrulama ile birlikte sistemin bir bütün olarak güvenliğini artırmak için katmanlı savunma sağlar.

Kaçış, her şeyin çıkış olarak görüntülenmesini sağlar . Kaçış, yorumlayıcının verilerin yürütülmek üzere tasarlanmadığını bilmesini sağlar ve bu da saldırıların çalışmasını engeller. Bu, siteler arası betik (XSS) olarak adlandırılan bir diğer yaygın saldırı tekniğidir.

Üçüncü taraflardan bir web çerçevesi kullanıyorsanız , OWASP XSS önleme bilgi sayfasını kullanarak web sitelerinde çıkış kodlaması seçeneklerinizi doğrulayabilirsiniz.

Veritabanıyla iletişim kurarken parametreli sorgular kullanma

Kodunuzda hiçbir zaman "anında" satır içi veritabanı sorgusu oluşturmayın ve doğrudan veritabanına gönderin. Uygulamanıza eklenen kötü amaçlı kod, veritabanınızın çalınmasına, silinmesine veya değiştirilmesine neden olabilir. Uygulamanız, veritabanınızı barındıran işletim sisteminde kötü amaçlı işletim sistemi komutlarını çalıştırmak için de kullanılabilir.

Bunun yerine parametreli sorguları veya saklı yordamları kullanın. Parametreli sorgular kullanarak, kodunuzdan yordamı güvenli bir şekilde çağırabilir ve sorgu ifadesinin bir parçası olarak ele alınacağı konusunda endişelenmeden bir dize geçirebilirsiniz.

Standart sunucu üst bilgilerini kaldırma

Sunucu, X-Powered-By ve X-AspNet-Version gibi üst bilgiler, sunucu ve temel alınan teknolojiler hakkındaki bilgileri ortaya çıkarır. Uygulamanın parmak izini kullanmaktan kaçınmak için bu üst bilgileri gizlemenizi öneririz. Bkz. Azure web sitelerinde standart sunucu üst bilgilerini kaldırma.

Üretim verilerinizi ayırma

Üretim verileriniz veya "gerçek" verileriniz geliştirme, test veya işletmenin amaçladığı amaç dışında başka bir amaç için kullanılmamalıdır. Tüm geliştirme ve testlerde maskelenmiş (anonimleştirilmiş) bir veri kümesi kullanılmalıdır.

Bu, gerçek verilerinize daha az kişinin erişerek saldırı yüzeyinizi azalttığı anlamına gelir. Ayrıca daha az çalışanın kişisel verileri gördüğü anlamına gelir ve bu da gizlilik ihlali olasılığını ortadan kaldırır.

Güçlü bir parola ilkesi uygulama

Kaba kuvvet ve sözlük tabanlı tahminlere karşı savunma yapmak için, kullanıcıların karmaşık ve güvenli bir parola oluşturmasını sağlamak amacıyla güçlü bir parola politikası uygulamanız gerekir (örneğin, en az 12 karakter uzunluğunda ve hem alfasayısal hem de özel karakterler içeren).

Harici kiracılardaki Microsoft Entra Dış Kimliği, kendi kendine parola sıfırlama ve daha fazlasını sağlayarak parola yönetimi konusunda size yardımcı olur.

Varsayılan hesaplardaki saldırılara karşı savunmak için tüm anahtarların ve parolaların değiştirilebilir olduğunu ve kaynakları yükledikten sonra bunların oluşturulduğunu veya değiştirildiğini doğrulayın.

Uygulamanın parolaları otomatik olarak oluşturması gerekiyorsa, oluşturulan parolaların rastgele olduğundan ve yüksek entropiye sahip olduğundan emin olun.

Dosya yüklemelerini doğrulama

Uygulamanız dosya yüklemelerine izin veriyorsa, bu riskli etkinlik için alabileceğiniz önlemleri göz önünde bulundurun. Birçok saldırının ilk adımı, saldırı altında olan bir sisteme bazı kötü amaçlı kodlar almaktır. Dosya yükleme kullanmak, saldırganın bunu gerçekleştirmesine yardımcı olur. OWASP, karşıya yüklediğiniz dosyanın güvenli olduğundan emin olmak için bir dosyayı doğrulamaya yönelik çözümler sunar.

Kötü amaçlı yazılımdan koruma, virüsleri, casus yazılımları ve diğer kötü amaçlı yazılımları tanımlamaya ve kaldırmaya yardımcı olur. Microsoft Kötü Amaçlı Yazılımdan Koruma'yı veya bir Microsoft iş ortağının uç nokta koruma çözümünü (Trend Micro, Broadcom, McAfee, Windows'ta Microsoft Defender Virüsten Koruma ve Endpoint Protection) yükleyebilirsiniz.

Microsoft Kötü Amaçlı Yazılımdan Koruma , gerçek zamanlı koruma, zamanlanmış tarama, kötü amaçlı yazılım düzeltmesi, imza güncelleştirmeleri, altyapı güncelleştirmeleri, örnek raporlama ve dışlama olayı toplama gibi özellikler içerir. Dağıtım kolaylığı ve yerleşik algılamalar (uyarılar ve olaylar) için Microsoft Kötü Amaçlı Yazılımdan Koruma ve iş ortağı çözümlerini Bulut için Microsoft Defender ile tümleştirebilirsiniz.

Hassas içeriği önbelleğe alma

Hassas içeriği tarayıcıda önbelleğe alma. Tarayıcılar önbelleğe alma ve geçmiş bilgilerini depolayabilir. Önbelleğe alınan dosyalar, Internet Explorer söz konusu olduğunda Geçici İnternet Dosyaları klasörü gibi bir klasörde depolanır. Bu sayfalara yeniden başvurulduğunda, tarayıcı sayfaları önbelleğinden görüntüler. Kullanıcıya hassas bilgiler (adres, kredi kartı ayrıntıları, Sosyal güvenlik numarası, kullanıcı adı) görüntülenirse, bilgiler tarayıcının önbelleğinde depolanabilir ve tarayıcının önbelleği incelenerek veya tarayıcının Geri düğmesine basılarak alınabilir.

Verification

Doğrulama aşaması, kodun önceki aşamalarda oluşturulan güvenlik ve gizlilik ilkelerini karşıladığından emin olmak için kapsamlı bir çaba gerektirir.

Uygulama bağımlılıklarınızdaki güvenlik açıklarını bulma ve düzeltme

Bilinen güvenlik açığı olan bileşenleri tanımlamak için uygulamanızı ve bağımlı kitaplıklarını tararsınız. Bu taramayı gerçekleştirmek için kullanılabilen ürünler arasında OWASP Bağımlılık Denetimi, Snyk ve Black Duck bulunur.

Uygulamanızı işletim durumunda test edin

Dinamik uygulama güvenlik testi (DAST), güvenlik açıklarını bulmak için bir uygulamayı işletim durumunda test etme işlemidir. DAST araçları, yürütülürken bellek bozulması, güvenli olmayan sunucu yapılandırması, siteler arası betik oluşturma, kullanıcı ayrıcalık sorunları, SQL ekleme ve diğer kritik güvenlik sorunları gibi güvenlik açıklarını bulmak için programları analiz eder.

DAST, statik uygulama güvenlik testinden (SAST) farklıdır. SAST araçları, güvenlik açıklarını bulmak için kod yürütülmezse kaynak kodu veya kodun derlenmiş sürümlerini analiz eder.

TERCIHen bir güvenlik uzmanının ( sızma test edicisi veya güvenlik açığı değerlendiricisi ) yardımıyla DAST gerçekleştirin. Bir güvenlik uzmanı kullanılamıyorsa, biraz eğitim aldıktan sonra bir web proxy tarayıcı ile DAST'ı kendiniz gerçekleştirebilirsiniz. Kodunuzla ilgili belirgin güvenlik sorunları oluşturmadığınızdan emin olmak için bir DAST tarayıcısını önceden takın. Web uygulaması güvenlik açığı tarayıcılarının listesi için OWASP sitesine bakın.

Fuzz testi gerçekleştirme

Fuzz testinde, bir uygulamaya kasıtlı olarak hatalı biçimlendirilmiş veya rastgele veriler ekleyerek program hatasına neden olursunuz. Program hatasını başlatma, uygulama yayınlanmadan önce olası güvenlik sorunlarının ortaya çıkarılmasına yardımcı olur.

Güvenlik Riski Algılama , yazılımda güvenlik açısından kritik hataları bulmaya yönelik Microsoft'un benzersiz fuzz test hizmetidir.

Saldırı yüzeyi incelemesi gerçekleştirme

Kod tamamlandıktan sonra saldırı yüzeyini gözden geçirmek, bir uygulama veya sistemde yapılan tüm tasarım veya uygulama değişikliklerinin dikkate alındığından emin olunmasını sağlar. Tehdit modelleri de dahil olmak üzere değişiklikler sonucunda oluşturulan yeni saldırı vektörlerinin gözden geçirilmesini ve azaltılmasını sağlamaya yardımcı olur.

Uygulamayı tarayarak saldırı yüzeyinin resmini oluşturabilirsiniz. Microsoft, Attack Surface Analyzer adlı bir saldırı yüzeyi analiz aracı sunar. OWASP Saldırı Yüzeyi Algılayıcısı, Arachni ve w3af gibi birçok ticari dinamik test ve güvenlik açığı tarama aracı veya hizmeti arasından seçim yapabilirsiniz. Bu tarama araçları uygulamanızda gezinerek uygulamanın web üzerinden erişilebilen bölümlerini eşler. Benzer geliştirici araçlarını Azure Market'te de arayabilirsiniz.

Güvenlik sızma testi gerçekleştirme

Uygulamanızın güvenli olduğundan emin olunmasını sağlamak, diğer işlevleri test etme kadar önemlidir. Sızma testini derleme ve dağıtım işleminin standart bir parçası haline getirin. Dağıtılan uygulamalarda düzenli güvenlik testleri ve güvenlik açığı taraması zamanlayın ve açık bağlantı noktalarını, uç noktaları ve saldırıları izleyin.

Güvenlik doğrulama testleri çalıştırma

Azure için Güvenli DevOps Seti'nden (AzSK) Azure Kiracı Güvenlik Çözümü (AzTS), Azure platformunun birden çok hizmeti için SVT'ler içerir. Azure aboneliğinizin ve uygulamanızı oluşturan farklı kaynakların güvenli durumda olduğundan emin olmak için bu SVT'leri düzenli aralıklarla çalıştırırsınız. Bu testleri, SVT'leri Visual Studio uzantısı olarak kullanılabilir hale getiren AzSK'nin sürekli tümleştirme/sürekli dağıtım (CI/CD) uzantıları özelliğini kullanarak da otomatikleştirebilirsiniz.

Sonraki Adımlar

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