Aracılığıyla paylaş


Güvenliğe Genel Bakış

Windows Web Hizmetleri API'sindeki (WWSAPI) güvenlik çerçevesi şunları sağlar:

  • Aktarım güvenliğini kullanarak ileti bütünlüğü, gizlilik, yeniden yürütme algılama ve sunucu kimlik doğrulaması.
  • SOAP ileti güvenliği veya aktarım güvenliği kullanarak güvenlik belirteci doğrulaması, sertifika güveni ve iptal denetimleri gibi istemci kimlik doğrulaması.

Güvenlik Programlama Modeli

Güvenlik, iletişim kanallarıyla ilişkilendirilir. Kanalın güvenliğini sağlamak aşağıdaki adımlardan oluşur.

  • Uygulamanın güvenlik gereksinimlerine uygunbir veya daha fazlagüvenlik bağlaması oluşturun ve başlatın.
  • Bu güvenlik bağlamalarını içerengüvenlik açıklaması oluşturun.
  • İstemci tarafında bir kanalı veya bir hizmet ara sunucusu oluşturun ya da sunucu tarafında bu güvenlik açıklamasını geçiren bir dinleyici veya bir hizmet ana bilgisayarı oluşturun.
  • Aç, Kabul Et, Gönder, Al, Kapat gibi normal kanal programlama adımlarını uygulayın.

Kanalda gönderilen ve alınan iletiler, sağlanan güvenlik açıklamasına göre çalışma zamanı tarafından otomatik olarak güvenlik altına alınır. İsteğe bağlı olarak, bu adımlar, bir güvenlik tanımında kanal genelinde bir veya daha fazla güvenlik ayarı veya bir güvenlik bağlamında bağlama genelinde güvenlik ayarları belirtilerek ince ayar yapılabilir.

Gönderen kimliklerinin gerekli yetkilendirmeleri, alınan her iletiye ekli güvenlik işleme sonuçları kullanılarak uygulama tarafından yapılmalıdır. Yetkilendirme adımları güvenlik açıklamasında belirtilmez ve çalışma zamanı tarafından otomatik olarak gerçekleştirilmez.

Desteklenmeyen bağlamalar, uygulanabilir özellikler/alanlar, gerekli özelliklerin/alanların olmaması veya geçersiz özellik/alan değerleri gibi güvenlik açıklamasındaki hatalar kanal veya dinleyici oluşturma işleminin başarısız olmasına neden olur.

Güvenlik Bağlamalarını Seçme

Bir uygulama için güvenlik tasarlarken, birincil karar güvenlik açıklamasına eklenecek güvenlik bağlamalarının seçilmesidir. Aşağıda, uygulamanın güvenlik senaryosuna uygun güvenlik bağlamalarını seçmeye yönelik bazı yönergeler yer alır. Yararlı bir buluşsal yöntem, önce uygulama için hangi güvenlik kimlik bilgisi türlerinin (X.509 sertifikaları, Windows etki alanı kullanıcı adı/parolaları, uygulama tanımlı kullanıcı adı/parola) kullanılıp kullanılamayacağını anlamak ve ardından bu kimlik bilgisi türünü kullanabilecek bir güvenlik bağlaması seçmektir.

Kanallar ve Güvenlik

Yukarıda belirtildiği gibi, güvenlik kanallarla sınırlıdır. Ayrıca, kanal işlemleri tüm güvenlik bağlamalarında tutarlı bir şekilde güvenlik adımlarıyla eşleniyor.

  • Kanal oluşturma: Güvenlik açıklamasında belirtilen güvenlik bağlamaları kümesi doğrulanır ve bundan sonra kanal için sabit kalır. WS-Trust tabanlı anlaşmalar için kullanılacak yan kanallar da dahil olmak üzere kanal yığınının şekli de belirlenir.
  • Kanal açma: Güvenlik bağlamalarının bir parçası olarak sağlanan tüm kimlik bilgileri yüklenir ve güvenlik oturumları oluşturulur. Genel olarak, açık bir kanal 'aktif' güvenlik durumu barındırır. İstemci kanalını açmak, sunucu kimlik doğrulamasının çalışma zamanınca yapılacağı sunucunun uç adresini de belirtir.
  • Kanal açma ve kapatma arasında: İletiler bu aşamada güvenli bir şekilde gönderilebilir ve alınabilir.
  • İleti gönderme: Gerektiğinde güvenlik bağlam belirteçleri alınır veya yenilenir ve iletilen her iletiye güvenlik açıklamasına göre güvenlik uygulanır. Güvenlik uygulanırken karşılaşılan hatalar, gönderme hataları olarak uygulamaya döndürülür.
  • İleti alma: Alınan her iletide güvenlik açıklamasına göre güvenlik doğrulanır. İleti güvenliği doğrulama hataları, uygulamaya alma hataları olarak döndürülür. Bu iletiye özgü hatalar, kanal durumunu veya sonraki iletilerin alınmasını etkilemez. Uygulama başarısız bir alma işlemini atabilir ve başka bir ileti için bir alma işlemini yeniden başlatabilir.
  • Kanal durdurma: Kanaldaki tüm G/Ç'yi durdurmak için kanal istediğiniz zaman durdurulabilir. İptal durumunda kanal hatalı duruma geçer ve daha fazla gönderme veya alma işlemine izin vermez. Ancak, kanal hala bazı 'canlı' güvenlik durumlarını koruyabilir, bu nedenle kanalın kapanması, tüm durumun temiz bir şekilde kaldırılması için gerekli olacaktır.
  • Kanal kapatma: Açılışta oluşturulan güvenlik durumu kaldırılır ve oturumlar sonlandırılır. Güvenlik bağlamı belirteçleri iptal edildi. Kanal yığını kalır, ancak "aktif" bir güvenlik durumu veya yüklü kimlik bilgileri içermez.
  • Kanal serbest: Oluşturma sırasında oluşturulan kanal yığını ve tüm güvenlik kaynakları serbest bırakılır.

