Uygulama gizli bilgilerini korumaya yönelik mimari stratejiler

Bu Azure Well-Architected Framework Güvenliği denetim listesi önerisi için geçerlidir:

SE:09 Depolamalarını güçlendirerek, erişim ve işlemeyi kısıtlayarak ve bu eylemleri denetleyerek uygulama gizli dizilerini koruyun. Acil durumlar için rotasyonları uyarlayabilen güvenilir ve düzenli bir rotasyon süreci çalıştırın.

Bu kılavuzda, uygulamalarda hassas bilgilerin güvenliğini sağlamaya yönelik öneriler açıklanmaktadır. Gizli dizilerin düzgün yönetilmesi, uygulamanızın, iş yükünüzün ve ilişkili verilerinizin güvenliğini ve bütünlüğünü korumak için çok önemlidir. Gizli dizilerin yanlış işlenmesi veri ihlallerine, hizmet kesintisine, mevzuat ihlallerine ve diğer sorunlara yol açabilir.

API anahtarları, Açık Yetkilendirme (OAuth) belirteçleri ve Secure Shell (SSH) anahtarları gibi kimlik bilgileri gizli dizilerdir. İstemci tarafı OAuth belirteçleri gibi bazı kimlik bilgileri çalışma zamanında dinamik olarak oluşturulabilir. Dinamik gizli bilgilerin geçici doğasına rağmen güvende tutulması gerekir. Sertifikalar ve dijital imza anahtarları gibi gereksiz bilgiler de hassas olabilir. Uyumluluk gereksinimleri, normalde gizli bilgi olarak kabul edilmeyen yapılandırma ayarlarının uygulama sırları olarak görülmesine neden olabilir.

Terminology 

Terim Tanım
Sertifikalar Şifreleme veya şifre çözme için ortak anahtarları tutan dijital dosyalar.
Credentials bir iletişim kanalında yayımcının veya tüketicinin kimliğini doğrulamak için kullanılan bilgiler.
Kimlik bilgisi taraması Gizli bilgilerin içermediğinden emin olmak amacıyla kaynak kodu doğrulama süreci.
Encryption Verilerin okunamaz hale getirildiği ve gizli kodla kilitlendiği işlem.
Key Şifrelenmiş verileri kilitlemek veya kilidini açmak için kullanılan gizli kod.
En az ayrıcalıklı erişim bir iş işlevini tamamlamak için bir izin kümesini en aza indirmeyi hedefleyen Sıfır Güven ilkesi.
İdare edilen kimlik Kaynaklara atanan ve Azure tarafından yönetilen bir kimlik.
Gizli olmayan Sızdırıldığında iş yükünün güvenlik seviyesini tehlikeye atmayan bilgiler.
Rotasyon Gizli bilgileri düzenli olarak güncelleştirme işlemi, bunlar tehlikeye atıldığında yalnızca sınırlı bir süre için erişilebilir olmasını sağlar.
Gizli sistemin iş yükü bileşenleri arasındaki iletişimi kolaylaştıran gizli bir bileşeni. Sızdırılırsa, gizli bilgiler güvenlik ihlaline neden olabilir.
X.509 Ortak anahtar sertifikalarının biçimini tanımlayan bir standart.

Önemli

Gayri gizli şeylere gizli şeylermiş gibi davranma. Gizli bilgiler, gizli olmayan bilgiler için gereksiz olan ve ek maliyetlere yol açabilecek operasyonel titizlik gerektirir.

Uygulamanın kullandığı API'ler için URL'ler gibi uygulama yapılandırma ayarları, güvenli olmayanlara örnektir. Bu bilgiler uygulama kodu veya uygulama gizli dizileriyle birlikte depolanmamalıdır. Bu ayarları yönetmek için Azure Uygulama Yapılandırması gibi ayrılmış bir yapılandırma yönetim sistemi kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz. Azure Uygulama Yapılandırması nedir?.

Gizli bilgi yönetimi stratejiniz, gizli bilgileri mümkün olduğunca en aza indirmeli ve platformun özelliklerinden faydalanarak bunları ortama entegre etmelidir. Örneğin, uygulamanız için yönetilen kimlik kullanıyorsanız, erişim bilgileri bağlantı dizelerine eklenmemiştir ve bilgileri bir yapılandırma dosyasında depolamak güvenlidir. Gizli bilgileri depolamadan ve yönetmeden önce aşağıdaki önemli hususları göz önünde bulundurun:

  • Oluşturulan gizli bilgiler, katı erişim denetimleriyle güvenli depolamada tutulmalıdır.

  • Gizli anahtar döndürme proaktif bir işlemdir, geri alma ise tepkiseldir.

  • Yalnızca güvenilen kimliklerin sır(lar)a erişimi olmalıdır.

  • Gizli bilgilere erişimi incelemek ve doğrulamak için bir denetim kaydı tutmalısınız.

