Aracılığıyla paylaş


Bir geliştirme yaşam döngüsünün güvenliğini sağlama ile ilgili öneriler

Bu Power Platform iyi Mimarlı Güvenlik denetim listesi önerisi için geçerlidir:

SE:02 Sürekli, çoğunlukla otomatik ve denetlenebilir bir yazılım tedarik zinciri kullanarak güvenli bir geliştirme yaşam döngüsü sürdürebilirsiniz. Güvenliği yenen uygulamalara karşı korunmak için tehdit modellemesi kullanarak güvenli bir tasarıma sahip olun.

Bu kılavuzda, geliştirme döngüsü boyunca en iyi güvenlik uygulamalarını uygulayarak kod ve geliştirme ortamınızı koruma önerileri açıklanmaktadır.

Bir iş yükünün temelinde, iş mantığını uygulayan bileşenler vardır. Bu bileşenler tuval uygulamaları ve akışları gibi düşük kodlu öğelerin ve eklentiler gibi kod ilk öğelerin bir karması olabilir. İş yükünüzü oluşturan tüm bileşenler, gizliliği, bütünlüğü ve kullanılabilirliği sağlamak için güvenlik hatalarından arınmış olmalıdır.

Altyapı düzlemini kimlik ve ağ denetimleriyle korumak önemlidir ancak bu yeterli değildir. Genel güvenlik duruşunuzu güçlendirmek için bu iş yüklerinin Power Platform iş yüklerinin ve iş yükünden arınmış aktivitelerin kötü uygulanmasını engelleyin. Güvenliği geliştirme yaşam döngüsünüzle tümleştirme süreci temel olarak bir koruyucu işlemdir. Tıpkı kaynak ile numaralandırma gibi, kod geliştirmeyi daraltma da bağlama bağlıdır. Odaklandığı şey uygulamanın işlevsel gereksinimlerine değil, güvenliği geliştirmektir.

Tanımlar

Terim Açıklama
Güvenlik Geliştirme Yaşam Döngüsü (SDL) SDL, Microsoft tarafından sağlanan güvenlik güvencesi ve uyumluluk gereksinimlerini destekleyen katı uygulamalar kümesidir.
Güvenlik geliştirme yaşam döngüsü (SDLC) Çok aşamalı, sistematik olarak yazılım sistemleri geliştirmek için bir süreç.

Temel tasarım stratejileri

Güvenlik önlemleri, aşağıdakilerin yapılabilmesi için mevcut Yazılım Geliştirme Yaşam Döngüsü (SDLC) ile birden fazla noktada tümleştirilmelidir:

  • Tasarım seçimleri güvenlik açıklarına neden olmaz.
  • Düşük kod ve kod ilk bileşenleri ile yapılandırma, kullanılabilir uygulama ve hatalı kodlama uygulamaları nedeniyle açık oluşturmaz.
  • Düşük kodlu ve koda önce gelen bileşenler ve dağıtım işlemleriyle oynanmaz.
  • Olaylar aracılığıyla ortaya çıkan güvenlik açıkları hafifletilir.
  • Uyumluluk gereksinimleri riske atılmaz veya azaltılmaz.
  • Denetim günlük kaydı tüm ortamlarda uygulanır.

Aşağıdaki bölümlerde SDLC'nin sık kullanılan aşamaları için güvenlik stratejileri sağlanmıştır.

Gereksinimler aşaması

Gereksinimler aşamasının amacı, iş yüküne veya iş yükünün yeni özelliğine ilişkin işlevsel ve eylem dışı gereksinimleri toplamak ve çözümlemektir. Bu aşama, iş yükünün amaçlarına göre uyarlanmış korkulukların oluşturulmasını kolaylaştırdığından önemlidir. Verilerinizi ve iş yükünüzün bütünlüğünü korumak, geliştirme yaşam döngüsünün tüm aşamaları boyunca temel bir gereksinim olmalıdır.

