Genel istemci ve gizli istemci uygulamaları

Microsoft Kimlik Doğrulama Kitaplığı (MSAL) iki tür istemci tanımlar; genel istemciler ve gizli istemciler. İstemci, bir kimlik sağlayıcısı tarafından atanan benzersiz tanımlayıcıya sahip bir yazılım varlığıdır. İstemci türleri, yetkilendirme sunucusuyla güvenli bir şekilde kimlik doğrulaması yapma ve erişim kapsamında bir kullanıcıya erişilmemesi veya bilinmemesi için hassas, kimlik doğrulama bilgilerini tutma özellikleriyle ayırt edilir.

Genel istemci uygulamaları Gizli istemci uygulamaları
Desktop app Masaüstü uygulaması Web app Web uygulaması
Browserless API Tarayıcısız API Web API Web API'si
Mobile app Mobil uygulama Daemon/service Hizmet/daemon

Genel istemci ve gizli istemci yetkilendirmesi

Belirli bir istemcinin genel veya gizli niteliğini incelerken, bu istemcinin kimliğini yetkilendirme sunucusuna kanıtlama becerisini değerlendiriyoruz. Yetkilendirme sunucusunun erişim belirteçleri vermek için istemcinin kimliğine güvenebilmesi gerektiğinden bu önemlidir.

  • Genel istemci uygulamaları masaüstü, tarayıcısız API'ler, mobil veya istemci tarafı tarayıcı uygulamaları gibi cihazlarda çalışır. Yalnızca kullanıcı adına web API'lerine erişebildikleri için uygulama gizli dizilerini güvenli bir şekilde saklamalarına güvenemezler. Belirli bir uygulamanın kaynak veya derlenmiş bayt kodu okunabileceği, ayrıştırılabildiği veya güvenilmeyen taraflar tarafından başka bir şekilde denetlenebildiği her yere iletildiğinde, genel bir istemcidir. Ayrıca yalnızca genel istemci akışlarını desteklediği ve yapılandırma zamanı gizli dizilerini barındıramadıkları için istemci gizli dizileri olamaz.

  • Gizli istemci uygulamaları web uygulamaları , web API uygulamaları veya hizmet/daemon uygulamaları gibi sunucularda çalışır. Kullanıcılar veya saldırganlar tarafından erişimi zor kabul edilir ve bu nedenle kimlik kanıtı almak için yapılandırma zamanı gizli dizilerini yeterli şekilde tutabilirler. İstemci kimliği web tarayıcısı aracılığıyla kullanıma sunulur, ancak gizli dizi yalnızca arka kanala geçirilir ve hiçbir zaman doğrudan gösterilmez.

Gizli diziler ve kimlik kanıtlamadaki önemi

