Mynak.Com


Hoşgeldin Ziyaretçi ( Giriş | Kayıt Ol )

Şuanda Bulunduğunuz Sayfanın Başlığı :

Rol Bazında Güvenlik (Role Based Security) - Mynak.Com




 
Reply to this topicStart new topic
Rol Bazında Güvenlik (Role Based Security)
JacKaL
mesaj 01.05.2008 -18:20
İleti #1


Grup: Üyeler
İleti: 290
Katılım: 10.02.2008
Üye No.: 136
Son Ziyaret
Tarih: 15.05.2008
Saat: 15:32:03
Cinsiyet :
Nereden: İzmir / Karşıyaka






Kod Erişim Güvenliği, kullanıcı ve ya rollerin değil de kodun kimliği ile ilgilenen bir güvenlik alt yapısıdır. Bununla beraber, güvenlik ayarlarını hala daha kullanıcı kimliği ile ifade etmemiz gerekmektedir. Çalışma zamanı güvenlik sistemi rol bazında güvenlik özelliklerini desteklemektedir. Bu yazımızda rol bazında güvenliği ele alacağız.

Teknik detaylara başlamadan önce kullanıcı ve rol tabanlı bir güvenlik sisteminin gerekliliğini bir göz atalım. Belirli işlemlerin belirli kullanıcıların yetkisi dahili yapılabiliyor olması, aslında günlük hayatımızdaki birebir yaşadığımız bir kontrol mekanizmasıdır. Örneğin, bir bankanın kasasının anahtarı sadece belirli üst düzey banka müdürlerinde vardır. Burada kasaya açmak için gereken yetki anahtardır; ve bu anahtara sahip kişiler de ilgili yetkiye sahip kullanıcılardır. Biraz daha bilgisayara yakın bir örnek vermek gerekirse, hotmail"den maillerinizi kontrol edebilmeniz için sisteme kendinizi .net passport" unuz ile tanıtmanız gerekmektedir. Bu sayede sistem size sadece sizin maillerinizi getirecektir. Banka örneğinde anahtara alan yetkisiz bir kişi yetkili bir kişi gibi kasayı açabilir. Yine hotmail örneğinde olduğu gibi email adresinizin şifresini bilen bir kişi sisteme kendisini siz gibi tanıtıp maillerinize erişebilir. Buradaki sorumluluk artık kullanıcıya bırakılmıştır.

Buradaki en önemli sorun kullanıcının kimliğinin tespit yöntemidir. Var olan yöntemlerden en çok kullanılanı bir kullanıcı adı ve şifre kullanımıdır. Bunun dışında parmak izi kontrolü, retina taraması, kan testi, dna testi gibi çok ileri yöntemler de yer almaktadır. Bu yöntemler gizli bilgilerin değeri ve maliyetine göre yer yer kullanılmaktadırlar. Bu yöntemlerin yüksek maliyetlerine rağmen kırılabilirlikleri, biraz hayal gücümüz biraz da günümüzün son teknoloji filmleri yardımıyla ispatlanabilir. Hepimizin izlemiş olduğunu düşündüğüm "Azınlık Raporu" filminde, o kadar büyük güvenlik önlemleriyle korunan yerlere bile sızılabilmişti. DNA testi neredeyse en güvenli sistem olarak ele alınsa bile, başarı oranı %99 olarak tanımlanır. Peki %100 güvenli bir sistem kurulamaz mı? Cevabımız belli, tabi ki de HAYIR !! Ancak amaç olabilecek en iyi güvenlik sistemini kurmak ve gereken önlemleri almaktır. Şu an ki bilinen teknolojiyle en güvenli kimlik tespit sistemi üre testidir ve başarı oranı %99.99 olarak tanımlanır. Üre testi, DNA testi üzerine kuruludur. Bu sayede güvenliğin %99"luk şartını sağlamıştır. Ancak geriye kalan %0.99 artısı ise biraz daha tıbbi bir konuya dayanmaktadır. Üre ile vücuttan atılan bazı mineraller vb bilgiler kişinin kanındaki adrenalin miktarı hakkında bilgi edinebilir, bu kişinin şu an için baskı altında olup olmadığını sorgulayabiliriz.