Kimlik hırsızlığını önlemeye, reddedilmesini önlemeye ve gereksiz bilgilerin açığa çıkmasını en aza indirmeye yardımcı olmak için bu noktaların etrafında bir strateji oluşturun.

İş yükü gizli bilgileri yönetme

Mümkünse gizli bilgi yaratmaktan kaçının. Sorumluluğu platforma devretmenin yollarını bulun. Örneğin, kimlik bilgilerini işlemek için platformun yerleşik yönetilen kimliklerini kullanın. Daha az gizli bilgi, saldırı yüzeyinin azalmasına ve gizli bilgi yönetimine daha az zaman harcanmasına neden olur.

Anahtarların üç ayrı rolü olması önerilir: kullanıcı, yönetici ve denetçi. Rol ayrımı, yalnızca güvenilen kimliklerin uygun izin düzeyine sahip gizli bilgilere erişiminin olmasını sağlamaya yardımcı olur. Geliştiricileri, yöneticileri ve diğer ilgili personeli gizli dizi yönetiminin önemi ve en iyi güvenlik uygulamaları hakkında eğitin.

Önceden paylaşılan anahtarlar

Her tüketici için ayrı anahtarlar oluşturarak erişimi denetleyebilirsiniz. Örneğin, bir istemci önceden paylaşılan bir anahtar kullanarak üçüncü taraf API ile iletişim kurar. Başka bir istemcinin aynı API'ye erişmesi gerekiyorsa, başka bir anahtar kullanması gerekir. İki tüketici aynı erişim desenlerine veya rollere sahip olsa bile anahtarları paylaşmayın. Tüketici kapsamları zaman içinde değişebilir ve bir anahtar paylaşıldıktan sonra izinleri bağımsız olarak güncelleştiremez veya kullanım düzenlerini ayırt edemeyebilirsiniz. Ayrı erişim, iptali de kolaylaştırır. Bir tüketicinin anahtarı tehlikeye atılırsa, diğer tüketicileri etkilemeden bu anahtarı iptal etmek veya döndürmek daha kolaydır.

Bu kılavuz farklı ortamlar için geçerlidir. Aynı anahtar hem üretim öncesi hem de üretim ortamları için kullanılmamalıdır. Önceden paylaşılan anahtarlar oluşturmak sizin sorumluluğundaysa, birden çok istemciyi desteklemek için birden çok anahtar oluşturduğunuzdan emin olun.

Daha fazla bilgi için bkz. kimlik ve erişim yönetimi için öneriler.

Gizli depolama

Gizli bilgileri sağlamlaştırılmış bir ortamda depolamak, beklerken ve aktarılırken şifrelemek ve gizli bilgilere erişimi ve değişiklikleri denetlemek için Azure Key Vault gibi bir gizli bilgi yönetim sistemi kullanın. Uygulama gizli dizilerini depolamanız gerekiyorsa, kolay döndürme için bunları kaynak kodun dışında tutun.

Sertifikalar yalnızca Key Vault'ta veya işletim sisteminin sertifika deposunda depolanmalıdır. Örneğin, bir X.509 sertifikasını PFX dosyasında veya diskte depolamak önerilmez. Daha yüksek bir güvenlik düzeyine ihtiyacınız varsa yazılım tabanlı gizli dizi depoları yerine donanım güvenlik modülü (HSM) özelliklerine sahip sistemleri seçin.

Ödünleşim: HSM çözümleri daha yüksek maliyetle sunulur. Eklenen güvenlik katmanları nedeniyle uygulama performansı üzerinde bir etki de görebilirsiniz.

Ayrılmış gizli dizi yönetim sistemi, uygulama gizli dizilerinin depolanmasını, dağıtılmasını ve erişimin denetlenmesini kolaylaştırır. Gizli depolara yalnızca yetkili kimlikler ve hizmetler erişebilmelidir. Sisteme erişim izinler aracılığıyla kısıtlanabilir. İzinleri atarken her zaman en az ayrıcalıklı yaklaşımı uygulayın.