Örneğin, kullanıcıların bir uygulamaya veri gireceği ve değiştireceği bir iş yükünü dikkate alın. Güvenlik tasarımı seçimleri, kimlik doğrulaması ve kullanıcı kimliğini doğrulama gibi ve verilerde yalnızca izin verilen eylemlere izin verme gibi, kullanıcının verilerle etkileşimi konusunda güvenceyi kapsamalıdır. Uygun olmayan gereksinimler kullanılabilirliği, kullanılabilirliği ve korurluğu kapsar. Güvenlik seçenekleri kesimleme sınırları, güvenlik duvarı girişi ve çıkışları ve diğer kesme güvenlik kaygılarını içermelidir.

Tüm bu kararlar iş yükünün güvenlik duruşunun iyi bir tanımına yol almalıdır. Güvenlik gereksinimlerini, üzerinde mutabık kalınan bir belirtim içinde belgeleyin ve bunları bekleme defterine yansıtın. Belge, güvenlik yatırımlarını ve yatırımlar işletme paydaşları tarafından onaylanmadıysa işletmenin almak istediği yatırımları ve riskleri açıkça belirtmelidir. Örneğin, yalnızca izin verilen IP konumlarına Dataverseerişimini kısıtlayarak kuruluş verilerinizi korumak için Power Platform ortamlarında IP güvenlik duvarı kullanma gereğini belgeleyebilirsiniz. İşletme paydaşları Yönetilen Ortamlar gibi bir çözüm kullanarak fazladan maliyete katlanmak istemeseler, bir kafe gibi ortak konumlardan kurumsal kaynaklara erişim riskiyle karşılanmak için hazır olmalıdırlar. Başka bir örnek olarak, uygulamanızın bir üçüncü taraf veri kaynağı bağlanması gerektiğini düşünün. Power Platform bunun için hazır bir bağlayıcısı olabilir, ancak bu, güvenlik takımlarınızın onayladığı kimlik doğrulama gereksinimlerini desteklemeyebilir. Bu durumda, güvenlik paydaşlarınız onaylanmamış bir kimlik doğrulama yöntemi kullanma riskiyle karşılaşabilirler. Alternatif olarak, artan geliştirme süresi ve potansiyel proje gecikmesinin avantajlarını tartırken özel bir bağlayıcı kullanmayı keşfedebilirsiniz.

Güvenlik gereksiniminin toplanması bu aşamanın çok önemli bir parçasıdır. Bu çaba olmadan, tasarım ve uygulama aşamaları, güvenlik açıklarına veya geliştirme süresini artıracak gereksinimlerin değiştirilmesine neden olabilecek, ıssız seçimleri temel alacak. Pahalı olabilecek güvenliği karşılamak için, uygulamayı daha sonra değiştirmeniz gerekebilir.

Tasarım aşaması