Aşağıda, bir istemcinin kimliğini yetkilendirme sunucusuna nasıl kanıtlayabileceğine ilişkin bazı örnekler verilmiştir:

  • Azure kaynakları için yönetilen kimlikler – Yalnızca uygulama kimlik doğrulaması senaryoları için, Azure'da yerleşik olarak bulunan uygulama ve hizmet geliştiricileri, gizli dizi yönetimi, döndürme ve korumayı platformun kendisine boşaltma seçeneğine sahiptir. Yönetilen kimliklerle kimlikler Azure kaynaklarıyla sağlanır ve silinir ve Genel Yönetici istrator dahil olmak üzere hiç kimse temel alınan kimlik bilgilerine erişemez. Yönetilen kimlikleri kullanarak gizli dizilerin sızdırılma riskini önleyebilir ve sağlayıcının sizin için güvenliği ele almasını sağlayabilirsiniz.
  • İstemci kimliği ve gizli dizi – Bu düzende, bir istemci kaydedildiğinde yetkilendirme sunucusu tarafından bir değer çifti oluşturulur. İstemci kimliği, uygulamayı tanımlayan genel bir değerdir, istemci gizli anahtarı ise uygulamanın kimliğini kanıtlamak için kullanılan gizli bir değerdir.
  • X.509 gibi standartları içeren bir sertifika – Ortak Anahtar Altyapısının (PKI) sahip olduğunu kanıtlamak, İnternet üzerinden güvenli iletişim sağlayan ve internet gizliliğinin omurgasını oluşturan temel teknolojidir. PKI, çevrimiçi iletişimde yer alan tarafların kimliğini doğrulayan dijital sertifikalar vermek için kullanılır ve web trafiğinin güvenliğini sağlamak için yaygın olarak kullanılan HTTPS gibi protokolleri destekleyen temel teknolojidir. Benzer şekilde sertifikalar, hizmetler arasında karşılıklı kimlik doğrulamasını etkinleştirerek Azure'da hizmet-hizmet (S2S) iletişiminin güvenliğini sağlamak için kullanılabilir. Bu, her hizmetin kimliğini kanıtlamanın bir aracı olarak diğerine bir sertifika sunmayı içerir.
  • İmzalı onayların sunulması – İş yükü kimlik federasyonunda kullanılan imzalı onaylar, Microsoft Entra korumalı kaynakları çağırmak üzere erişim belirteçleri almak için Microsoft kimlik platformu güvenilir bir üçüncü taraf kimlik sağlayıcısı belirtecinin değişimini sağlar. İş yükü kimlik federasyonu, Azure Kubernetes Service, Amazon Web Services EKS, GitHub Actions ve daha fazlası gibi çeşitli federasyon senaryolarını etkinleştirmek için kullanılabilir.

İstemci kimliğini kanıtlamak ne zaman önemlidir?

