Türkçe
  • SAML
  • SSO
  • kimlik doğrulama

SAML güvenlik ipuçları

Güvenlik Bildirimi İşaretleme Dili'ne (SAML) ve güvenlik özelliklerine hızlı bir referans rehberi. Kurumsal ortamlarda SAML tabanlı kimlik doğrulama ve yetkilendirmeyi güvence altına almak için kilit terimleri, uygulama ipuçlarını ve en iyi uygulamaları anlayın.

Simeng
Simeng
Developer

Giriş

Güvenlik Bildirimi İşaretleme Dili (SAML), taraflar arasında, özellikle bir kimlik sağlayıcısı ile bir hizmet sağlayıcısı arasında kimlik doğrulama ve yetkilendirme verilerini değiş tokuş etmek için açık bir standarttır. SAML, tek oturum açma (SSO) ve kimlik federasyonu için kullanılan bir XML tabanlı bir işaretleme dilidir. Kimlik doğrulama ve yetkilendirme amaçları için genellikle kurumsal ortamlarda kullanılır.

Standart SAML kimlik doğrulama akışı

  1. Kullanıcı, hizmet sağlayıcı (SP) olarak hareket eden bir istemci uygulamasına erişim talep eder.
  2. SP, kimlik sağlayıcısına (IdP) bir SAML SSO kimlik doğrulama isteği gönderir ve kullanıcıyı IdP'ye yönlendirir.
  3. Eğer kullanıcı zaten kimlik doğrulaması yapmadıysa, IdP kullanıcıdan kimlik bilgilerini ister.
  4. Kullanıcı kimlik bilgilerini girer ve IdP kullanıcıyı doğrular.
  5. IdP, kullanıcının kimlik doğrulama durumu ve niteliklerini içeren bir SAML yanıt bildirimini SP'ye gönderir. Ardından kullanıcıyı SP'ye geri yönlendirir.
  6. SP, SAML yanıt bildirimini alır, doğrular ve kullanıcıya erişim sağlar.

SAML'deki güvenlik faktörleri

SP entity ID

SP entity ID'yi SAML kimlik doğrulama bağlamında bir SP için benzersiz bir rozet olarak düşünün. IdP'ye SP'yi etkileşimleri sırasında tanımasında yardımcı olan bir parmak izi gibidir. Bu ID, IdP ile güven inşa etmek ve güvenli iletişimi sağlamak için paylaşılan SP'nin meta verilerinin önemli bir parçasıdır.

SP entity ID'nin kullanımı:

  1. Metadata kayıt: EntityID niteliği, bir güven ilişkisi kurmak için IdP ile paylaşılan SP'nin meta verilerinin bir parçasıdır. SAML etkileşimleri için SP'nin meta verilerini bulmak ve gerekli yapılandırma ayrıntılarını almak için benzersiz bir tanıtıcı görevi görür.
  2. Kimlik doğrulama isteği: SP entity ID, IdP'ye gönderilen SAML kimlik doğrulama isteğine dahil edilir ve istekte bulunan SP'yi açıkça tanımlar. IdP, isteği doğrulamak ve uygun kimlik doğrulama bağlamını belirlemek için bu bilgiyi kullanır.
  3. Bildirim izleyicisi: Başarılı bir kullanıcı doğrulamasından sonra, SP entity ID, SAML bildirimine bir izleyici kısıtlaması olarak dahil edilir. Bu önlem, bildirimin yalnızca belirlenmiş SP için olduğunu garanti eder ve diğer SP'ler tarafından kötüye kullanılamayacağını sağlar.

IdP entity ID

Diğer taraftan, IdP entity ID, IdP için özel bir etikettir. SAML ekosistemi içinde IdP'yi tanımlamaya yardımcı olur, böylece SP'nin onu bulmasını sağlar. Bu ID, IdP'nin meta verilerine dahil edilir ve SP ile paylaşılır, güven oluşturma ve güvenli bağlantıları teşvik eder.

IdP entity ID'nin kullanımı:

  1. Metadata kayıt: EntityID niteliği, güven ilişkisi kurmak için SP ile paylaşılan IdP'nin meta verilerine de dahil edilir. IdP'nin meta verilerini bulmak ve SAML yanıtlarını doğrulamak için gereken yapılandırma ayrıntılarını almak için benzersiz bir tanıtıcı görevi görür.
  2. Bildirim sağlayıcısı: IdP, bir SAML bildirimi oluşturduğunda, sağlayıcı olarak kendi entity ID'sini içerir. Bu özellik, bildirimi sağlayan varlığı belirtir ve SP'nin bildirimin doğruluğunu ve bütünlüğünü doğrulamasına yardımcı olur.

Ara durum

Ara durum, SP ve IdP arasında durum bilgisinin aktarılmasını kolaylaştıran SAML kimlik doğrulamada kullanılan bir parametredir. Kimlik doğrulama süreci sırasında kullanıcı bağlamını ve oturum durumunu koruyarak SP başlatılan ve IdP başlatılan SSO akışları arasında köprü görevi görür.

Ara durumun kullanımı:

  1. Kullanıcı bağlamını koruma: Ara durum, SP'nin kimlik doğrulama süreci sırasında IdP'ye ek bilgi aktarmasını sağlar. Bu bilgi, kullanıcı oturum durumu, uygulama bağlamı veya SAML akışında korunması gereken diğer ilgili verileri içerebilir. Örneğin, kimlik doğrulamadan önce kullanıcının eriştiği uygulamanın URL'si veya oturum ID'si gibi.
  2. CSRF saldırılarını önleme: Ara durum, SAML kimlik doğrulama sırasında siteler arası istek sahteciliği (CSRF) saldırılarını önlemek için çok önemlidir. Doğrulama isteğinde benzersiz ve tahmin edilemez bir ara durum değeri dahil ederek, SP SAML yanıtının bütünlüğünü doğrulayabilir ve orijinal isteğe karşılık geldiğinden emin olabilir.

Bildirim imzası

Bildirim imzası, SAML'de bildirimlerin bütünlüğünü, doğruluğunu ve inkar edilemezliğini sağlamak için kritik bir güvenlik özelliğidir. İddianın, IdP'nin özel anahtarı kullanılarak dijital olarak imzalanmasını içerir ve SP'nin iddianın kaynağını doğrulamasına ve herhangi bir tahribat girişimini tespit etmesine olanak tanır.

Bildirim imzası nasıl çalışır:

  1. Anahtar çifti oluşturma: IdP, SAML beyanını imzalamak için kullanılan özel anahtar ve SP'ye doğrulama için paylaşılan genel anahtardan oluşan bir genel-özel anahtar çifti oluşturur. Bu asimetrik şifreleme şeması, yalnızca IdP'nin iddiayı imzalayabilmesini sağlarken, SP'nin doğrulama yapabilmesine olanak tanır.
  2. Paylaşılan sertifika: IdP, iddianın imzasını doğrulamak için kullanılan genel anahtarı içeren genel anahtar sertifikasını SP'ye sağlar. Genellikle bu sertifika IdP'nin meta verilerinin bir parçası olacaktır veya SP, güvenli bir indirme süreciyle bu sertifikayı temin edebilir.
  3. Bildirim imzalama: Kullanıcıyı doğruladıktan sonra IdP, SAML bildirimini özel anahtarı ile dijital olarak imzalar. Bu imza, iddianın doğruluğunu doğrulamak için SP'ye ekstra bir koruma katmanı sağlayan genel anahtar sertifikası ile birlikte bildirimde yer alır.
  4. Bildirim doğrulama: SP, SAML bildirimini aldıktan sonra, bildirimin imzasını doğrulamak için IdP'nin genel anahtarını kullanır. Eğer imza geçerli ise, SP bu bildirime güvenebilir ve kullanıcıya erişim sağlayabilir.

Bildirim şifreleme

SAML ayrıca, IdP ve SP arasında iletilen kullanıcı niteliklerinin ve verilerin korunması için bildirim şifrelemeyi destekler. İddianın şifrelenmesi, yalnızca hedeflenen alıcının (SP) bildirimin içeriğini çözüp erişebilmesini sağlar, böylece kullanıcı gizliliği ve mahremiyetini garanti altına alır. Bildirim şifreleme, SAML'de isteğe bağlı bir güvenlik özelliğidir ve veri koruma önlemlerini artırmak için kullanılabilir.

Bildirim şifrelemenin kullanımı:

  1. Duyarlı nitelik koruma: Bildirim şifreleme, Kişisel Tanımlanabilir Bilgi (PII), finansal veriler veya sağlık kayıtları gibi kullanıcıya ait hassas niteliklerin korunmasında oldukça faydalıdır. Bu nitelikleri bildirim içinde şifreleyerek, IdP yetkisiz erişimi engeller ve veri gizliliğini sağlar.

Bildirim şifreleme nasıl çalışır:

  1. Anahtar değişimi: IdP ve SP, SAML bildirimi korumak için şifreleme anahtarlarını paylaşan güvenli bir anahtar değişim mekanizması oluşturur. Bu, eşzamanlı şifreleme anahtarlarının ya da şifreleme algoritması ve anahtar yönetimi stratejisine bağlı olarak genel anahtar şifreleme şemalarını kullanmayı içerebilir.
  2. Nitelik şifreleme: SAML bildirimini oluşturduktan sonra, IdP paylaşılan şifreleme anahtarını kullanarak kullanıcıya ait hassas nitelikleri şifreler. Şifrelenmiş nitelikler bildirim içinde gömülü olup, yalnızca SP'nin veriye ulaşabilmesini sağlar.
  3. Bildirim şifre çözme: Şifrelenmiş bildirimi alındığında, SP korunan nitelikleri paylaşılan şifreleme anahtarını kullanarak çözer. Bu işlem, SP'nin kullanıcıya ait hassas verilere güvenli bir şekilde erişmesine ve gerektiğinde işlemesine olanak tanır.