Bu aşamada, güvenlik gereksinimleri teknik gereksinimlere dönüştürülür. Teknik belirtiminizde, uygulama sırasında belirsizliği önlemek için tüm tasarım kararlarını belgeleyin. Burada bazı tipik görevler vardır:

  • Mimarinin güvenlik boyutunu tanımlayın. Mimariyi güvenlik kontrolleriyle yer paylaşımına katmanlayın. Örneğin, ağ yalıtım sınırları üzerinde pratik olan denetimler, iş yükü bileşenleri için gerekli kimlik türleri ve kimlik doğrulama yöntemleri, kullanılacak şifreleme yöntemlerinin türü.

  • Platform tarafından sağlanan karşılamaları değerlendirin. Sizinle Power Platform arasındaki sorumluluğunne kadar büyük olduğunu anlamak önemlidir. Power Platform yerel güvenlik denetimleriyle çakışan veya tekrarlanmaktan kaçının. Daha iyi güvenlik kapsamı alırsınız ve geliştirme kaynaklarını uygulamanın gereksinimlerine göre yeniden ayırma olanağına sahip olursunuz.

    Örneğin, uygulamalarda ve akışlarda onaylanmamış kullanım desenlerini reaktif olarak tanımlayan ve uyaran özel mantık oluşturmak yerine, bağlayıcıların nasıl kullanılabileceğini kategorilere ayırmak için veri ilkelerini kullanın.

    Yalnızca güvenilen başvuru uygulamalarını, şablonları, kod bileşenlerini, betikleri ve kitaplıkları seçin. Tasarımınız ayrıca güvenli sürüm denetimini de belirtmelidir. Uygulama bağımlılıkları, güvenilen taraflardan kaynaklanmalıdır. Üçüncü taraf satıcılar, güvenlik gereksinimlerinizi karşılayabilmeli ve sorumlu ifşa planlarını paylaşabilmelidir. Gerekli eylemleri yapabilmeniz için tüm güvenlik olayları gerektiği gibi raporlanmalıdır. Ayrıca, belirli kitaplıklar veya başvuru uygulamaları organizasyonunuz tarafından yasaklanmış olabilir. Örneğin, güvenlik açıklarından arınmış ve güvenli olsa bile, kuruluşunuz tarafından onaylanmamış özellikleri, lisans kısıtlamalarını veya başvuru uygulamasının destek modelini kullandığı için izin verilmemiş olabilir.

    Bu yönergelerin izlendiğinden emin olmak için, onaylanan ve/veya onaylanmamış çerçevelerin, kitaplıkların ve satıcıların listesini tutun ve yapımcılarınızın bu listeye aşina olduğundan emin olun. Mümkünse, listeyi desteklemek için geliştirme kanallarında korkuluklar yerleştirin. Olabildiğince fazla, açıklara yönelik bağımlılıkları taramak için araç kullanımını otomatikleştirin.

  • Uygulama gizli dizilerini güvenli bir şekilde depolayın. Uygulamanızın kullandığı uygulama gizli anahtarları ve önceden paylaşılan anahtarların kullanımını güvenli bir şekilde uygulayın. Kimlik bilgileri ve uygulama sırları hiçbir zaman iş yükünün kaynak kodunda (uygulama veya akış) depolanmamalıdır. Kaynak kodunuz olası bir saldırgan tarafından kullanılabilir duruma gelirse daha fazla erişim sağlanamaması için Azure Key Vault gibi dış kaynakları kullanın.

  • Verilerinize güvenle bağlanın. Microsoft Dataverse'in sunduğu, rol tabanlı ve sütun düzeyinde güvenlik gibi verilerinizi korumaya yönelik güçlü güvenlik özelliklerinden yararlanın. Diğer veri kaynakları için, güvenli kimlik doğrulama yöntemlerine sahip bağlayıcılar kullanın. Kullanıcı adını ve parolayı düz metin olarak depolayan sorgulardan kaçının. Özel bağlayıcılar oluşturmak için HTTP'ye geçmekten kaçının.

  • Son kullanıcıların iş yüklerini ve verilerini nasıl görüp bunlarla nasıl etkileşim kuracağını tanımlayın. Kullanıcıların verilere doğrudan erişimi olup olmadığını, hangi erişim düzeylerini gerektireceğini ve verilere nereden erişeceklerini düşünün. Uygulamaların son kullanıcılarla nasıl paylaşılacağını düşünün. Yalnızca uygulamaya ve verilere erişmesi gereken kişilerin erişime sahip olduğundan emin olun. Güvenlik engelleyicileri önlemek için geçici çözümleri teşvik eden karmaşık güvenlik modellerinden kaçının.

  • Sert kodlamadan kaçının. URL'lerin ve tuşların zor kodlamasından kaçının. Örneğin, bir Power Automate HTTP eyleminde URL'yi veya arka uç hizmetinin anahtarını zor kodlamaktan kaçının. Bunun yerine, özel bağlayıcı kullanın veya URL için bir ortam değişkeni ve API anahtarı için Azure Key Vault kullanın.

  • Test planlarını tanımlayın. Güvenlik gereksinimleri için net test durumları tanımlayın. Ardışık düzenlerinizdeki bu sınamaları otomatikleştirip otomatikleştiramayacağınızı değerlendirin. Takımınızda el ile test işlemleri varsa, bu testler için güvenlik gereksinimlerini de ekleyin.

Not

