Güvenlik Politikaları Yazı Dizisi - II

Güvenlik Politikaları Yazı Dizisi - II Güvenlik Politikaları Yazı Dizisinin ikinci ve son makalesi olan bu makalemizde, bir önceki makalemizde bahsi geçen kod grup hiyeraşisini daha detaylı inceleyeceğiz. Bir önceki makalemizde de yer alan aşağıdaki kodu tekrar inceleyelim; namespace System.Security.Policy { public interface IMembershipCondition { bool Check(Evidence evidence); // .. // .. } }IMembershipCondition kendisine verilen kanıta göre üyelik kontrolü yapmaktadır. Bir politika seviyesi ve bir assembly için kök kod grubunun üyelik kontrolünü yapmak istediğimizde kodumuz şu şekilde olacaktır;static bool IsInRootGroup(Assembly assm, PolicyLevel level) { // Assembly"deki kanıtı alıyoruz Evidence evidence = assm.Evidence; // Kök kod grubu için üyelik koşulunu alıyoruz CodeGroup group = level.RootCodeGroup; IMembershipCondition cond = group.MembershipCondition; // Üyelik kontrolü yapıyoruz return cond.Check(evidence); }Sistemde varsayılan olarak toplam 8 adet üyelik koşulu vardır. Kök kod grubu için gömülü tüm politikalar tüm kodlar ile uyuşacağından bu metot sürekli "true" döndürecektir. AllMembershipCondition için Check metotu kanıttan bağımsız olarak her zaman true döndürür. ApplicationDirectoryMembershipCondition için Check metotu yüklenen assembly"nin uygulama dizininden yüklenip yüklenmediğini kontrol eder. Bu koşul ASP.NET gibi uygulamayı sunan uygulama tarafından sağlanmak zorundadır. Geriye kalan 6 üyelik koşulu tipleri ise diğer 6 sunucu kanıt tipine karşılık gelmektedir ve bir kanta göre üyeliğin tespitinde kullanılır. Diğer altı üyelik koşulları ve bunlara karşılık gelen sunucu kanıt tipi aşağıda verilmiştir; Üyelik Koşulu Karşılık Kanıt Tipi Açıklama HashMembershipCondition Hash Kodun hash değerine göre kanıt kontrolü yapılır  PublisherMembershipCondition Publisher X.509v3"e göre kodun dijital imzasına göre kanıt kontrolü yapılır SiteMembershipCondition Site Web Uygulamasının geldiği siteye göre kanıt kontrolü yapılır StrongNameMembershipCondition StrongName Strong Name"e göre kanıt kontrolü yapılır UrlMembershipCondition Url Kodun geldiği url"e göre kanıt kontrolü yapılır ZoneMembershipCondition Zone Güvenlik Alanına göre kanıt kontrolü yapılırGüvenlik Alanlarına "Varsayılan Güvenlik Politikaları" adlı makalemizde yer vermiştik. Bir koda birden fazla izin kümesinin atanabilmesi için kod grupları hiyeraşik olarak alt kod grupları içerebilir. Bu alt kod gruplarına CodeGrup.Children özelliğiyle erişilebilir. Bir güvenlik politikasındaki kod grupları System.Security.Policy.UnionCodeGroup"u tipindeki örneklerden oluşur. Eğerki üyelik şartı sağlanırsa, UnionCodeGroup bütün alt kod gruplarını numaralandırır ve üyelik koşulu sağlananan alt kodların birleşimini alınır. Çünkü, bir alt kod grubunun da alt grupları olabilir, bu da çok fazlaca izin kümesinin hesaplanmasına yol açar. Bununla beraber, bir koda ait üyelik koşulu sağlanmazsa, o kod grubunun alt kod grupları dikkate alınmayacaktır. Yukarıdaki örnekte gösterilen kod grubu için, üyelik koşulu A grubu için sağlanmazsa, diğer kod grupları için hiç bir kontrol yapılmayacaktır, dolayısiyle sonuç kümesi boş küme olacaktır. Eğer A için üyelik koşulu sağlanırsa B, C, G, H, I ve N için üyelik koşulu aranacaktır. Yine aynı şekilde C için üyelik koşulu sağlanırsa D ve E grupları için üyelik koşulu kontrol edilecektir. Bu kontrol aşamalarının herhangi birinde bir güvenlik ihlaliyle karşılaşılırsa SecurityException atılacak ve erişim engellenecektir. Not : Bu makale Don Box"ın "The Security Infrastructure of the CLR Provides Evidence, Policy, Permissions, and Enforcement Services" ve MSDN"nin ilgili konu anlatımlarının yer aldığı "An Overview of Security in the .NET Framework" makalelerinden derlenmiştir.Yazar : Yunus Emre ALPÖZENe-Posta : yunus.alpozen et msakademik.net

Döküman Arama

Başlık :

Kapat