Üre testinin tüm artılarına rağmen kullanılamayacak olması, örnek alımının ahlaki değerlerle pek örtüşmemesini sayabiliriz. Düşünün bir kere, hotmail"den maillerinize bakmak istiyorsunuz, bilgisayarınızdan örnek için bir kap çıkıyor ve sisteme girişiniz yapılıyor. Gerçek anlamda bir güvenlik yapılabilmesi için bu üre testinin sunucuda yapılması gerekir yoksa sistemimiz replay adını verdiğimiz yeniden gönderme saldırılara açık kalacaktır. Önemli bir sorunda burada çıkacaktır; örneğin internet üzerinden iletimi gündeme gelecektir Daha iyi bir yöntem önerilinceye kadar kullanıcı ve şifre üzerine dayalı bir güvenlik sistemi kullanmaya mahkumuz..

Rol bazında güvenlik sisteminin iki temel kavramdan oluşur: Kullanıcılar ve Roller. Günümüz işletim sisteminin bir çoğunun güvenlik sisteminin temeli de aslında rol bazında güvenliğe dayanmaktadır. Rol bazında güvenliği ile temelinde iki temel soyutlama yapılmıştır: Kimlik (Identity), kullanıcının tanımıdır. Yönetici (Principal), yetkinin tanımıdır.
Kimlik, kodu çalıştıran kullanıcıyı temsil eder. Bu kullanıcı o uygulama içinde tanımlanmış sanal bir kullanıcı olabileceği gibi işletim sistemine ait bir kullanıcı da olabilir. Yönetici ise kullanıcıları, ait oldukları roller ile tanımlar. Kullanıcının kimliğini tanımlayan sınıflar IIdentiy arabirimi gerçeklemekt zorundadır. .NET Çerçevesinde bu arabirimi varsayılan olarak gerçekleyen bir sınıf mevcuttur ve bu sınıf GenericIdentity sınıfıdır. Yöneticiyi tanımlayan sınıflarsa IPrincipal arabirimini gerçeklemek zorundadır. .NET Çerçevesinde bu arabirimi varsayılan olarak gerçekleyen bir sınıf mevcuttur ve bu sınıf GenericPrincipal sınıfıdır.

Çalışma zamanında her iş parçacığıyla birebir tek bir prensip nesnesi ilişkilendirilmektedir. Çalışan uygulama güvenlik gereksinimlerini yerine getirerek, bu nesneye erişebilir hatta değiştiredebilir. Her prensibe tek bir kimlik nesnesi ilişkilendirilebilir. Kısaca çalışan her iş parçacığı ile kimlik arasında ve kimlik ile prensip arasında birebir ilişki vardır.Mantıksal olarak çalışma zamanı ve nesnelerin yapısı şu şekilde ifade edilebilir :
(IMG: Linkleri Görebilmek İçin Üye Olunuz!)

Yukarıda resim ile ifade edilen yapıyı şimdi kod ile gerçekleştirelim;
using System; using System.Threading; using System.Security; using System.Security.Principal; namespace RoleBasedSecurity { class Sample { static void Main(string[] args) { String [] roles = {"Analist", "Programcı"}; GenericIdentity i = new GenericIdentity("yemre"); GenericPrincipal g = new GenericPrincipal(i, roles); Thread.CurrentPrincipal = g; if(Thread.CurrentPrincipal.Identity.Name == "yemre") Console.WriteLine("Merhaba Yunus Emre"); if(Thread.CurrentPrincipal.IsInRole("Programcı")) Console.WriteLine("Merhaba Programcı"); if(Thread.CurrentPrincipal.IsInRole("İşçi")) Console.WriteLine("Merhaba İşçi"); } } }Bu örnekten de anlaşılacağı yemre kimliğine sahip kullanıcının programcı ve analist olmak üzere birden fazla role eklenmiştir. Dikkat ederseniz tek bir kimlik için tek bir yönetici tanımlı ancak bunlara birden fazla rol ekleyebiliyoruz. Programa kullanıcı kimliği koddan yemre olarak tanımlanmıştır. Bu yüzden programın sonucunda;
Merhaba Yunus Emre Merhaba Programcıçıktısı üretilecektir. Burada kullanıcı bilgisi çağırma yığıtı(call stack) adını verdiğimiz yapı ile taşındığı için burada tanımlanmış olan kimlik ve yönetici bilgisine başka fonksiyondan başka bir sınıftan, hatta başka bir assembly"den erişebilirsiniz. Önemli olan iş parçacığının değişmemesidir.

Bu örnekle program içinde sanal bir kullanıcı oluşturduk ve onu kullandık. Ayrıca, uygulamamızı Microsoft Windows güvenlik modelini kullanarak da yapabilirdik. Bunun için Microsoft Windows Güvenliğini kullandığımızı seçmemiz yeterli olacaktır. Yukarıda yaptığımız uygulamanın bu modelle yapılmış hali de şu şekilde olacaktır;