Hassas verilere veya kaynaklara erişim vermeden önce istemci uygulamasının hem orijinalliğini hem de yetkilendirmesini doğrulamaya ihtiyaç duyulduğunda istemci kimliğinin kanıtlanması önemlidir. Bazı Örnekler:

  • API erişimini denetleme – Tarifeli bir API'niz varsa (örneğin faturalama için) veya hassas verileri veya kaynakları kullanıma sunarsa erişim vermeden önce istemcinin kimliğini doğrularsınız. Örneğin, api'ye yalnızca yetkili uygulamaların erişimi olduğundan ve tarifeli API kullanımı için doğru müşterinin faturalandırıldığından emin olunduğunda bu önemlidir.
  • Kullanıcıları uygulama kimliğine bürünmeye karşı koruma – Hizmet tarafından dağıtılan, hassas verilere veya hizmetlere erişen, kullanıcıya yönelik bir uygulamanız (arka uç tabanlı bir web uygulaması gibi) varsa, söz konusu uygulama tarafından kullanılan kaynakları korumak için istemci gizli dizileri kullanmak kötü aktörlerin kimlik avı kullanıcıları için meşru bir istemcinin kimliğine bürünmesini ve verileri veya kötüye kullanımın erişimini silmesini engelleyebilir.
  • S2S iletişimi : Birbiriyle iletişim kurması gereken birden çok arka uç hizmetiniz (örneğin aşağı akış API'leri) varsa, işlevlerini gerçekleştirmek için yalnızca gerekli kaynaklara erişme yetkisine sahip olduklarından emin olmak için her hizmetin kimliğini doğrulayabilirsiniz.

Genel olarak, istemci kimliğinin onaylanması, bir kullanıcıdan bağımsız veya buna ek olarak bir istemcinin kimliğini doğrulamaya ve yetkilendirmeye ihtiyaç duyulduğunda önemlidir.

Gizli istemciler: Gizli dizileri yönetmek için en iyi yöntemler

Dağıtım ve güvenliği basitleştirmek için yönetilen kimlikleri kullanma – Yönetilen kimlikler , Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanırken uygulamaların kullanması için Microsoft Entra Id'de otomatik olarak yönetilen bir kimlik sağlar. Uygulamalar, kimlik bilgilerini yönetmek zorunda kalmadan Microsoft Entra Id yalnızca uygulama belirteçlerini almak için yönetilen kimlikleri kullanabilir. Bu, gizli dizi yönetimiyle ilişkili karmaşıklıkların çoğunu ortadan kaldırırken güvenliğinizi ve dayanıklılığınızı artırır. Yönetilen kimlikler kullanıyorsanız, aşağıdaki en iyi yöntemlerin tümü sizin için zaten ele alınmamıştır.

Güvenli depolamayı kullanma – İstemci gizli dizilerini Key Vault veya şifrelenmiş yapılandırma dosyası gibi güvenli bir konumda depolayın. İstemci gizli dizilerini düz metin olarak veya sürüm denetim sistemlerine iade edilmiş dosyalar olarak depolamaktan kaçının.

Erişimi sınırla - İstemci gizli dizilerine erişimi yalnızca yetkili personelle sınırlayın. İstemci gizli dizilerine erişimi yalnızca işletimsel görevlerini gerçekleştirmesi gereken kişilerle kısıtlamak için rol tabanlı erişim denetimini kullanın.

İstemci gizli dizilerini döndürme – İstemci gizli dizilerinin gerektiği gibi veya zamanlanmış olarak döndürülerek yetkisiz erişim elde etmek için gizliliği tehlikeye atılmış bir gizli dizi kullanılması riski en aza indirgenebilir. Uygulandığında, bir anahtarın kullanımda kalmasının önerildiği zaman aralığı, kullanılan şifreleme algoritmasının gücünden ve/veya standartlara veya mevzuat uyumluluğu uygulamalarına bağlılığından etkilenir.

Uzun gizli dizileri ve güçlü şifrelemeyi kullanma – Önceki noktayla yakından ilgili olan, hem aktarımdaki (kablodaki) hem de bekleyen (diskte) veriler için güçlü şifreleme algoritmaları kullanmak, yüksek entropi gizli dizilerinin deneme yanılma olasılığı düşük kalmasını sağlamaya yardımcı olur. AES-128 (veya üzeri) gibi algoritmalar bekleyen verilerin korunmasına yardımcı olabilirken, RSA-2048 (veya üzeri) aktarımdaki verilerin verimli bir şekilde korunmasına yardımcı olabilir. Siber güvenliğin sürekli gelişen doğası nedeniyle, güvenlik uzmanlarınıza danışmak ve algoritma seçiminizi düzenli aralıklarla gözden geçirmek her zaman en iyi uygulamadır.

Gizli dizileri sabit kodlamaktan kaçının – Kaynak kodunda istemci gizli dizilerini sabit kodlamayın. Kaynak kodunda gizli dizilerden kaçınmak, kaynak kodunuz için erişim elde eden kötü aktörlerin değerini en aza indirebilirsiniz. Ayrıca bu tür gizli dizilerin yanlışlıkla güvenli olmayan depolara gönderilmesini veya kaynak erişimi olan ancak gizli dizi erişimi olmayan proje katılımcılarının kullanımına sunulmasını engelleyebilir.

Sızdırılan gizli diziler için depoları izleme – Kaynak koduyla ilgilenirken hatalı iadelerin gerçekleşmesi talihsiz bir gerçektir. Git ön işleme kancaları, yanlışlıkla yapılan iadeleri önlemenin önerilen bir yoludur, ancak izlemenin yerini de almaz. Depoların otomatik olarak izlenmesi, sızdırılan gizli dizileri belirleyebilir ve güvenliği aşılmış kimlik bilgilerini döndürmeye yönelik bir planla güvenlik olaylarının azaltılmasına yardımcı olabilir.

Şüpheli etkinliği izleme – İstemci gizli dizileriyle ilgili şüpheli etkinlikler için günlükleri ve denetim izlerini izleyin . Mümkün olduğunda, personeli bilgilendirmek ve istemci gizli dizileriyle ilgili olağan dışı etkinliklere yönelik olasılıkları tanımlamak için otomatik uyarıları ve yanıt işlemlerini kullanın.

Uygulamalarınızı istemci gizliliği göz önünde bulundurularak tasarla – Güvenlik modeliniz yalnızca zincirdeki en zayıf bağlantı kadar güçlüdür. Gizli istemcideki güvenlik kimlik bilgilerini veya belirteçleri genel istemcilere iletmeyin; bu, gizli istemcinin kimliğine bürünmeye olanak tanıyarak gizli gizli verileri genel istemciye taşıyabilir.

Güvenilir kaynaklardan gelen güncel kitaplıkları ve SDK'ları kullanma – Microsoft kimlik platformu, uygulamalarınızı güvende tutarken üretkenliğinizi artırmak için tasarlanmış çeşitli istemci ve sunucu SDK'ları ve ara yazılım sağlar. Microsoft.Identity.Web gibi kitaplıklar, Microsoft kimlik platformu web uygulamalarına ve API'lere kimlik doğrulaması ve yetkilendirme eklemeyi basitleştirir. Bağımlılıkların güncel tutulması, uygulamalarınızın ve hizmetlerinizin en son güvenlik yeniliklerinden ve güncelleştirmelerinden yararlanmasını sağlamaya yardımcı olur.

İstemci türlerini ve bunların özelliklerini karşılaştırma

Genel ve gizli istemci uygulamaları arasındaki bazı benzerlikler ve farklılıklar şunlardır:

  • Her iki uygulama türü de bir kullanıcı belirteci önbelleği tutar ve bir belirteci sessizce alabilir (belirteç önbellekte mevcut olduğunda). Gizli istemci uygulamaları, uygulamanın kendisi tarafından alınan belirteçler için bir uygulama belirteci önbelleğine de sahiptir.
  • Her iki uygulama türü de kullanıcı hesaplarını yönetebilir ve kullanıcı belirteci önbelleğinden bir hesap alabilir, tanımlayıcısından bir hesap alabilir veya bir hesabı kaldırabilir.
  • MSAL'de genel istemci uygulamalarının, ayrı kimlik doğrulama akışları aracılığıyla belirteç almanın dört yolu vardır. Gizli istemci uygulamalarının belirteç almak için yalnızca üç yolu ve kimlik sağlayıcısı yetkilendirme uç noktasının URL'sini hesaplamanın bir yolu vardır. İstemci kimliği , uygulamanın oluşturulması sırasında bir kez geçirilir ve uygulama belirteç edindiğinde yeniden geçirilmesi gerekmez. Daha fazla bilgi için bkz . Belirteç alma.

Genel istemciler, korumalı kaynaklara kullanıcı tarafından atanan erişimi etkinleştirmek için kullanışlıdır, ancak kendi uygulama kimliklerini kanıtlayamazlar. Gizli istemciler ise hem kullanıcı hem de uygulama kimlik doğrulaması ve yetkilendirme gerçekleştirebilir ve gizli dizilerinin genel istemcilerle veya diğer üçüncü taraflarla paylaşılmadığından emin olmak için güvenlik göz önünde bulundurularak derlenmelidir.

S2S iletişimi gibi bazı durumlarda yönetilen kimlikler gibi altyapı, hizmetlerin geliştirilmesini ve dağıtımını basitleştirmeye büyük ölçüde yardımcı olur ve genellikle gizli dizi yönetimiyle ilişkili karmaşıklıkların çoğunu ortadan kaldırır. Yönetilen kimlikler kullanılamadığında, gizli dizilerin güvenliğini sağlamak ve bunlarla ilgili güvenlik olaylarıyla yanıt vermek için ilkelerin, önleyici önlemlerin ve olasılıkların olması önemlidir.

Ayrıca bkz.

Uygulama yapılandırması ve örnek oluşturma hakkında daha fazla bilgi için bkz: