Makale Özeti

WS-Security dediğimizde aklımıza ilk gelen koruma kalitesi, mesaj güvenirliliği ,gizliliği ve tek mesaj doğrulamasıdır.Bu mekanizmalar geniş çeşitlilik gösteren güvenlik modellerini ve şifreleme teknolojilerini kullanırlar...

Makale

Web Service ‘lerinde güvenlik []

     WS-Security dediğimizde aklımıza ilk gelen koruma kalitesi, mesaj güvenirliliği ,gizliliği ve tek mesaj doğrulamasıdır.Bu mekanizmalar geniş çeşitlilik gösteren güvenlik modellerini ve şifreleme teknolojilerini kullanırlar.

Bize  güvenli Web Service ‘leri oluştururken güvenirlilik ve gizlilik oluşturmak için kullanılan standart bir SOAP ekleri seti önerilir.Bu eklerden “Web Services Security Language” veya “WS-Security” diye söz edeceğiz.WS-Security esnek ve PKI, Kerberos ve SSL ‘i içeren güvenlik modelleri yapısını temel olarak kullanmak için dizayn edilmiştir.

HTTP üzerinden doğrulama, mesajı imzalama, ve mesajın içeriğini şifreleme yapabiliriz.Bu tip durumlarda mesaj güvence altındadır.Şöyleki mesajı gönderen bilinir,mesajın alıcısı doğruluğu kanıtlar, mesaj taşınma esnasında değişmez.Diğer kişiler ele geçirse bile doğrulama yapamaz ve verinin değişik bir durumda olmasından dolayı veri işlerine yaramaz durumdadır.Bu açıdan baktığımızda SOAP mesajlaşma sistemi, HTTP-temelli güvenlik yetersiz olmasına rağmen büyük problemleri çözmektedir.HTTP mekanizmaları sadece point-to-point güvenliğine hitap eder.Daha karmaşık projeler(çözümler) end-to-end güvenliğine ihtiyaç duyar.

Kerberos ve X.509 adres doğrulama güvenlik ile ilgili çoğu problemi çözmektedir.X.509 aynı zamanda anahtar yönetimi için PKI ‘yı kullanır.XML şifreleme ve XML imzalama bize XML mesajlarının içeriğini şifreleme ve imzalama yollarını tanımlar.XML Canonicalization ise imzalanmış ve şifrelemiş olmak için XML ‘i hazır hale getirme yollarını tanımlar.

WS-Security güvenlikle ilgili olan veriyi taşımak için bir SOAP Header ‘ı tanımlar.Eğer XML İmzalama kullanıldıysa, bu header şunları bilgileri ; mesajın nasıl imzalandığını,anahtarın kullanıldığını, imza sonuç değerini içerebilir.Ayrıca eğer mesajdaki bir element şifrelendiyse, şifreleme bilgisi WS-Security header ‘ı içinde yer alabilir.WS-Security tam olarak imza ve şifreleme formatını belirtmez.Onun yerine bir SOAP mesajına diğer otoriteler tarafından nasıl bir güvenlik bilgisinin gömüldüğünü tanımlar.WS-Security her şeyden önce XML merkezli güvenlik metadata kutusu için bir belirteçtir.

Peki WS-Security ne yapar diye aklımızda bir soru oluşuyor olmalı.Tam olarak temel kullanıcı güven belgesini(credential) UsernameToken elementinden geçerek transfer etmek için bir mekanizmayı anlatır.

Mesajı şifreleme ve imzalama için kullanılan Binary Token ‘ları göndermek için bir BinarySecurityToken tanımlanır.Bu header ‘da, mesajlar çağıran kişi hakkında bilgiyi , mesajın nasıl imzalandığını ve nasıl şifrelendiğine ait bilgiyi tutar.Bu makalede SOAP mesajına güvenliği nasıl yerleştireceğimizi göreceğiz.Şu ana başlıkları inceleyeceğiz.

·                  Authentication

·                  Signatures

·                  Encryption

 

WS-security ‘de güvenlik kademeleri {}

 

Web Servislerinde güvenlik üç kademede uygulanabilir.Bunlar;

·        Platform/Transport düzeyli güvenlik (Point-to-Point)

·        Uygulama düzeyli güvenlik (Özel)

·        Mesaj düzeyli güvenlik (End-to-End)

Bu güvenlik türlerine hızlı bir şekilde genele özellikleri ile değineceğiz.

 

Platform/Transport düzeyli güvenlik (Point-to-Point)[]

 

İki uç nokta (Web Service Client ve Web Serice) arasındaki taşıma kanalı Point-to-Point güvenliğini sağlamak için kullanılır.

 

Platform Düzeyli Güvenlik []

Platform güvenliğini kullandığımızda (Farzedelimki Microsoft Windows İşletim Sistemi ailesinden)

o       Web Sunucusu (IIS) bize Basic, Digest, Integrated ve Certificate Authentication olanaklarını sunar.

o       ASP.NET Web Service ‘si ASP.NET Authentication ve Authorization özelliklerinden faydalanır.(Aslında ASP.NET ‘deki güvenlik bakışı aynen XML Web Serivce ‘lerindede geçerlidir)

o       SSL ve IPSec mesaj güvenirliliğini ve gizliliğini sağlamak için kallınılabilir.

o        

Transport Düzeyli Güvenlik []

Transport düzeyli güvenlik modeli ise basittir, kolay anlaşılır ve çoğu senaryoya (Özellikler Intranet tabanlı) adapte olabilir.Bu güvenlik kuramında son noktalar (end points) sıkı bir şekilde denetim altındadır.Transport düzeyli güvenlikte önemli noktalar şunlardır;

o       Güvenlik, üzerinde bulunduğu platforma, nakil(transport) mekanizmalarına ve güvenlik servis sağlayıcılarına (NTLM, Kerberos vb.) sıkı sıkıya babağlıdır.

o       Güvenlik, ara uygulama bağlantıları (Node) yoluyla Point-to-Point temeli üzerinde uygulanmaktadır.

 

 

Uygulama düzeyli güvenlik (Application Level Security) []

Bu yaklaşımla uygulama, güvenliği devralır ve özel (kişisel) güvenlik modellerini kullanır.Buna bir örnek verirsek, bir uygulama özel SOAP Header ‘ı(user name, password veya lincence) kullanıcı bilgilerini doğrulamak için kullanabilir.

Bu tip bir güvenlik yaklaşımı özellikle bütün veri akımını şifrelemek yerine mesajımızın belirli(istediğimiz) kısımlarını şifrelemede kullanılabilecek bir yöntemdir.

 

 

Mesaj düzeyli güvenlik (End-to-End) []

Authentication, SOAP Header ‘ında yer alan token tarafından sağlanır.WS-Securty tarafından özel tip token ‘lara ihtiyaç duyulmaz.Güvenlik token ‘ları Kerberos biletlerini, X.509 sertifikalarını veya özel binary token ‘larını içerebilir.Mesaj güvenirliliğini sağlama almak üzere dijital imzalar tarafından güvenli iletişim sağlanmakta ve mesaj gizliliği için de XML şifreleme kullanılmaktadır.

      Peki bu tip bir güvenlik yaklaşımını hangi durumlarda uygulayabiliriz?

      Heterojen Web Service ‘leri ortamında güvenli mesaj değişimi için gerekli olan yapıyı inşa etmek için kullanılabilir.Bu güvenlik yaklaşımı, direk olarak her iki uç noktanın (endpoints) ve ara uygulama bağlantıları (nodes) kontrolün de olmadığımız senaryolarda ve biraz öncede değindiğim üzere heterojen ortamlarda kullanımı idealdir.

Mesaj düzeyli güvenlik,

o       Nakil temelinden bağımsız olabilir.

o       Heterojen güvenlik mimarisine olanak sağlar.

o       End-to-End güvenliğini sağlar.

o       Birden fazla şifreleme teknolojisine destek verir.

o       Non-repudiation ‘a destek verir.

 

 

Authentication []

      Authentication ,genel olaraka kullanıcı kimliğini doğrulamadır.Bazı uygulamalarımız güvenlik nedeni ile kullanıcılardan belirli güvenlik katmanlarından geçmelerini isteyebilir.Bunlardan biride kimlik denetimidir.

.NET Framework en çok kullanılan Windows 2000 ‘de yer alan NTLM ve Kerberos V5.0 gibi kimlik denetimi metotları yanında diğer form tabanlı kimlik denetimlerinde destek vermektedir.Buna bir örnek vermek gerekirse Microsoft Passport. Authentication daha çok role-based güvenliğinde kullanılır.

 

Authorization []

     Authorization, türkçeye çevrilmiş hali ile yetkilendirme anlamına gelmektedir.Aklımıza ilk gelen tabii ki şudur neden izin.Bunun en güzel örneğini Win2000 işletim sisteminde görmekteyiz.Sisteme dahil birden fazla kullanıcı olabilir fakat her kullanıcının hakları eşit olmayabilir.Bir kullanıcı Administrator(yönetici) konumunda iken diğer normal kullanıcı konumundadır.Bu iki kullanıcıya sunulan haklar farklıdır.Yönetici kimlikli kullanıcı sisteme direk müdahale edebiliyorken, normal kullanıcının böle bir yetkisinin olmadığı göze çarpmaktadır.

 

Genel []

Bu bölüm izin seçeneklerinin, genellikle kullanılan Authentication planlarından oluşan bir set için mevcut olduğunu anlatır.

Bu Authentication planları,

·        Canlandırmayla Windows Authentication

·        Canlandırma olmaksızın Windows Authentication

·        Değişmeyen kimlik kullanarak Windows Authentication

 

Güvenlik kavramını ve .NET Framework’ün güvenlik anlayışını anlattım. Bu yazının devamı ile diğer kavramları ve örnek uygulamaları göreceğiz.

 

 

Yeliz Korkmaz

yeliz.korkmaz@bilisimanadolu.com