Güvenlik API'leri

Güvenlik için API belgeleri aşağıdaki konulara göre gruplandırılır.

Güvenlik

WWSAPI Güvenlik API'sini kullanırken uygulamalar birkaç güvenlik riskiyle karşı karşıya kalır:

yanlışlıkla yanlış yapılandırma

WWSAPI, güvenlikle ilgili bir dizi yapılandırma seçeneğini destekler. Örneğin bkz. WS_SECURITY_BINDING_PROPERTY_ID. WS_SECURITY_BINDING_PROPERTY_ALLOW_ANONYMOUS_CLIENTS gibi bu seçeneklerden bazıları, uygulamanın çeşitli Güvenlik Bağlamaları tarafından sağlanan varsayılan güvenlik düzeyini düşürmesine olanak sağlar. Sonuçta ortaya çıkan saldırı vektörleri olmadığından emin olmak için bu tür seçeneklerin kullanımı dikkatli bir şekilde değerlendirilmelidir.

Ayrıca, yukarıda açıklandığı gibi WWSAPI, bir uygulamanın güvenlik kimlik bilgileri iletilmiş olsa bile şifrelemeyi devre dışı bırakma gibi bir ileti değişiminin güvenliğini tamamen sağlamak için gereken belirli adımları kasıtlı olarak devre dışı bırakmasına izin verir. Bu, belirli senaryoları etkinleştirmek için izin verilir ve genel iletişim için kullanılmamalıdır. Bu senaryoları etkinleştirmek için WS_PROTECTION_LEVEL özel olarak azaltılmalıdır ve uygulamalar kesinlikle gerekli olmadıkça bu değeri değiştirmemelidir, bunun yapılması güvenli bir yapılandırma sağlamak için tasarlanmış birçok denetimi devre dışı bırakacaktır.

Gizli bilgileri bellekte depolama

Bellekte depolanan parolalar gibi gizli bilgiler, ayrıcalıklı bir saldırgan tarafından örneğin sayfa dosyası yoluyla ayıklanmaya karşı savunmasızdır. WWSAPI, sağlanan kimlik bilgilerinin bir kopyasını oluşturur ve bu kopyayı şifreleyerek özgün verileri korumasız bırakır. Özgün örneği korumak uygulamanın sorumluluğundadır. Ayrıca, şifrelenmiş kopya kullanıldığı sırada kısa bir süreliğine şifresi çözülür ve bu durum ayıklama için bir pencere açar.

Hizmet reddi

Güvenlik işleme önemli kaynakları tüketebilir. Her ek güvenlik bağlaması bu maliyetleri artırır. WWSAPI, bir güvenlik doğrulama hatasıyla karşılaşıldığında güvenlik işlemeyi durdurur, ancak önemli bir çalışma gerçekleştirilinceye kadar yetkilendirme kararları gibi bazı denetimler gerçekleşmeyebilir.

Sunucuda bir ileti işlenirken, güvenlik durumu ileti yığınında depolanır. Uygulama, WS_MESSAGE_PROPERTY_HEAP_PROPERTIES aracılığıyla bu yığının boyutunu azaltarak güvenlik işlemi sırasında bellek tüketimini sınırlayabilir. Ayrıca, WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING gibi bazı güvenlik bağlamaları sunucunun istemci adına kaynak ayırmasına neden olabilir. Bu kaynakların sınırları aşağıdaki WS_SECURITY_BINDING_PROPERTY_ID değerleriyle yapılandırılabilir:

  • WS_GÜVENLİK_BAĞLAMA_ÖZELLİĞİ_GÜVENLİK_BAĞLAMI_MAX_BEKLEYEN_BAĞLAMLAR
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_ACTIVE_CONTEXTS
  • "WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_RENEWAL_INTERVAL"
  • WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_ROLLOVER_INTERVAL

Bu sınırların düşük değerlere ayarlanması en yüksek bellek tüketimini azaltır, ancak kotaya ulaşıldığında meşru istemcilerin reddedilmesine neden olabilir.