Güvenlik Çerçevesi: Kimlik Doğrulaması | Önlemler

Ürün/Hizmet Makale
Web Uygulaması
Veritabanı
Azure Olay Hub'ı
Azure Güven Sınırı
Service Fabric Güven Sınırı
Kimlik Sunucusu
Makine Güven Sınırı
WCF
Web API'si
Microsoft Entra ID
IoT Alan Ağ Geçidi
IoT Cloud Gateway
Azure Depolama

Web Uygulamasında kimlik doğrulaması yapmak için standart bir kimlik doğrulama mekanizması kullanmayı göz önünde bulundurun

Başlık Ayrıntılar
Bileşen Web Uygulaması
SDL Aşaması Derleme
Geçerli Teknolojiler Genel
Öznitelikler Yok
Referanslar Yok
Ayrıntılar

Kimlik doğrulaması, bir varlığın kimliğini, genellikle kullanıcı adı ve parola gibi kimlik bilgileri aracılığıyla kanıtladığı işlemdir. Dikkate alınabilecek birden çok kimlik doğrulama protokolü vardır. Bunlardan bazıları aşağıda listelenmiştir:

  • İstemci sertifikaları
  • Windows tabanlı
  • Form tabanlı
  • Federasyon - ADFS
  • Federasyon - Microsoft Entra Kimliği
  • Federasyon - Kimlik Sunucusu

Kaynak işlemi tanımlamak için standart bir kimlik doğrulama mekanizması kullanmayı göz önünde bulundurun

Uygulamaların başarısız kimlik doğrulama senaryolarını güvenli bir şekilde işlemesi gerekir

Başlık Ayrıntılar
Bileşen Web Uygulaması
SDL Aşaması Derleme
Geçerli Teknolojiler Genel
Öznitelikler Yok
Referanslar Yok
Ayrıntılar

Kullanıcıların kimliğini açıkça doğrulayan uygulamaların başarısız kimlik doğrulama senaryolarını güvenli bir şekilde işlemesi gerekir. Kimlik doğrulama mekanizmasının aşağıdakileri yapması gerekir:

  • Kimlik doğrulaması başarısız olduğunda ayrıcalıklı kaynaklara erişimi reddetme
  • Başarısız kimlik doğrulaması ve erişim reddedildikten sonra genel bir hata iletisi görüntüleme