Bu aşamada tehdit modellemesi gerçekleştirin. Tehdit modellemesi, tasarım seçeneklerinin güvenlik gereksinimlerine uygun olduğunu ve azaltmanız gereken açıkları açığa çıkardığını onaylayabilir. İş yükünüz son derece hassas verileri ele alıyorsa, tehdit modellemesi yapmanıza yardımcı olabilecek güvenlik uzmanlarına yatırım yapın.

İlk tehdit modellemesi alıştırması, yazılımın mimarisi ve yüksek düzey tasarımı tanımlanırken tasarım aşamasında ortaya çıkmalıdır. Bu aşamada bunu yapmak, olası güvenlik sorunlarını sistemin yapısına eklenmeden önce belirlemenize yardımcı olur. Ancak, bu alıştırma bir kerelik bir aktivite değildir. Bu, yazılımın evrimi boyunca devam etmesi gereken sürekli bir süreçtir.

Daha fazla bilgi için bkz. Tehdit analizi önerileri.

Geliştirme ve test aşaması

Bu aşamada hedef, güvenlik kusurlarını önlemek ve kod, yapı ve dağıtım kanallarında müdahale etmektir.

Güvenli kod uygulamalarında iyi eğitim alın

Geliştirme ekibinin güvenli kodlama uygulamalarında eğitime sahip olması gerekir. Örneğin, geliştiricilerin en düşük ayrıcalıkta bir güvenlik modeli, katıştırma işlemini kısıtlayan model odaklı uygulamalara yönelik içerik güvenliği ilkelerini ve bağlayıcı/şirket içi ağ geçidi kimlik doğrulama yöntemlerini uygulamak için Microsoft Dataverse güvenlik kavramlarına alışması gerekir.

Geliştiricilerin Power Platform iş yükleri üzerinde çalışmaya başlamadan önce bu eğitimi tamamlaması gerekir.

Sürekli öğrenmeyi teşvik etmek için iç kod incelemeleri yapın.

Kod çözümleme araçlarını kullanma

Çözüm Denetleyicisi Power Platform kaynakları için kullanılmalı ve herhangi bir geleneksel kodun kaynak kodu, koddaki kimlik bilgilerinin varlığı da dahil olası güvenlik açıkları için denetlenebilir. Kaynak kod ve yapılandırma dosyalarında olası kimlik bilgileri ve gizli maruz kalma örneklerini belirleyin. Bu, bağlantı kimlik bilgilerinin üretimde nasıl işleneceğini incelemek için iyi bir zaman.

Fuzz testi uygulama

Açıkları denetlemek ve hata işlemesini doğrulamak için bozulmuş ve beklenmeyen veriler kullanın (özellikle Power Pages de içeren çözümlerde önemlidir).

Yeterli kodu yazın

Kod ayak izini azalttığınızda, ayrıca güvenlik kusurları olasılığını da azaltırsınız. Kodu çoğaltmak yerine zaten kullanımda olan ve güvenlik doğrulamalarından geçmiş kodu ve kitaplıkları yeniden kullanın. Açık kaynaklı yazılım algılama ve sürüm, güvenlik açığı ve yasal yükümlülüklerinin denetlenmesinde. Artan miktarda açık kaynak Power Platform kaynakları bulunmaktadır, bu nedenle dikkate alınmamalıdır. Mümkün olduğunda, son dakika sorunlarını önlemek için tasarım aşamasında bu tartışılmalıdır.

Geliştirici ortamlarını koruma

Geliştirici iş istasyonunun maruz kalınmasını önlemek için güçlü ağ ve kimlik kontrolleriyle korunması gerekir. Güvenlik güncelleştirmelerinin özenle uygulandığından emin olun.

Kaynak kodu deposu da korunmalıdır . Kod depolarına bilinmesi gereken esasına göre erişim verin ve saldırıları önlemek için açıkların maruz kalmasını mümkün olduğunca azaltın. Güvenlik açıkları için kodu gözden geçirmek için kapsamlı bir süreç geçirin. Bu amaçla güvenlik gruplarını kullanın ve iş haklılığına dayalı bir onay süreci uygulayın.

Güvenli kod dağıtımları

Sadece kodu güven altına almak için yeterli değil. Bu kanallardan yararlanılırsa, tüm güvenlik çabaları başarıyla ve tamamlanmamış durumdadır. Kötü aktörlerin işlem hattınızda kötü amaçlı kod çalıştırmasını önlemek istediğiniz için derleme ve yayın ortamlarının da korunması gerekir.

Uygulamanızla tümleştirilen her bileşen için güncel bir stok sağlama

Bir uygulamayla tümleştirilen her yeni bileşen, saldırı yüzeyine artırır. Yeni bileşenler eklendiğinde veya güncelleştirildiğinde uygun hesap verebilirliği ve uyarıyı sağlamak için, bu bileşenlerin stoku olmalıdır. Düzenli olarak, bildiriminizin yapı sürecinizdekiyle eşleştiğini kontrol edin. Böylece arka kapılar veya başka kötü amaçlı yazılım içeren yeni bileşenler beklenmedik bir şekilde eklenmemesini sağlar.

Dağıtımlarınız için Power Platform için ardışık düzenler kullanmanızı öneririz. GitHub Actions'ı kullanarak ardışık düzenleri genişletme. GitHub iş akışlarını kullanıyorsanız, Microsoft tarafından yazılan görevleri tercih edin. Ayrıca, ardışık düzeninizin güvenlik bağlamında çalıştıklarından görevleri doğrulayın.

Dağıtımda hizmet sorumlularının kullanımını keşfedin.

Üretim aşaması

Üretim aşaması, güvenlik boşluklarını gidermeye yönelik son sorumlu fırsatı ortaya koyuyor. Üretimde yayımlanan altın görüntüden bir kayıt tutun.

Sürümlenmiş yapıtları tutma

Tüm dağıtılan varlıkların ve bunların sürümlerinin kataloğunu tutun. Bu bilgiler, olay saptama sırasında, sorunları azalttığınızda ve sistemi çalışma durumuna geri aldığınızda yararlı olur. Ayrıca sürüme dönüştürülen varlıklar, yayımlanmış Ortak Güvenlik Açıkları ve Pozlamalar (CVE) bildirimleri ile karşılaştırılabilir. Bu karşılaştırmaları yapmak için otomasyonu kullanmanız gerekir.

Acil durum onarımları

Otomatik kanal tasarımınız, hem düzenli hem de acil durum dağıtımlarını destekleme esnekliğine sahip olmalıdır. Bu esneklik, hızlı ve sorumlu güvenlik onarımlarını desteklemek için önemlidir.

Sürüm genellikle birden çok onay geçidiyle ilişkilidir. Güvenlik onarımlarını hızlandırmak için bir acil durum süreci oluşturmayı düşünün. Süreç takımlar arasındaki iletişimi içerebilir. Ardışık düzen, normal dağıtım yaşam döngüsü dışında oluşan güvenlik onarımlarına, kritik hatalara ve kod güncelleştirmelerine adres gösteren hızlı geri alma ve geri alma dağıtımlarına izin vermelidir.

Not

Her zaman güvenlik onarımlarını kolaylık üzerinde önceliklendir. Güvenlikle ilgili düzeltmelerde gerileme veya hata tanıtmamalıdır. Acil durum kanalı yoluyla düzeltmeyi hızlandırmak istiyorsanız, hangi otomatik testlerin atlanabileceğini dikkatlice düşünün. Yürütme süresine karşı her testin değerini değerlendirin. Örneğin, birim testleri genellikle hızlı bir şekilde tamamlar. Tümleştirme veya uçtan uca testler uzun bir süre çalıştırılabilir.

Farklı ortamları ayrı tutma

Bu ortamlar üretimin sahip olduğu katı güvenlik denetimlerine sahip olabileceğinden, üretim verileri daha düşük ortamlarda** kullanılmamalıdır. Üretim dışı bir uygulamadan üretim veritabanına bağlanmayı ve üretim dışı bileşenlerin üretim ağlarına bağlanmayı önleyin.