Bağlama yöntemleri

SAML bağlama yöntemleri, SAML mesajlarının SP ve IdP arasında farklı iletişim protokolleri üzerinden nasıl iletileceğini tanımlar. Güvenli ve güvenilir iletişimi sağlamak için kodlama, aktarım ve güvenlik mekanizmalarını belirlerler.

Hem SP hem de IdP, meta verilerinde destekledikleri bağlama yöntemlerini belirleyerek, SAML etkileşimleri için uygun yöntemi müzakere etmelerini sağlar. Bağlantı yöntemi seçimi, mesaj boyutu, güvenlik gereksinimleri ve iletişim kanalının özellikleri gibi faktörlere bağlıdır.

SAML bağlama yöntemleri:

  1. HTTP Yönlendirme: SAML mesajları, URL parametreleri olarak kodlanır ve HTTP yönlendirme yoluyla iletilir. Mesaj boyutunun sınırlı olduğu ve iletişim kanalının güvenli olmadığı senaryolarda uygundur.
  2. HTTP POST: SAML mesajları, form parametreleri olarak kodlanır ve HTTP POST istekleri yoluyla iletilir. Mesaj boyutu URL uzunluk sınırını aşarsa veya ek güvenlik önlemleri gerekiyorsa kullanılır.
  3. Artifact: SAML mesajları, kısa ömürlü tokenlar olan artefaktlar kullanılarak, SP ve IdP arasında güvenli bir arka kanal üzerinden iletilir. Mesaj gizliliği ve bütünlüğünün kritik olduğu ve iletişim kanalının güvenli olduğu senaryolar için uygundur.

En yaygın bağlama yöntemleri:

  • Kimlik doğrulama isteği: SP'den IdP'ye yapılan kimlik doğrulama isteği, genellikle basitlik ve verimlilik nedeniyle HTTP Yönlendirme kullanılarak iletilir. SP, SAML isteğini URL parametreleri olarak kodlar ve kullanıcı tarayıcısını kimlik doğrulama için IdP'ye yönlendirir. Bu, SP başlatılan SSO akışı olarak bilinir.
  • Bildirim yanıtı: IdP'den SP'ye yapılan SAML yanıt bildirimi, genellikle HTTP POST bağlama yöntemi kullanılarak iletilir. IdP, SAML bildirimini form parametreleri olarak kodlar ve doğrulama için yeniden SP'ye gönderir. Bu, bildirimin güvenli bir şekilde iletilmesini sağlar ve URL'de duyarlı verilerin ortaya çıkmasını engeller. Ayrıca, HTTP POST bağlama yöntemi, HTTP Yönlendirme bağlamasına kıyasla daha büyük mesaj boyutlarını yönetebilir.

SAML bildirimlerinde güvenlik unsurları ve değerlendirmeleri

Sağlayıcı

Daha önce bahsedildiği gibi, sağlayıcı, bildirimleri oluşturan varlığı tanımlayan SAML bildirimlerinde kilit bir özelliktir. Sağlayıcı tipik olarak kullanıcıyı doğrulayan ve bildirimi oluşturan IdP'dir. Bildirimde sağlayıcı özelliğini dahil ederek, SP bildiriminin kaynağını doğrulayıp güvenilir bir kaynaktan geldiğinden emin olabilir.

İmza

SAML bildirimlerinde imza unsuru, bildirimin bütünlüğünü ve doğruluğunu teyit etmek için IdP tarafından üretilen dijital imzayı içerir. İmza, IdP'nin özel anahtarı kullanılarak oluşturulur ve doğrulama için genel anahtar sertifikası ile birlikte bildirimde yer alır. SP, imzayı doğrulayarak, bildirimin değiştirilmediğini ve beklenen IdP'den geldiğini kanıtlayabilir.

Koşullar

SAML bildirimlerindeki koşullar unsuru, bildirimin geçerliliği ve kullanımıyla ilgili kısıtlamaları ve sınırlamaları tanımlar. Bildirimin geçerlilik süresi, izleyici kısıtlamaları ve SP'nin bildirimi işlerken uygulaması gereken diğer bağlamsal kısıtlamaları içerir.

Kimlik doğrulama bildirimi