using System; using System.Threading; using System.Security.Permissions; using System.Security.Principal; namespace RoleBasedSecurity { class Sample { static void Main(string[] args) { String [] roles = {"Analist", "Programcı"}; AppDomain.CurrentDomain.SetPrincipalPolicy( PrincipalPolicy.WindowsPrincipal ); GenericPrincipal g = new GenericPrincipal( System.Threading.Thread.CurrentPrincipal.Identity, roles); Thread.CurrentPrincipal = g; Console.WriteLine( System.Threading.Thread.CurrentPrincipal.Identity. Name ); if (Thread.CurrentPrincipal.IsInRole("Programcı") ) Console.WriteLine("Merhaba Programcı"); if (Thread.CurrentPrincipal.IsInRole("İşçi")) Console.WriteLine("Merhaba İşçi"); } } }Bu programın çıktısı her bilgisayarda farklı olacaktır, çünkü kullanıcı kimliği windows tarafından kontrol edilir. Örneğin şu an bu makaleyi yazdığım benim bilgisayarımda sonuç şu şekildedir;COMPUTER\Yunus Emre ALPÖZEN Merhaba ProgramcıTahmin edeceğiniz üzere COMPUTER bilgisayarımın adı, Yunus Emre ALPÖZEN ise bilgisayarımı açarken kullandığım kullanıcı adım. Rol bazında güvenlik sistemini ve artılarını tek bir makalede anlatıp bitirmek imkansızdır. Rol bazında güvenlik sistemleri özellikle ASP.NET uygulamalarında sağlam bir güvenlik altyapısı kurmanıza olanak tanır...

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.
Kolay gelsin.





JacKaL | StyL3 2008 © Bu Kral Hep Mekansız, Hep Kuralsız!
Go to the top of the page
 
+Quote Post


Etiketler
Bu içeriğe henüz etiket eklenmemiş

Reply to this topicStart new topic
1 kullanıcı bu başlığı okuyor (1 Misafir ve 0 Gizli Kullanıcı)
0 üye:

 

Collapse

> Benzer Konular

    Konu Başlığı Yanıtlar Konuyu Başlatan Okunma Son Faaliyet
No New Posts   0 NTVMSNBC 93 19.12.2007 -20:16
Son İleti: NTVMSNBC
No New Posts   0 NTVMSNBC 107 23.12.2007 -13:10
Son İleti: NTVMSNBC
No New Posts   0 NTVMSNBC 67 22.01.2008 -09:53
Son İleti: NTVMSNBC
No New Posts   0 NTVMSNBC 64 13.02.2008 -12:58
Son İleti: NTVMSNBC
No New Posts   0 JacKaL 126 16.02.2008 -20:16
Son İleti: JacKaL


Collapse

> Konuya Verilen İnternet Bağlantıları

Sayfa Tarih Ziyaretler
asp.net role tabanli guvenlik - Google'da Ara 18.10.2008 -15:32 1
islam üresinin msn üniversitede okuyor - Google'da Ara 21.10.2008 -12:49 1
role tabanlı güvenlik - Google'da Ara 07.11.2008 -14:37 1
asp net grup yetkilendirme role - Google'da Ara 08.11.2008 -01:22 1
Role-Based Security - Google'da Ara 17.11.2008 -08:33 1
roles saat - Google'da Ara 17.11.2008 -23:56 1



RSS Basit Görünüm Tarih: 22.11.2008 -11:10
Konu Arşiv Görünümü
2 3 4 5 6 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 97 98 99 100 101 102 103 27 28 29 30 31 32 33 34 35 36 37 38 91 92 93 39 40 86 41 106 122 42 43 44 87 45 46 47 105 48 49 50 51 52 53 88 55 56 54 57 58 59 63 60 61 62 64 65 66 80 81 85 104 69 82 83 84 70 71 89 90 94 95 96 68 67 130 131 138 132 134 136 133 135 137 107 108 109 110 111 112 113 114 115 116 121 117 118 119 120 123 124 125 126 127 128 129 72 73 74 75 76 79 77 78

Desteklediklerimiz
Forum Ayrıntı | adtech ile reklam 2.0 dönemi başlıyor ve Trkycmhrytllbtpydrklcktr r10.net seo yarışması


Dünyayı daha iyi yapmayan insan, insan değildir.