Test için:

  • Başarısız oturum açma işlemleri sonrasında ayrıcalıklı kaynakların korunması
  • Başarısız kimlik doğrulaması ve erişim reddedilen olaylarda genel bir hata iletisi görüntülenir
  • Çok fazla sayıda başarısız denemeden sonra hesaplar devre dışı bırakılır

    Adım adım veya uyarlamalı kimlik doğrulamasını etkinleştirme

    Başlık Ayrıntılar
    Bileşen Web Uygulaması
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Yok
    Ayrıntılar

    Kullanıcının hassas bilgilere erişim izni verilmeden önce zorlanması için uygulamanın ek yetkilendirmeye sahip olduğunu doğrulayın (örneğin, sms, e-posta vb. ile OTP gönderme veya yeniden kimlik doğrulaması isteme gibi çok faktörlü kimlik doğrulaması yoluyla adım adım veya uyarlamalı kimlik doğrulaması). Bu kural, bir hesapta veya eylemde kritik değişiklikler yapmak için de geçerlidir

    Bu, kimlik doğrulaması uyarlamasının uygulamanın bağlama duyarlı yetkilendirmeyi doğru bir şekilde uygulayarak örneğin parametre üzerinde değişiklik yapma yoluyla yetkisiz işleme izin vermeyecek şekilde uygulanması anlamına da gelir

    Yönetim arabirimlerinin uygun şekilde kilitlendiğinden emin olun

    Başlık Ayrıntılar
    Bileşen Web Uygulaması
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Yok
    Ayrıntılar İlk çözüm, yönetim arabirimine yalnızca belirli bir kaynak IP aralığından erişim vermektir. Bu çözüm mümkün değilse, yönetim arabiriminde oturum açmak için her zaman bir adım yukarı veya uyarlamalı kimlik doğrulamasını zorunlu tutmanızı öneririz

    Parolayı unuttum işlevlerini güvenli bir şekilde uygulama

    Başlık Ayrıntılar
    Bileşen Web Uygulaması
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Yok
    Ayrıntılar

    İlk şey, parola unutma ve diğer kurtarma yollarının parolanın kendisi yerine süre sınırlı bir etkinleştirme belirteci içeren bağlantı gönderdiğini doğrulamaktır. Bağlantı gönderilmeden önce geçici belirteçlere (sms belirteci, yerel mobil uygulamalar vb.) dayalı ek kimlik doğrulaması da gerekebilir. İkincisi, yeni parola alma işlemi devam ederken kullanıcı hesabını kilitlememeniz gerekir.

    Bu, bir saldırgan otomatik bir saldırıyla kullanıcıları kasıtlı olarak kilitlemeye karar verince hizmet reddi saldırısına yol açabilir. Üçüncüsü, yeni parola isteği devam ettiği her seferde, kullanıcı adı numaralandırmasını önlemek için görüntülemek üzere olduğunuz mesaj genelleştirilmelidir. Dördüncüsü, eski parolaların kullanılmasına her zaman izin verme ve güçlü bir parola ilkesi uygulama.

    Parola ve hesap ilkesinin uygulandığına emin olun

    Başlık Ayrıntılar
    Bileşen Web Uygulaması
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Yok
    Ayrıntılar

    Kuruluş ilkesiyle uyumlu parola ve hesap ilkesi ve en iyi yöntemler uygulanmalıdır.

    Deneme yanılma ve sözlük tabanlı tahminlere karşı korunmak için, kullanıcıların en az 12 karakter uzunluğunda, alfasayısal ve özel karakterler içeren karmaşık parolalar oluşturmasını sağlamak amacıyla güçlü bir parola politikası uygulanmalıdır.

    Hesap kilitleme ilkeleri aşağıdaki şekilde uygulanabilir:

    • Yumuşak kilitleme: Bu, kullanıcılarınızı kaba kuvvet saldırılarına karşı korumak için iyi bir seçenek olabilir. Örneğin, kullanıcı üç kez yanlış parola girdiğinde uygulama, parolasının zorla kırılmasını yavaşlatarak saldırgan için süreci daha az kârlı hale getirmek amacıyla hesabı bir dakika boyunca kilitleyebilir. Bu örnek için sabit kilitleme karşı önlemleri uygulayacak olsaydınız, hesapları kalıcı olarak kilitleyerek bir "DoS" elde edebilirsiniz. Alternatif olarak, uygulama bir OTP (One Time Password) oluşturabilir ve bunu bant dışı (e-posta, sms vb.) kullanıcıya gönderebilir. Başka bir yaklaşım, başarısız denemelerin eşik sayısına ulaşıldıktan sonra CAPTCHA uygulamak olabilir.
    • Sabit kilitleme: Bu tür kilitleme, bir kullanıcının uygulamanıza saldırdığını algıladığınızda ve bir yanıt ekibi adli incelemelerini yapmaya zaman bulana kadar hesabını kalıcı olarak kilitleme yoluyla karşı koyduğunuz her durumda uygulanmalıdır. Bu işlemden sonra kullanıcıya hesabını geri vermeye veya ona karşı daha fazla yasal işlem yapmaya karar verebilirsiniz. Bu tür bir yaklaşım, saldırganın uygulamanıza ve altyapınıza daha fazla nüfuz etmesini engeller.

    Varsayılan ve öngörülebilir hesaplardaki saldırılara karşı savunmak için tüm anahtarların ve parolaların değiştirilebilir olduğunu ve yükleme zamanından sonra 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.

    Kullanıcı adı numaralandırmasını önlemek için denetimler uygulama

    Başlık Ayrıntılar
    Bileşen Web Uygulaması
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Yok
    Adımlar Kullanıcı adı numaralandırmasını önlemek için tüm hata iletileri genelleştirilmelidir. Ayrıca bazen kayıt sayfası gibi işlevlerde bilgi sızıntısını önleyemezsiniz. Burada, bir saldırganın otomatik saldırısını önlemek için CAPTCHA gibi hız sınırlama yöntemlerini kullanmanız gerekir.

    Mümkün olduğunda, SQL Server'a bağlanmak için Windows Kimlik Doğrulamasını kullanın

    Başlık Ayrıntılar
    Bileşen Veritabanı
    SDL Aşaması Derleme
    Geçerli Teknolojiler Yerinde
    Öznitelikler SQL Sürümü - Tümü
    Referanslar SQL Server - Kimlik Doğrulama Modu Seçme
    Adımlar Windows Kimlik Doğrulaması Kerberos güvenlik protokollerini kullanır, güçlü parolalar için karmaşıklık doğrulamasıyla ilgili olarak parola ilkesi zorlaması sağlar, hesap kilitleme desteği sağlar ve parola süre sonunu destekler.

    Mümkün olduğunda SQL Veritabanı bağlanmak için Microsoft Entra kimlik doğrulamasını kullanın

    Başlık Ayrıntılar
    Bileşen Veritabanı
    SDL Aşaması Derleme
    Geçerli Teknolojiler SQL Azure
    Öznitelikler SQL Sürümü - V12
    Referanslar Microsoft Entra kimlik doğrulamasını kullanarak SQL Veritabanı bağlanma
    Adımlar En düşük sürüm: Microsoft Dizin'e karşı Microsoft Entra kimlik doğrulamasını kullanmak için gereken sürüm Azure SQL Veritabanı V12'dir.

    SQL kimlik doğrulama modu kullanıldığında, SQL server'da hesap ve parola ilkesinin zorunlu kılındığından emin olun

    Başlık Ayrıntılar
    Bileşen Veritabanı
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar SQL Server parola politikası
    Adımlar SQL Server Kimlik Doğrulaması kullanılırken, Windows kullanıcı hesaplarına dayanmayan oturum açma bilgileri SQL Server'da oluşturulur. Hem kullanıcı adı hem de parola SQL Server kullanılarak oluşturulur ve SQL Server'da depolanır. SQL Server, Windows parola ilkesi mekanizmalarını kullanabilir. SQL Server'da kullanılan parolalara Windows'ta kullanılan aynı karmaşıklık ve süre sonu ilkelerini uygulayabilir.

    Kapsanan veritabanlarında SQL Kimlik Doğrulaması kullanmayın

    Başlık Ayrıntılar
    Bileşen Veritabanı
    SDL Aşaması Derleme
    Geçerli Teknolojiler Şirket içi, SQL Azure
    Öznitelikler SQL Sürümü - MSSQL2012, SQL Sürümü - V12
    Referanslar Kapsanan Veritabanlarıyla En İyi Güvenlik Yöntemleri
    Adımlar Zorunlu parola ilkesinin olmaması, kapsanan bir veritabanında zayıf kimlik bilgilerinin oluşturulma olasılığını artırabilir. Windows Kimlik Doğrulaması'nından yararlanın.

    SaS belirteçlerini kullanarak cihaz başına kimlik doğrulama kimlik bilgileri kullanın

    Başlık Ayrıntılar
    Bileşen Azure Event Hubs
    SDL Aşaması Derleme
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Event Hubs kimlik doğrulamasına ve güvenlik modeline genel bakış
    Adımlar

    Event Hubs güvenlik modeli, Paylaşılan Erişim İmzası (SAS) belirteçleri ve olay yayımcılarının birleşimini temel alır. Yayımcı adı, belirteci alan DeviceID'yi temsil eder. Bu, oluşturulan belirteçleri ilgili cihazlarla ilişkilendirmeye yardımcı olur.

    Tüm iletiler hizmet tarafında kaynak ile etiketlenir ve yük içi kaynak sahtekarlık girişimlerinin algılanması sağlanır. Cihazların kimliğini doğrularken, her bir cihaz için, benzersiz bir yayımcıya özgü bir SaS (Paylaşılan Erişim İmzası) belirteci oluşturun.

    Azure Yöneticileri için Microsoft Entra çok faktörlü kimlik doğrulamasını etkinleştirme

    Başlık Ayrıntılar
    Bileşen Azure Güven Sınırı
    SDL Aşaması Dağıtım
    Geçerli Teknolojiler Genel
    Öznitelikler Yok
    Referanslar Microsoft Entra çok faktörlü kimlik doğrulaması nedir?
    Adımlar

    çok faktörlü kimlik doğrulaması (MFA), birden fazla doğrulama yöntemi gerektiren ve kullanıcı oturum açma işlemlerine ve işlemlerine kritik bir ikinci güvenlik katmanı ekleyen bir kimlik doğrulama yöntemidir. Aşağıdaki doğrulama yöntemlerinden iki veya daha fazlasını gerektirerek çalışır:

    • Bildiğiniz bir şey (genellikle parola)
    • Sahip olduğunuz bir şey (telefon gibi kolayca çoğaltılamaz güvenilir bir cihaz)
    • Olduğunuz bir şey (biyometrik)

      Service Fabric Kümesine anonim erişimi kısıtlama

      Başlık Ayrıntılar
      Bileşen Service Fabric Güven Sınırı
      SDL Aşaması Dağıtım
      Geçerli Teknolojiler Genel
      Öznitelikler Ortam - Azure
      Referanslar Service Fabric kümesi güvenlik senaryoları
      Adımlar

      Özellikle üzerinde üretim iş yükleri çalıştırıldığında yetkisiz kullanıcıların kümenize bağlanmasını önlemek için kümelerin her zaman güvenliği sağlanmalıdır.

      Service Fabric kümesi oluştururken güvenlik modunun "güvenli" olarak ayarlandığından emin olun ve gerekli X.509 sunucu sertifikasını yapılandırın. "Güvenli olmayan" bir küme oluşturmak, yönetim uç noktalarını genel İnternet'te kullanıma sunarsa anonim kullanıcıların bu kümeye bağlanmasına olanak tanır.

      Service Fabric istemci-düğüm sertifikasının düğüm-düğüm sertifikasından farklı olduğundan emin olun

      Başlık Ayrıntılar
      Bileşen Service Fabric Güven Sınırı
      SDL Aşaması Dağıtım
      Geçerli Teknolojiler Genel
      Öznitelikler Ortam - Azure, Ortam - Tek başına
      Referanslar Service Fabric İstemciden düğüme sertifika güvenliği, İstemci sertifikası kullanarak güvenli bir kümeye bağlanma
      Adımlar

      İstemciden düğüme sertifika güvenliği, küme oluşturulurken Azure portalı, Resource Manager şablonları veya tek başına JSON şablonu aracılığıyla bir yönetici istemci sertifikası ve/veya kullanıcı istemci sertifikası belirtilerek yapılandırılır.

      Belirttiğiniz yönetici istemcisi ve kullanıcı istemci sertifikaları, Düğümden düğüme güvenlik için belirttiğiniz birincil ve ikincil sertifikalardan farklı olmalıdır.

      Service Fabric kümelerinde istemcilerin kimliğini doğrulamak için Microsoft Entra Id kullanma

      Başlık Ayrıntılar
      Bileşen Service Fabric Güven Sınırı
      SDL Aşaması Dağıtım
      Geçerli Teknolojiler Genel
      Öznitelikler Ortam - Azure
      Referanslar Küme güvenlik senaryoları - Güvenlik Önerileri
      Adımlar Azure'da çalışan kümeler, istemci sertifikaları dışında Microsoft Entra Id kullanarak yönetim uç noktalarına erişimin güvenliğini de sağlayabilir. Azure kümelerinde, düğümden düğüme güvenlik için istemcilerin ve sertifikaların kimliğini doğrulamak için Microsoft Entra güvenliği kullanmanız önerilir.

      Service Fabric sertifikalarının onaylı bir Sertifika Yetkilisi'nden (CA) alındığından emin olun

      Başlık Ayrıntılar
      Bileşen Service Fabric Güven Sınırı
      SDL Aşaması Dağıtım
      Geçerli Teknolojiler Genel
      Öznitelikler Ortam - Azure
      Referanslar X.509 sertifikaları ve Service Fabric
      Adımlar

      Service Fabric, düğümlerin ve istemcilerin kimliğini doğrulamak için X.509 sunucu sertifikalarını kullanır.

      Service Fabrics'te sertifikaları kullanırken dikkate alınması gereken bazı önemli şeyler:

      • Üretim iş yüklerini çalıştıran kümelerde kullanılan sertifikalar, doğru yapılandırılmış bir Windows Server sertifika hizmeti kullanılarak oluşturulmalıdır veya onaylı bir Sertifika Yetkilisi'nden (CA) alınmalıdır. CA onaylı bir dış CA veya düzgün yönetilen bir iç Ortak Anahtar Altyapısı (PKI) olabilir
      • Üretimde hiçbir zaman MakeCert.exe gibi araçlarla oluşturulan geçici veya test sertifikalarını kullanmayın
      • Otomatik olarak imzalanan bir sertifika kullanabilirsiniz, ancak bunu üretimde değil yalnızca test kümeleri için yapmalısınız

      Kimlik Sunucusu tarafından desteklenen standart kimlik doğrulama senaryolarını kullanma

      Başlık Ayrıntılar
      Bileşen Kimlik Sunucusu
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Yok
      Adımlar

      Kimlik Sunucusu tarafından desteklenen tipik etkileşimler aşağıda verilmiştir:

      • Tarayıcılar web uygulamalarıyla iletişim kurar
      • Web uygulamaları web API'leriyle iletişim kurar (bazen kendi başlarına, bazen de bir kullanıcı adına)
      • Tarayıcı tabanlı uygulamalar web API'leriyle iletişim kurar
      • Yerel uygulamalar web API'leriyle iletişim kurar
      • Sunucu tabanlı uygulamalar web API'leriyle iletişim kurar
      • Web API'leri web API'leriyle iletişim kurar (bazen kendi başlarına, bazen de bir kullanıcı adına)

      Varsayılan Kimlik Sunucusu belirteç önbelleğini ölçeklenebilir bir alternatifle geçersiz kılma

      Başlık Ayrıntılar
      Bileşen Kimlik Sunucusu
      SDL Aşaması Dağıtım
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Yok
      Adımlar

      IdentityServer'ın basit bir yerleşik bellek içi önbelleği vardır. Bu küçük ölçekli yerel uygulamalar için iyi olsa da, orta katman ve arka uç uygulamaları için aşağıdaki nedenlerle ölçeklendirilmemektedir:

      • Bu uygulamalara aynı anda birçok kullanıcı erişiyor. Tüm erişim belirteçlerinin aynı depoya kaydedilmesi yalıtım sorunları oluşturur ve büyük ölçekte çalışırken zorluklar yaratır: Her biri uygulamanın kendi adına eriştiği kaynaklar kadar çok sayıda belirteci olan birçok kullanıcı, çok sayıda sayı ve çok pahalı arama işlemleri anlamına gelebilir
      • Bu uygulamalar genellikle birden çok düğümün aynı önbelleğe erişmesi gereken dağıtılmış topolojilere dağıtılır
      • Önbelleğe alınan belirteçlerin işlem geri dönüşümleri ve devre dışı bırakma işlemlerine dayanması gerekir
      • Yukarıdaki tüm nedenlerden dolayı, web uygulamaları geliştirirken, varsayılan Kimlik Sunucusu'nun belirteç önbelleğini Azure Yönetilen Redis gibi ölçeklenebilir bir alternatif ile geçersiz kılmayı öneriyoruz

      Dağıtılan uygulamanın ikili dosyalarının dijital olarak imzalandığından emin olun

      Başlık Ayrıntılar
      Bileşen Makine Güven Sınırı
      SDL Aşaması Dağıtım
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Yok
      Adımlar dağıtılan uygulamanın ikili dosyalarının dijital olarak imzalandığından emin olun; böylece ikili dosyaların bütünlüğü doğrulanabilir

      WCF'de MSMQ kuyruklarına bağlanırken kimlik doğrulamasını etkinleştirme

      Başlık Ayrıntılar
      Bileşen WCF
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel, NET Framework 3
      Öznitelikler Yok
      Referanslar MSDN
      Adımlar Msmq kuyruklarına bağlanırken program kimlik doğrulamasını etkinleştiremezse, saldırgan işlenmek üzere kuyruğa anonim olarak ileti gönderebilir. Kimlik doğrulaması, başka bir programa ileti teslim etmek için kullanılan MSMQ kuyruğuna bağlanmak için kullanılmazsa, saldırgan kötü amaçlı anonim bir ileti gönderebilir.

      Örnek

      <netMsmqBinding/> Aşağıdaki WCF yapılandırma dosyasının öğesi, WCF'ye ileti teslimi için MSMQ kuyruğuna bağlanırken kimlik doğrulamasını devre dışı bırakmasını emredmektedir.

      <bindings>
          <netMsmqBinding>
              <binding>
                  <security>
                      <transport msmqAuthenticationMode=""None"" />
                  </security>
              </binding>
          </netMsmqBinding>
      </bindings>
      

      MSMQ'yu, gelen veya giden iletiler için Windows etki alanı veya sertifika kimlik doğrulaması gerektirecek şekilde her zaman yapılandırın.

      Örnek

      <netMsmqBinding/> Aşağıdaki WCF yapılandırma dosyasının öğesi, WCF'ye bir MSMQ kuyruğuna bağlanırken sertifika kimlik doğrulamasını etkinleştirmesi talimatını verir. İstemcinin kimliği X.509 sertifikaları kullanılarak doğrulanır. İstemci sertifikası, sunucunun sertifika deposunda bulunmalıdır.

      <bindings>
          <netMsmqBinding>
              <binding>
                  <security>
                      <transport msmqAuthenticationMode=""Certificate"" />
                  </security>
              </binding>
          </netMsmqBinding>
      </bindings>
      

      WCF-Message clientCredentialType değerini "none" olarak ayarlamayın

      Başlık Ayrıntılar
      Bileşen WCF
      SDL Aşaması Derleme
      Geçerli Teknolojiler .NET Framework 3
      Öznitelikler İstemci Kimlik Bilgisi Türü - Yok
      Referanslar MSDN, Fortify
      Adımlar Kimlik doğrulamasının olmaması, herkesin bu hizmete erişebileceği anlamına gelir. İstemcilerinin kimliğini doğrulamayan bir hizmet tüm kullanıcılara erişime izin verir. Uygulamayı istemci kimlik bilgilerine göre kimlik doğrulaması için yapılandırın. Bu, clientCredentialType iletisi Windows veya Sertifika olarak ayarlanarak yapılabilir.

      Örnek

      <message clientCredentialType=""Certificate""/>
      

      WCF-Transport clientCredentialType değerini 'none' olarak ayarlamayın

      Başlık Ayrıntılar
      Bileşen WCF
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel, .NET Framework 3
      Öznitelikler İstemci Kimlik Bilgisi Türü - Yok
      Referanslar MSDN, Fortify
      Adımlar Kimlik doğrulamasının olmaması, herkesin bu hizmete erişebileceği anlamına gelir. İstemcilerinin kimliğini doğrulamayan bir hizmet, tüm kullanıcıların işlevselliğine erişmesine izin verir. Uygulamayı istemci kimlik bilgilerine göre kimlik doğrulaması için yapılandırın. Bu, clientCredentialType aktarımını Windows veya Sertifika olarak ayarlayarak yapılabilir.

      Örnek

      <transport clientCredentialType=""Certificate""/>
      

      Web API'lerinin güvenliğini sağlamak için standart kimlik doğrulama tekniklerinin kullanıldığından emin olun

      Başlık Ayrıntılar
      Bileşen Web API'si
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar ASP.NET Web API'sinde Kimlik Doğrulaması ve Yetkilendirme, ASP.NET Web API'si ile Dış Kimlik Doğrulama Hizmetleri (C#)
      Adımlar

      Kimlik doğrulaması, bir varlığın kimliğini, genellikle kullanıcı adı ve parola gibi kimlik bilgileri aracılığıyla kanıtladığı işlemdir. Dikkate alınabilecek birden çok kimlik doğrulama protokolü vardır. Bunlardan bazıları aşağıda listelenmiştir:

      • İstemci sertifikaları
      • Windows tabanlı
      • Form tabanlı
      • Federasyon - ADFS
      • Federasyon - Microsoft Entra Kimliği
      • Federasyon - Kimlik Sunucusu

      Başvurular bölümündeki bağlantılar, bir Web API'sinin güvenliğini sağlamak için kimlik doğrulama düzenlerinin her birinin nasıl uygulanabileceğine ilişkin alt düzey ayrıntılar sağlar.

      Microsoft Entra Id tarafından desteklenen standart kimlik doğrulama senaryolarını kullanma

      Başlık Ayrıntılar
      Bileşen Microsoft Entra Kimlik
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Microsoft Entra Id, Microsoft Entra code Samples, Microsoft Entra geliştirici kılavuzu için Kimlik Doğrulama Senaryoları
      Adımlar

      Microsoft Entra ID, OAuth 2.0 ve OpenID Connect gibi endüstri standardı protokoller desteğiyle hizmet olarak kimlik sağlayarak geliştiriciler için kimlik doğrulamasını basitleştirir. Microsoft Entra Id tarafından desteklenen beş birincil uygulama senaryosu aşağıdadır:

      • Web Tarayıcıdan Web Uygulamasına: Kullanıcının Microsoft Entra Id ile güvenliği sağlanan bir web uygulamasında oturum açması gerekir
      • Tek Sayfalı Uygulama (SPA): Kullanıcının Microsoft Entra Id ile güvenliği sağlanan tek sayfalı bir uygulamada oturum açması gerekir
      • Web API'sine Yerel Uygulama: Telefon, tablet veya bilgisayarda çalışan yerel bir uygulamanın Microsoft Entra ID ile güvenliği sağlanan bir web API'sinden kaynak almak için kullanıcının kimliğini doğrulaması gerekir
      • Web Uygulamasından Web API'sine: Bir web uygulamasının Microsoft Entra Id ile güvenliği sağlanan bir web API'sinden kaynak alması gerekir
      • Daemon veya Sunucu Uygulamasından Web API'sine: Microsoft Entra Id ile güvenliği sağlanan bir web API'sinden kaynak almak için web kullanıcı arabirimi olmayan bir daemon uygulaması veya sunucu uygulaması gerekir

      Alt düzey uygulama ayrıntıları için lütfen başvurular bölümündeki bağlantılara bakın

      Varsayılan MSAL belirteci önbelleğini dağıtılmış önbellekle geçersiz kılma

      Başlık Ayrıntılar
      Bileşen Microsoft Entra Kimlik
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar MSAL.NET'de belirteç önbelleği serileştirmesi
      Adımlar

      MSAL'nin (Microsoft Authentication Library) kullandığı varsayılan önbellek bellek içi bir önbellektir ve ölçeklenebilir. Ancak, dağıtılmış belirteç önbelleği gibi alternatif olarak kullanabileceğiniz farklı seçenekler vardır. Bunlar L1/L2 mekanizmalarına sahiptir; burada L1 bellekte, L2 ise dağıtılmış önbellek uygulamasıdır. Bunlar L1 belleği sınırlamak, çıkarma ilkelerini şifrelemek veya ayarlamak için uygun şekilde yapılandırılabilir. Diğer alternatifler redis, SQL Server veya Azure Cosmos DB önbellekleridir. Dağıtılmış belirteç önbelleğinin bir uygulaması şu Öğreticide bulunabilir: ASP.NET Core MVC kullanmaya başlama.

      TokenReplayCache'in MSAL kimlik doğrulama belirteçlerinin yeniden oynatılmasını önlemek için kullanıldığından emin olun

      Başlık Ayrıntılar
      Bileşen Microsoft Entra Kimlik
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Web Uygulamaları için Microsoft Entra Id ile Modern Kimlik Doğrulaması
      Adımlar

      TokenReplayCache özelliği, geliştiricilerin bir belirtecin birden çok kez kullanılamadığını doğrulamak amacıyla belirteçleri kaydetmek için kullanılabilecek bir depo olan bir belirteç yeniden yürütme önbelleği tanımlamasına olanak tanır.

      Bu, belirteç yeniden yürütme saldırısı olarak adlandırılan yaygın bir saldırıya karşı bir ölçüdür: Oturum açma sırasında gönderilen belirteci kesen bir saldırgan, yeni bir oturum oluşturmak için bu belirteci uygulamaya yeniden göndermeyi (yeniden yürütmeyi) deneyebilir. Örneğin, OIDC kod verme akışında, başarılı kullanıcı kimlik doğrulamasından sonra, bağlı olan tarafın "/signin-oidc" uç noktasına "id_token", "kod" ve "durum" parametreleriyle bir istek yapılır.

      Bağlı olan taraf bu isteği doğrular ve yeni bir oturum oluşturur. Bir saldırgan bu isteği yakalar ve yeniden yürütebilirse başarılı bir oturum kurabilir ve kullanıcıyı yanıltabilir. OpenID Connect'te nonce bulunması, saldırının başarıyla gerçekleştirilebileceği durumları sınırlayabilir ancak tam olarak ortadan kaldıramayabilir. Geliştiriciler uygulamalarını korumak için ITokenReplayCache uygulamasını sağlayabilir ve TokenReplayCache'e bir örnek atayabilir.

      Örnek

      // ITokenReplayCache defined in MSAL
      public interface ITokenReplayCache
      {
      bool TryAdd(string securityToken, DateTime expiresOn);
      bool TryFind(string securityToken);
      }
      

      Örnek

      ITokenReplayCache arabiriminin örnek bir uygulaması aşağıda verilmiştir. (Lütfen projeye özgü önbelleğe alma çerçevenizi özelleştirin ve uygulayın)

      public class TokenReplayCache : ITokenReplayCache
      {
          private readonly ICacheProvider cache; // Your project-specific cache provider
          public TokenReplayCache(ICacheProvider cache)
          {
              this.cache = cache;
          }
          public bool TryAdd(string securityToken, DateTime expiresOn)
          {
              if (this.cache.Get<string>(securityToken) == null)
              {
                  this.cache.Set(securityToken, securityToken);
                  return true;
              }
              return false;
          }
          public bool TryFind(string securityToken)
          {
              return this.cache.Get<string>(securityToken) != null;
          }
      }
      

      Uygulanan önbelleğe aşağıdaki gibi "TokenValidationParameters" özelliği aracılığıyla OIDC seçeneklerinde başvurulmalıdır.

      OpenIdConnectOptions openIdConnectOptions = new OpenIdConnectOptions
      {
          AutomaticAuthenticate = true,
          ... // other configuration properties follow..
          TokenValidationParameters = new TokenValidationParameters
          {
              TokenReplayCache = new TokenReplayCache(/*Inject your cache provider*/);
          }
      }
      

      Bu yapılandırmanın etkinliğini test etmek için yerel OIDC korumalı uygulamanızda oturum açın ve Fiddler aracında "/signin-oidc" uç noktasına yönelik isteği yakalayın. Koruma devrede olmadığında, bu isteğin Fiddler'da yeniden oynatılması yeni bir oturum çerezini belirler. TokenReplayCache koruması eklendikten sonra istek yeniden yürütüldükten sonra uygulama aşağıdaki gibi bir özel durum oluşturur: SecurityTokenReplayDetectedException: IDX10228: The securityToken has previously been validated, securityToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ1......

      OAuth2 istemcilerinden Microsoft Entra Id'ye (veya şirket içi AD'ye) yönelik belirteç isteklerini yönetmek için MSAL kitaplıklarını kullanma

      Başlık Ayrıntılar
      Bileşen Microsoft Entra Kimlik
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar MSAL
      Adımlar

      Microsoft Kimlik Doğrulama Kitaplığı (MSAL), geliştiricilerin kullanıcıların kimliğini doğrulamak ve güvenli web API'lerine erişmek için Microsoft kimlik platformu güvenlik belirteçleri almasını sağlar. Microsoft Graph'a, diğer Microsoft API'lerine, üçüncü taraf web API'lerine veya kendi web API'nize güvenli erişim sağlamak için kullanılabilir. MSAL, .NET, JavaScript, Java, Python, Android ve iOS gibi birçok farklı uygulama mimarisini ve platformu destekler.

      MSAL, birçok platform için tutarlı bir API ile belirteç almanın birçok yolunu sunar. Uygulamanızda OAuth kitaplıklarını veya protokolüne karşı kod yazmanıza gerek yoktur. Bir kullanıcı veya uygulama adına (platforma uygun olduğunda) belirteçler alabilirsiniz.

      MSAL ayrıca bir belirteç önbelleği tutar ve süresi dolmak üzere olan belirteçleri sizin için yeniler. MSAL ayrıca uygulamanızın hangi hedef kitlede oturum açmasını istediğinizi belirtmenize ve uygulamanızı yapılandırma dosyalarından ayarlamanıza ve uygulamanızın sorunlarını gidermenize yardımcı olabilir.

      Field Gateway'e bağlanan cihazların kimliğini doğrulama

      Başlık Ayrıntılar
      Bileşen IoT Alan Ağ Geçidi
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Yok
      Adımlar Her cihazın verilerini kabul etmeden önce ve Cloud Gateway ile yukarı akış iletişimini kolaylaştırmadan önce Field Gateway tarafından kimliğinin doğrulandığından emin olun. Ayrıca, tek tek cihazların benzersiz olarak tanımlanabilmesi için cihazların cihaz başına kimlik bilgileriyle bağlandığından emin olun.

      Cloud gateway'e bağlanan cihazların kimliğinin doğrulandığından emin olun

      Başlık Ayrıntılar
      Bileşen IoT Cloud Gateway
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel, C#, Node.js,
      Öznitelikler Geçerli Değil, Ağ geçidi seçimi - Azure IoT Hub
      Referanslar YOK, .NET ile Azure IoT hub'ı, IoT hub'ı ve Node JS'yi kullanmaya başlama, SAS ve sertifikalarla IoT'yi güvenli hale getirme, Git deposu

      | Adımlar |

      • Genel: Aktarım Katmanı Güvenliği (TLS) veya IPsec kullanarak cihazın kimliğini doğrular. Altyapı, tam asimetrik şifrelemeyi işleyemeyen cihazlarda önceden paylaşılan anahtarın (PSK) kullanılmasını desteklemelidir. Microsoft Entra ID, OAuth'den yararlanın.
      • C#: DeviceClient örneği oluştururken, Create yöntemi varsayılan olarak IoT Hub ile iletişim kurmak için AMQP protokolunu kullanan bir DeviceClient örneği oluşturur. HTTPS protokolünü kullanmak için, Create yönteminin protokolü belirtmenize olanak tanıyan geçersiz kılmasını kullanın. HTTPS protokolünü kullanıyorsanız, Microsoft.AspNet.WebApi.Client ad alanını içermek için System.Net.Http.Formatting NuGet paketini projenize eklemeniz gerekir.
      |

      Örnek

      static DeviceClient deviceClient;
      
      static string deviceKey = "{device key}";
      static string iotHubUri = "{iot hub hostname}";
      
      var messageString = "{message in string format}";
      var message = new Message(Encoding.ASCII.GetBytes(messageString));
      
      deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey("myFirstDevice", deviceKey));
      
      await deviceClient.SendEventAsync(message);
      

      Örnek

      Node.js: Kimlik doğrulaması

      Simetrik anahtar

      • Azure'da IoT hub'ı oluşturma
      • Cihaz kimliği kayıt defterinde giriş oluşturma
        var device = new iothub.Device(null);
        device.deviceId = <DeviceId >
        registry.create(device, function(err, deviceInfo, res) {})
        
      • Simülasyon cihazı oluşturma
        var clientFromConnectionString = require('azure-iot-device-amqp').clientFromConnectionString;
        var Message = require('azure-iot-device').Message;
        var connectionString = 'HostName=<host-name>DeviceId=<device-id>SharedAccessKey=<shared-access-key>';
        var client = clientFromConnectionString(connectionString);
        

        SAS Belirteci

      • Simetrik anahtar kullanılırken dahili olarak oluşturulur, ancak bunu açıkça da oluşturabilir ve kullanabiliriz
      • Protokol tanımlama: var Http = require('azure-iot-device-http').Http;
      • SAS belirteci oluşturun:
        resourceUri = encodeURIComponent(resourceUri.toLowerCase()).toLowerCase();
        var deviceName = "<device-name>";
        var expires = (Date.now() / 1000) + expiresInMins * 60;
        var toSign = resourceUri + '\n' + expires;
        // using crypto
        var decodedPassword = new Buffer(signingKey, 'base64').toString('binary');
        const hmac = crypto.createHmac('sha256', decodedPassword);
        hmac.update(toSign);
        var base64signature = hmac.digest('base64');
        var base64UriEncoded = encodeURIComponent(base64signature);
        // construct authorization string
        var token = "SharedAccessSignature sr=" + resourceUri + "%2fdevices%2f"+deviceName+"&sig="
        + base64UriEncoded + "&se=" + expires;
        if (policyName) token += "&skn="+policyName;
        return token;
        
      • Sas belirtecini kullanarak bağlanın:
        Client.fromSharedAccessSignature(sas, Http);
        

        Sertifikalar

      • Sırasıyla sertifikayı ve anahtarı depolamak üzere bir .cert ve .key dosyaları oluşturmak için OpenSSL gibi herhangi bir aracı kullanarak otomatik olarak imzalanan bir X509 sertifikası oluşturun
      • Sertifikaları kullanarak güvenli bağlantı kabul eden bir cihaz sağlayın.
        var connectionString = '<connection-string>';
        var registry = iothub.Registry.fromConnectionString(connectionString);
        var deviceJSON = {deviceId:"<device-id>",
        authentication: {
            x509Thumbprint: {
            primaryThumbprint: "<primary-thumbprint>",
            secondaryThumbprint: "<secondary-thumbprint>"
            }
        }}
        var device = deviceJSON;
        registry.create(device, function (err) {});
        
      • Sertifika kullanarak cihaz bağlama
        var Protocol = require('azure-iot-device-http').Http;
        var Client = require('azure-iot-device').Client;
        var connectionString = 'HostName=<host-name>DeviceId=<device-id>x509=true';
        var client = Client.fromConnectionString(connectionString, Protocol);
        var options = {
            key: fs.readFileSync('./key.pem', 'utf8'),
            cert: fs.readFileSync('./server.crt', 'utf8')
        };
        // Calling setOptions with the x509 certificate and key (and optionally, passphrase) will configure the client //transport to use x509 when connecting to IoT Hub
        client.setOptions(options);
        //call fn to execute after the connection is set up
        client.open(fn);
        

      Cihaz başına kimlik doğrulama bilgilerini kullanma

      Başlık Ayrıntılar
      Bileşen IoT Cloud Gateway
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Ağ geçidi seçimi - Azure IoT Hub
      Referanslar Azure IoT Hub Güvenlik Belirteçleri
      Adımlar IoT Hub düzeyinde paylaşılan erişim ilkeleri yerine Cihaz anahtarına veya İstemci Sertifikasına dayalı SaS belirteçlerini kullanarak cihaz başına kimlik doğrulaması kimlik bilgilerini kullanın. Bu, bir cihazın veya alan ağ geçidinin kimlik doğrulama belirteçlerinin başka bir cihaz tarafından yeniden kullanılmasını önler

      Yalnızca gerekli kapsayıcılara ve bloblara anonim okuma erişimi verildiğinden emin olun

      Başlık Ayrıntılar
      Bileşen Azure Depolama
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Depolama Türü - Blob
      Referanslar Kapsayıcılara ve bloblara anonim okuma erişimini yönetme, Paylaşılan Erişim İmzaları, 1. Bölüm: SAS modelini anlama
      Adımlar

      Varsayılan olarak, kapsayıcıya ve içindeki bloblara yalnızca depolama hesabının sahibi erişebilir. Anonim kullanıcılara kapsayıcı ve blobları için okuma izinleri vermek için, kapsayıcı izinlerini genel erişime izin verecek şekilde ayarlayabilirsiniz. Anonim kullanıcılar, isteğin kimliğini doğrulamadan genel olarak erişilebilen bir kapsayıcıdaki blobları okuyabilir.

      Kapsayıcılar, kapsayıcı erişimini yönetmek için aşağıdaki seçenekleri sağlar:

      • Tam genel okuma erişimi: Kapsayıcı ve blob verileri anonim istek aracılığıyla okunabilir. İstemciler anonim istek aracılığıyla kapsayıcı içindeki blobları numaralandırabilir, ancak depolama hesabı içindeki kapsayıcıları numaralandıramaz.
      • Yalnızca bloblar için genel okuma erişimi: Bu kapsayıcıdaki blob verileri anonim istek yoluyla okunabilir, ancak kapsayıcı verilerine erişilemez. İstemciler anonim istek aracılığıyla kapsayıcı içindeki blobları numaralandıramaz
      • Genel okuma erişimi yok: Kapsayıcı ve blob verileri yalnızca hesap sahibi tarafından okunabilir

      Anonim erişim, belirli blobların anonim okuma erişimi için her zaman kullanılabilir olması gereken senaryolar için en iyisidir. Daha ayrıntılı denetim için, farklı izinler kullanarak ve belirli bir zaman aralığı içinde kısıtlı erişimi temsilci olarak devretmeye olanak tanıyan bir paylaşılan erişim imzası oluşturulabilir. Hassas veriler içerebilecek kapsayıcılara ve bloblara yanlışlıkla anonim erişim verilmediğinden emin olun

      SAS veya SAP kullanarak Azure depolamadaki nesnelere sınırlı erişim verme

      Başlık Ayrıntılar
      Bileşen Azure Depolama
      SDL Aşaması Derleme
      Geçerli Teknolojiler Genel
      Öznitelikler Yok
      Referanslar Paylaşılan Erişim İmzaları, Bölüm 1: SAS modelini anlama, Paylaşılan Erişim İmzaları, Bölüm 2: Blob depolama ile SAS oluşturma ve kullanma, Paylaşılan Erişim İmzaları ve Depolanan Erişim İlkeleri kullanarak hesabınızdaki nesnelere erişim yetkisi verme
      Adımlar

      Paylaşılan erişim imzası (SAS) kullanmak, bir depolama hesabındaki nesnelere hesap erişim anahtarını kullanıma sunmadan diğer istemcilere sınırlı erişim vermenin güçlü bir yoludur. SAS, bir depolama kaynağına kimliği doğrulanmış erişim için gerekli tüm bilgileri sorgu parametrelerinde kapsayan bir URI'dir. SAS ile depolama kaynaklarına erişmek için istemcinin yalnızca SAS'yi uygun oluşturucuya veya yönteme geçirmesi gerekir.

      Depolama hesabınızdaki kaynaklara hesap anahtarıyla güvenilmeyecek bir istemciye erişim sağlamak istediğinizde SAS kullanabilirsiniz. Depolama hesabı anahtarlarınız hem birincil hem de ikincil anahtar içerir. Bu anahtarlardan her ikisi de hesabınıza ve içindeki tüm kaynaklara yönetici erişimi verir. Hesap anahtarlarınızdan birini kullanıma açmak, hesabınızı kötü amaçlı veya ihmalkar kullanım olasılığına açar. Paylaşılan erişim imzaları, diğer istemcilerin depolama hesabınızdaki verileri, sizin vermiş olduğunuz izinlere göre ve hesap anahtarına gerek kalmadan okumasına, yazmasına ve silmesine olanak tanıyan güvenli bir alternatif sağlar.

      Her seferinde benzer mantıksal bir parametre kümeniz varsa, Saklı Erişim İlkesi (SAP) kullanmak daha iyi bir fikirdir. Saklı Erişim İlkesinden türetilen bir SAS kullanmak size bu SAS'yi hemen iptal etme olanağı sağladığından, mümkün olduğunda her zaman Saklı Erişim İlkeleri'ni kullanmak önerilen en iyi yöntemdir.