Ayrıca gizli düzeydeki erişimi denetlemeniz gerekir. Her gizli anahtarın yalnızca tek bir kaynak kapsamına erişimi olmalıdır. Bir bileşenin yalnızca ihtiyaç duyduğu gizli bilgilere erişebilmesi için yalıtım sınırları oluşturun. Yalıtılmış bir bileşenin güvenliği tehlikeye atılırsa, diğer gizli bilgilerin ve potansiyel olarak iş yükünün tamamının kontrolünü ele geçiremez. Gizli bilgileri yalıtma yollarından biri birden çok anahtar kasası kullanmaktır. Ek anahtar kasaları oluşturmak için ek maliyet yoktur.

Gizli anahtarlara erişim için denetim ve izleme uygulayın. Gizli bilgilere kimin ne zaman eriştiğini ve yetkisiz veya şüpheli etkinlikleri belirlemek için günlük tutun. Güvenlik açısından günlüğe kaydetme hakkında bilgi için bkz. Güvenlik izleme ve tehdit algılama önerileri.

Gizli döndürme işlemi

Gizli hijyeni koruyan bir süreç var. Bir sırrın uzun ömürlü olması, bu sırrın yönetimini etkiler. Saldırı vektörlerini azaltmak için gizli diziler kullanımdan kaldırılmalı ve yeni gizli dizilerle mümkün olduğunca sık değiştirilmelidir.

OAuth erişim belirteçlerini, sürelerini dikkate alarak özenle yönetin. Pozlama penceresinin daha kısa bir süreye ayarlanması gerekip gerekmediğini düşünün. Yenileme belirteçleri, uygulamaya sınırlı maruz kalmayla güvenli bir şekilde depolanmalıdır. Yenilenen sertifikalar da yeni bir anahtar kullanmalıdır. Yenileme belirteçleri hakkında bilgi için bkz. Güvenli OAuth 2.0 Adına yenileme belirteçleri.

Gizli bilgileri, kullanım ömürlerinin sona erdiği, artık iş yükü tarafından kullanılmadığı veya güvenlik ihlali yaşandığı durumlarda değiştirin. Buna karşılık, acil bir durum olmadıkça etkin gizli bilgileri kullanımdan kaldırmayın. Erişim günlüklerini görüntüleyerek bir sırrın durumunu belirleyebilirsiniz. Gizli dizi döndürme işlemleri iş yükünün güvenilirliğini veya performansını etkilememelidir. Sorunsuz değişim için gizli bilgilerde, tüketicilerde ve erişim yöntemlerinde yedekliliği içeren stratejileri kullanın.

Azure Depolama'nın döndürmeyi nasıl işlediği hakkında daha fazla bilgi için bkz. Hesap erişim anahtarlarını yönetme.

Döndürme işlemleri, herhangi bir insan etkileşimi olmadan otomatik hale getirilmeli ve dağıtılmalıdır. Gizli bilgileri, dönüşüm kavramlarını yerel olarak destekleyen bir gizli bilgi yönetimi deposunda depolamak, bu operasyonel görevi basitleştirebilir.

İş yükü gizli bilgilerini güvenli bir şekilde kullanın

Bir gizli bilgi oluşturucu veya operatörü olarak, gizli bilgileri güvenli bir şekilde dağıtabilmeniz gerekir. Birçok kuruluş, hem kuruluş içinde hem de iş ortaklarıyla gizli bilgileri güvenli bir şekilde paylaşmak için araçlar kullanır. Bir araç olmadığında, kimlik bilgilerini yetkili alıcılara düzgün bir şekilde teslim etme işlemine sahip olun. Olağanüstü durum kurtarma planlarınız, gizli bilgilerin kurtarılması prosedürlerini içermelidir. Anahtarın gizliliğinin ihlal edildiği veya sızdırıldığı ve isteğe bağlı olarak yeniden üretilmesi gereken durumlar için bir süreç oluşturun. Gizli bilgileri kullanırken güvenlik için aşağıdaki en iyi uygulamaları dikkate alın:

Sabit kodlamayı önleme

Uygulama kodu, yapılandırma dosyaları ve derleme dağıtım işlem hatları gibi kod yapıtlarında gizli dizileri statik metin olarak sabit kodlamayın. Gizli bilgiler okuma erişimi olan herkesin ulaşabileceği şekilde açıkta olduğundan, bu yüksek riskli uygulama kodu savunmasız hale getirir.

Kimlik bilgilerini depolama gereksinimini ortadan kaldırmak için yönetilen kimlikleri kullanarak bu durumdan kaçınabilirsiniz. Uygulamanız, kimlik sağlayıcısı (IdP) aracılığıyla diğer kaynaklarda kimlik doğrulaması yapmak için atanmış kimliğini kullanır. Gerçek şifrelerin yanlışlıkla açığa çıkmasını önlemek için geliştirme ortamlarında sahte şifrelerle üretim dışı ortamlar test edin.

Uygulama kodunuzda ve derleme öğelerinizde açığa çıkan gizli bilgileri düzenli aralıklarla algılayan araçları kullanın. Bu araçları, kaynak kodu işlemeleri dağıtmadan önce kimlik bilgilerini tarayan Git ön komut kancaları olarak ekleyebilirsiniz. Uygulama günlüklerini düzenli olarak gözden geçirip temizleyerek gizli bilgilerin yanlışlıkla kaydedilmediğinden emin olun. Ayrıca, eş gözden geçirmeleri aracılığıyla algılamayı güçlendirebilirsiniz.

Uyarı

Tarama araçları bir gizli bilgi bulursa, bu gizli bilgi kompromize olmuş olarak kabul edilmelidir. İptal edilmelidir.

Gizli dizi döndürmeye yanıt verme

İş yükü sahibi olarak, kullanıcılara en az kesintiyle yeni gizli anahtarları dahil edebilmeniz için gizli anahtar döndürme planını ve ilkelerini anlamanız gerekir. Gizli anahtar döndürüldüğünde, eski anahtar geçerli olmayabilir, ancak yeni anahtar yerleştirilmeden önce bir zaman aralığı olabilir. Bu pencere sırasında, uygulamanın ulaşmaya çalıştığı bileşen istekleri kabul etmez. Kodda yeniden deneme mantığı oluşturarak bu sorunları en aza indirebilirsiniz. Ayrıca, birbirini etkilemeden güvenli bir şekilde değiştirilebilen birden çok kimlik bilgisine sahip olmanıza olanak sağlayan eşzamanlı erişim desenlerini de kullanabilirsiniz.

operasyon ekibiyle çalışın ve değişiklik yönetimi sürecinin bir parçası olun. Uygulamanın artık gerekli olmayan kimlik bilgilerini kullanan bir bölümünü devre dışı bıraktığınızda kimlik bilgisi sahiplerine bildirmeniz gerekir.

Gizli anahtar alma ve yapılandırmayı, otomatik dağıtım hattınıza entegre edin. Gizli bilgi alma, dağıtım sırasında gizli bilgilerin otomatik olarak çekilmesini sağlamaya yardımcı olur. Gizli dizileri çalışma zamanında uygulama koduna veya yapılandırmasına eklemek için gizli dizi ekleme desenlerini de kullanabilirsiniz. Bu da gizli dizilerin yanlışlıkla günlüklere veya sürüm denetimine açık olmasını önler.

Azure hizmetleri yönetimi

Key Vault kullanarak gizli bilgileri depolayın. Gizli bilgileri Azure gizli yönetim sistemi, Key Vault, Azure Managed HSM ve diğer konumlarda depolayın. Daha fazla bilgi için bkz. Doğru anahtar yönetimi çözümünü seçme.

Kimlik tabanlı erişim denetimini tümleştirme. Microsoft Entra Kimliği ve yönetilen kimlikler gizli bilgilere olan ihtiyacı en aza indirmeye yardımcı olur. Microsoft Entra ID, anahtar döndürmeyi, anomalileri ve daha fazlasını işlemeye yönelik yerleşik mekanizmalarla erişim denetimi için son derece güvenli ve kullanılabilir bir deneyim sunar.

Belirli bir kapsamdaki kullanıcılara, gruplara ve uygulamalara izin atamak için Azure rol tabanlı erişim denetimini (RBAC) kullanın.

Anahtar kasaları, izinler ve sırları denetlemek için bir erişim modeli kullanın. Daha fazla bilgi için bkz. Access modeline genel bakış.

Gizli dizi açığa çıkarma algılamayı uygulama. şüpheli etkinliği algılayan ve uygulama kodunuzda kullanıma sunulan anahtarları düzenli aralıklarla denetleen işlemleri iş yükünüzle tümleştirin. Bazı seçenekler şunlardır:

Uygulama yapılandırma dosyalarında veya sürekli tümleştirme ve sürekli teslim (CI/CD) işlem hatlarında herhangi bir ortam türü için anahtarları ve gizli dizileri depolamayın. Geliştiriciler, kimlik bilgilerine erişmek için Visual Studio Bağlı Hizmetleri'ni veya yalnızca yerel dosyaları kullanmalıdır.

Güvenlik denetim listesi

Öneriler kümesinin tamamına bakın.