Aşamalı maruz kalma kullanın

Özelliklerin seçilen ölçütlere göre bir alt kümesine serbest bırakılması için aşamalı olarak maruz kalma özelliğini kullanın. Sorun varsa, bu etki bu kullanıcılara en aza indirgenir. Bu yaklaşım genel bir risk azaltma stratejisidir, çünkü yüzey alanını azaltır. Özellik olgunlaştıkça ve güvenlik güvencesine daha fazla güvenin varsa, bunu giderek daha geniş bir kullanıcı grubuna bırakabilirsiniz.

Bakım aşaması

Bu aşamanın amacı, güvenlik duruşunun zaman içinde çürümemesini sağlamaktır. SDLC sürekli çevik bir işlemdir. Gereksinimler zaman içinde değiştiği için, önceki aşamalarda kapsanan kavramlar bu aşamaya uygulanır.

Sürekli gelişim. Power Platform tarafından sunulan yeni özelliklerin yanı sıra kod incelemeleri, geri bildirimler, öğrenilen dersler ve değişen tehditleri dikkate alarak yazılım geliştirme sürecinin güvenliğini sürekli olarak değerlendirin ve iyileştirin.

Eski veya artık kullanılmayan eski varlıkların yetkisini alın. Böylece uygulamanın yüzey alanı azalır.

Bakım ayrıca olay düzeltmeleri de içerir. Üretimde sorun bulunursa yinelenmemeleri için sorunların hemen süreçle geri tümleştirilmesi gerekir.

Tehdit manzarasına uyması için güvenli kodlama uygulamalarınızı sürekli olarak iyileştirin.

Microsoft Power Platform'da SDL

Power Platform, güvenli tasarım kültürü ve metodolojisi üzerine kurulmuştur. Kültür ve metodoloji, Microsoft'un endüstri lideri Güvenlik Geliştirme Yaşam Döngüsü (SDL) ve Tehdit Modelleme uygulamaları ile sürekli olarak güçlendirilmektedir.

Tehdit Modellemesi gözden geçirme süreci, tehditlerin tasarım aşamasında tanımlanmasını, etkisini azaltmayı ve etkilerinin azaltıldığından emin olmak üzere doğrulanmasını sağlar.

Tehdit Modelleme, ayrıca sürekli düzenli incelemelerde zaten etkin olan hizmetlerdeki tüm değişiklikleri de hesaplar. STRIDE modeline dayanarak, güvenli olmayan tasarımlarla ilgili en yaygın sorunların ele alınmasına yardımcı olur.

Microsoft'un SDL hizmeti, OWASP Yazılım Güvencesi Olgunluk Modeli (SAMM) ile eşdeğerdir. Her ikisi de, güvenli tasarımın web uygulama güvenliğinin ayrılmaz parçası olduğu yaklaşımıyla oluşturulmuştur. Daha fazla bilgi için bkz OWASP Başlıca 10 Risk: Power Platform'da Azaltmalar.

Power Platform kolaylaştırma

Microsoft Güvenlik Geliştirme Yaşam Döngüsü (SDL), geliştirme yaşam döngüsü için uygulayabileceğiniz güvenli uygulamaları önerir. Daha fazla bilgi için bkz. Microsoft güvenlik geliştirme yaşam döngüsü.

DevHub için Defender ve SAST (Statik Uygulama Güvenlik Sınaması) araçları, GitHub Advanced Security ve.bir Azure DevOps parçası olarak dahil edilir. Bu araçlar, organizasyonunuzun bir güvenlik puanını izlemenize yardımcı olabilir.

Çözüm denetleyicisi özelliğini kullanarak, bir zengin statik çözümleme denetim çözümlerinizi en iyi yöntem kuralları kümesiyle gerçekleştirebilir ve hızlı bir şekilde bu soruna neden olan desenleri belirlemek. Bkz. Çözüm denetleyicisi çözümünüzü doğrulamak için kullanın.

Güvenlik denetim listesi

Eksiksiz bir öneri kümesine bakın.