Authentication statement (AuthnStatement), kullanıcının kimlik doğrulama durumu ve bağlamı hakkında bilgi sağlayan SAML bildirisinin ana bileşenidir. Kullanıcının kimlik doğrulama durumuna dayalı bilgilere erişim kontrol kararları vermede SP'ye eğitim sağlayarak kullanılan kimlik doğrulama yöntemi, kimlik doğrulama zamanı ve ilgili kimlik doğrulama bağlamı bilgilerini içerir.

Kimlik doğrulama bildirimi nitelikleri:

  1. AuthenticationContext: Kullanıcının kimlik doğrulama yöntemi ve bağlamını tanımlar, örneğin; kullanıcı adı-şifre, çok faktörlü kimlik doğrulama veya tek oturum açma. Bu nitelik, SP'ye kimlik doğrulama işleminin güçlülüğünü ve güvenilirliğini değerlendirmede ve uygun erişim kontrollerini belirlemede yardımcı olur.
  2. AuthenticationInstant: Kullanıcının IdP tarafından doğrulandığı zamanı belirtir. Bu zaman damgası, kimlik doğrulama tazeliğini doğrulamak ve yeniden oynatma saldırılarını veya oturum gaspını önlemek adına çok önemlidir.
  3. SessionNotOnOrAfter: Kullanıcının oturumunun sona erme süresini belirtir, bu süreden sonra kullanıcı hizmete erişmek için tekrar kimlik doğrulaması yapmak zorunda kalır. Bu nitelik, oturum yönetim politikalarını uygulamak ve yetkisiz erişim riskini azaltmak için yardımcı olur.

SAML güvenliği için en iyi uygulamalar

  1. Güvenli bağlama yöntemleri kullanın: Güvenlik gereksinimleriniz ve iletişim kanallarınızın özellikleri temelinde uygun SAML bağlama yöntemlerini seçin. Hassas verileri iletmek için HTTP POST ve basit istekler için HTTP Yönlendirme yöntemlerini kullanın.
  2. Bildirimi imzalarını doğrulayın: SAML bildirimlerinin bütünlüklerini ve doğruluklarını sağlamak için dijital imzalarını doğrulayın. İddianın bütünlüğünü doğrulamak ve muhtemel tahribat girişimlerini tespit etmek için IdP'nin genel anahtar sertifikasını kullanın.
  3. İzleyici kısıtlamalarını zorlayın: SAML bildirimlerine, bildirimin kapsamını hedeflenen SP ile sınırlamak için izleyici kısıtlamalarını dahil edin. Bu, iddia yeniden oynatma saldırılarını ve diğer hizmet sağlayıcılar tarafından yetkisiz erişimi önler.
  4. Metadata alışverişini güvence altına alın: Metadata tahrifatı ve kimlik avı saldırılarını önlemek için SP ve IdP meta verilerinin alışverişini koruyun. Güvenli kanallar ve mekanizmalar kullanarak meta verileri güvenli bir şekilde paylaşın.
  5. Güvenli ara durum işleme uygulayın: SAML kimlik doğrulama sırasında CSRF saldırılarını önlemek adına benzersiz ve öngörülemeyen ara durum değerleri kullanın. Ara durumunun bütünlüğünü ve özgünlüğünü sağlamak için doğrulayın.
  6. Oturum yönetimi uygulayın: Oturum sonlandırma politikalarını tanımlayın ve oturum zaman aşımlarını zorunlu tutarak oturum kaçırma ve yetkisiz erişim riskini azaltın. Kullanıcı oturumlarını güvenli bir şekilde yönetmek için SAML bildirimlerindeki oturum ilgili nitelikleri kullanın.
  7. Hassas nitelikleri şifreleyin: Gerekli olması halinde, SAML bildirimi içinde kullanıcı niteliklerini şifreleyerek, kullanıcı gizliliğini ve veri mahremiyetini koruyun. Hassas verileri korumak için güvenli şifreleme algoritmaları ve anahtar yönetimi uygulamalarını kullanın.

SAML alternatifleri

SAML, SSO ve kimlik federasyonu için geniş olarak benimsenmiş bir standart olmaya devam ederken, sunduğu güvenlik ve kullanılabilirlik mekanizmaları, modern uygulamaların hızla değişen gereksinimlerini karşılamakta sorunlar yaratabilir. Daha yeni OAuth 2.0 tabanlı OpenID Connect (OIDC) ile karşılaştırıldığında, SAML daha karmaşık olma eğilimindedir ve OIDC'nin sunduğu bazı gelişmiş güvenlik özelliklerine sahip değildir. Örneğin, OIDC'nin çoklu güvenlik istekleri yetkilendirme kodu verme akışı, nispeten basit olan SAML iddia aktarım akışına kıyasla daha güvenli bir yaklaşım sunar. Daha modern ve esnek bir kimlik federasyonu çözümünü benimsemeyi düşünen organizasyonlar için, OIDC, SAML'e uygun bir alternatif olabilir.