Makale Özeti

Bu makale dizinsinde COM+'ın ne olduğu, ne işe yaradığını anlatan temel bir dökümanı 9 bölümde inceleyeceğiz. Makale serisinin sonunda COM+ ın temel özellikleri hakkında bilgiye sahip olacak ve kolaylıkla kullanabilir halde olacağız.

Makale

Uygulama Güvenliği
 
COM+’ın sunduğu güvenlik seçeneklerini iyi anlamak uygulamak için atılacak iyi bir adım olduğundan bu kısımda bu konu üzerinde duracağız. Bu kısımda verilen authorization authentication ve role bilgileri eşliğinde  uygulamalarınızı esnek bir yapı olan Role-Based Security metodu ile güvenli kılabileceksiniz.
 
Authentication ve Authorization Nedir?
 
Bir uygulamayı güvenli kılabilmek için ilk önce authorization ve authentication kelimeleri arasındaki anlam kargaşasını çözüp bu kelimelerin anlamlarını iyice oturmak gerekmektedir.
 
Authentication bir kullancının kimliğinin doğrulanıp o kullanıcın tanınması işlemidir. Yani bir kullanıcın bazı bilgilerinin yetkili bir authority tarafından kontrol edilip o kullanıcının sistem tarafından tanınmasıdır. En bilinen örnekleri işletim sistemi açılışında kullanıcının sistem tarafından tanınması için sorulan kullanıcı adı ve şifredir. Bunun dışında örnek olarak Internette geniş bir yer kaplayan Microsoft Passport güvenlik doğrulamasını ve geliştirilmiş birçok uygulamada kullanıcılara sorulan kullanıcı adı ve şifre gibi bilgileri örnek gösterebiliriz.
 
Authorization ise bir kullanıcının gerçekleştirmek için istekte bulunduğu işlemi gerçekleştirmek için gerekli minimum yetkiye sahip olup olmadığının kontrolüdür. Authorization kontrolünün gerçekleşebilmesi için ilk önce kullanıcının authentication ile tanınmış ve erişebileceğ kaynakların Role-Based Security ile belirlenmiş olması gerekmektedir.
 
Güvenlik Tipleri
 
Windows işletim sistemi, DCOM, IIS, Asp.NET, ve .NET Framework bir kullanıcıyı tanıyabileceğimiz authentication ve çeşitli kaynaklara erişimini sınırlandırabileceğimiz authorization metodlarını bize sunmaktadır. Bu güvenlik metodlarını ve birbirleriyle nasıl çalıştıklarını ve haberleştiklerini bilmek uygulamalarınızda izleyeceğiniz güvenlik prosedürleri için son derece önemlidir.
 
Şimdi bu güvenlik metodlarından Windows güvenliğini inceleyelim. Windows işletim sistemlerinde tanımlı güvenlik kullanıcılarla ve kullanıcın ait olduğu guruplarla sağlanmaktadır. Bunun sağlanması kullanıcı tanınması ve obje tabanlı erişim kontrolü ile sağlanır. Kullanıcılar ve Gruplar sistem kaynaklarına erişebilmek için bir authorization mekanizmasından geçer ve kullanıcının işletim sistemi aracılığıyla yapmak için istekte bulunduğu işlemlere yetkisi olup olmadığı kontrol edilir. Windows işletim sistemlerinden administrator kullanıcı grubuna ait kullanıcılar başka bir deyişle yöneticiler Sistem üzerinde bulunan kaynaklara erişimleri kısıtlayabilmek için bu kaynaklara güvenlik kısıtlamaları getirebilir ve o kaynağa erişme isteği kabul edilen veya rededilen kullanıcıları görebilirler.
 
Software Restriction Policy (Yazılım Sınırlama Poliçesi) Bu özellik Windows XP ile beraber gelen bir özelliktir ve sistemleri bilinmeyen ve tehlikeli kodlardan uzak tutması hedeflenmiştir. Bu sistemin temelinde authenticate olmuş kullanıcın haklarına göre güvenilen kodların belirlenmesi ve bunun dışındakilerin çalışmasının yasaklanmasıdır.  Bilinmeyen Kod virüs olabiliritesi yüksek olan veya kurulu programlardan herhangi biri ile çakışma yaratabilecek  kod anlamına gelmektedir. Ve bu kod izole edilmiş doğal olmayan bir ortamda çalıştırılır ve kullanıcın güvenlik yetkilerine bağlı kaynaklara erişmesine izin verilmez. Bu sistemin temelinde iki çeşit güven düzeyi vardır. Unrestricted(Sınırlamasız ) ve Disallowed (Reddedilmiş) . Burada unutulmaması gereken unrestricted kodun kullanıcın tüm güvenlik erişim haklarına sahip olacağıdır. Bu yüzden bunu güvenliğinden 100% emin olmadığınız kodlara uygulamamanız gerektiğidir. Disallowed kod ise kullanıcın güvenlik haklarına erişemeyeceği veya unrestricted ortamda çalışan kodlara erişemeyeceği yapay bir ortamda çalıştırılır.
 
Bir sistem için bu güvenlik ayarlarını Administrative Tools (Yönetimesel Araçlar) menüsü altında bulunan Local Security Policy (Yerel Güvenlik İlkesi) aracından ayarlayabilirsiniz. Ayrıca COM+ uygulamalarına ait güvenlik kısıtlamalarını programatik olarak veya Component Services (Bileşen Hizmetleri) yönetimsel aracını kullanarak her bir uygulama için bağımsız ayarlayabilirsiniz. Eğer bir COM+ uygulaması için herhangi bir güvenlik ayarı yapılmamışsa sistem genelinde geçerli olan güvenlik ayarları kullanılır. Ancak burada dikkat edilmesi gerekli olan bir nokta Unrestricted Trust Level’i olan bir Com+ uygulamasının sadece Unrestricted Trust Level’e sahip bileşenleri yükleyebilmesidir. Buna karşın Disallowed Trust Level’e sahip bir COM+ uygulaması her tür bileşeni yükleyebilir ancak kullanıcı yetkilerinin hepsine erişemez.
 
DCOM Security (DCOM Güvenliği) : COM+ ile birlikte gelen güvenlik ayarlarının birçoğu DCOM ile gelen güvenlik özellikleri temel alınarak geliştirilmiştir. DCOM’un bize sunduğu güvenlik özelliklerden bazıları Access Permission (Erişim İzni), Launch Permission (Uygulama Başlatma İzni),Configuration Settings(Registry Ayarlama İzni),Authentication Level(Uygulamanın Data veya Kullanıcı Bazında Gereksinim Duyduğu Authentication), Impersonation Level(Kullanılan Bileşenlerin Uygulamanın Kullanıcı Doğrulamasına Ulaşması).
 
IIS Security (IIS Güvenliği) : IIS bize 3 temel güvenlik metodu sunmaktadır bunlar; Basic Authentication, Digest Authentication, Integrated Windows Authentication’dır.
 
IIS Basic Authentication : Kullanıcı bilgilerine erişmek için en çok kullanılan metodlardan biridir. Bu ayarın yapılmış olduğu bir web sunucusuna kullanıcı bağlandığı zaman karşısına kullanıcı adı ve şifresi soran bir pencere açılır, kullanıcının bu pencereye girmiş olduğu bilgi base-64 yapısında sunucuya network üzerinden yollanır ve sunucu bilgileri onaylarsa bağlantı kurulur, bilgilerin doğrulanmadığı durumda ise kullanıcıya tekrardan giriş penceresi gösterilir. Bu yöntemin en büyük avantajı Hypertext Transfer Protocol(HTTP)’nin bir özelliği olduğundan dolayı birçok Web Browser tarafından desteklenmesidir. Ancak bir dezavantajı ise kullanıcı şifrelerinin cryptolanmadan gönderilmesidir.Bu sebepten dolayı networkünüzü dinleyen programlar aracılığıyla şifreleriniz çok rahat bir biçimde ele geçirilebilir. Bundan dolayı SSL kullanmıyorsanız veya server ve clientlar arasında güvenli bir ağ kurulu değilse bu yöntemi kullanmanız tavsiye edilmez.
 
IIS Digest Authentication : Basic Authentication’un güvenlik açıklarını kapatmak için W3C (World Wide Web Consortium) tarafından geliştirilmiş kerberos kadar güvenli olmayan bir geçici çözümdür. Bu yöntemde kullanıcı adının, şifrenin, istekte bulunulan kaynak, http metodu ve random üretilmiş bir değerin kombinasyonu bir hashing algoritması sayesinde hexadecimal bir karakter kümesine çevrilir ve sunucudan geri döner. Hashing authenticationun tek taraflı geçmesini sağlar ve geri çözülemez.
 
IIS Integrated Windows Authentication : Eskiden NTLM olarak bilinen bu yöntem gayet güvenlidir çünkü kullanıcı adı ve şifre network üzerinden gönderilmez istekte bulunulan browser hashlenmiş bir şekilde mevcut credential’larını sunucuya yollar. Integrated Wındows Authentication kendi authentication protokolünü kullanabileceği gibi Kerbos v5 authentication protokolünü de kullanabilir.
 
ASP.NET Security (ASP.NET Güvenliği) : Asp tarafından sunulan Windows authentication metodu dışında Asp.Net iki yeni metod sunmaktadır. Bunlar; Forms Authentication ve Passport Authentication’dur.
 
Forms Authentication : Authenticate’ine izin verilmeyen isteklerin otomatik bir sayfaya yönlendirilip burada alınan bilgilerin uygulama tarafında kontrol edildikten sonra kullanıcının o sayfaya girişine izin veren bir yöntemdir. Şu an birçok yazılım geliştirici tarafından kullanılan bu yöntem gayet başarılıdır.
 
Passport Authentication : Microsoft tarafından sunulan merkezi bir authorization servisi olan bu yöntemle kullanıcıların sitenize girmesini sağlayabilirsiniz.
 
COM+ Security : COM+ güvenliğinde Role Based Security bir dönüm noktası olmuştur. Bu sistem DCOM güvenlik modelinin ve RPC(Remote Procedure Call) güvenlik metodlarının bir bileşimidir. Bu yöntem sayesinde güvenliği sağlamak için çok kod yazmaktan kurtulursunuz.  Bu yöntemde kullanıcın kendine özel kimliği değil kullanıcın erişebileceği mantıksal kurallar önemlidir. Role Based Securty ‘e ek olarak COM+ 1.5’de özel bileşen yaratma imkanı vardır. Özel bileşen yaratarak bir bileşeni sadece bir uygulamadaki diğer bir bileşen için kullanılabilir kılma imkanı vardır.
 
.Net Framework Security : .Net Frameworkte 2 çeşit güvenlik vardır bunlardan birincisi Role Based Security diğeri ise Code Access Security’dir. Role based Security Temeli COM+ da kullanılan role based security ile aynıdır. Code Access Security’i inceleyecek olursak bu güvenlik sisteminde ise kodun sadece gerekli kaynaklara erişimine izin veren bir mekanizma söz konusudur.
 
SQL Server Security : SQL Server bize iki çeşit güvenlik sistemi sunmaktadır. Bunlardan biri Windows Authentication iken diğeri ise Sql Authentication’dur. Windows Authenticationda Windows Kullanıcı guruplarına database veya objeler üzerinde yetkiler vermek mümkündür. Bunun yanısıra Sql Server bazında tanımlı kullanıcılar yaratarak bu kullanıcılara çeşitli objeler üzerinde yetki verebilirsiniz.
 
Role Based Security Nedir
 
COM+’ın güvenlik sistemininde dayandığı bu yöntemin temelli roller yaratarak bu rollere ait kullanıcılara çeşitli bileşenler, kaynaklar veya diğer işlevsellikler üzerinde yetki vermektir. Rol kavramını daha ayrıntılı inceleyelim. Rol bir uygulamada aynı yetkilere sahip birden fazla kullanıcıları guruplayabileceğimiz yapılardır. Böylece biz ayarlarımızı ve sınırlandırmalarımızı roller üzerinde yaparız ve bu role ait olan tüm kullanıcılar için geçerli olmuş olur. Başka bir avantaj ise bir kullanıcıyı daha yetkili kılmak istediğimizde sadece gurubunu değiştirmemiz gerekmesidir.
 
 
 
Erişim Kontrollerinin Yapılması
 
Erişim kontrolleri bir server uygulaması çalıştırılmasını gereken aktivasyon yapıldığında COM Service Control Manager (SCM) tarafından, Çalışmakta olan process’e bir istekte bulunulduğu zaman veya bir isteğin bir kitaplığa veya uygulamaya erişmesi durumunda yapılır. Ancak COM SCM uygulama bir server uygulaması ile istek geldiği zaman çalışabilmektedir. Bunun sebebi ise sadece sunucu uygulamalarının kendi processlerinde çalışmasıdır.
 
Güvenlik kontrolleri sadece application sınırları dışına taşan isteklerde kontrol edilmektedir. Yani bir uygulama içinde çalışan iki bileşenden biri diğerini çağırdığı zaman bu kontrol gerçekleşmez. Ancak bir uygulamadaki bileşenin diğer bir uygulamadaki bileşene erişmesi durumunda bu güvenlik kontrolleri yapılacaktır.Bundan dolayı iki bileşeniniz varsa ve ikisinin birbirlerini çağırması durumunda güvenlik kontrolü yapılmasını istiyorsanız bu bileşenleri farklı COM+ uygulamalarının içine koymalısınız.
 
Bir client bileşene istekte bulunduktan ve bileşenin erişme yetkisi onaylandıktan sonra COM+ Interceptıon katmanı COM+ kataloğuna erişir ve istekte bulunan client’in rol yetkilerini kontrol eder. Bu sayede sadece çeşitli roller ve bu rollerin bileşenler veya metodlar üzerindeki yetkilerini tanımlayarak kod yazmaya gerek kalmaksızın uygulamanın güvenlik ayarlarını yapabiliyor durumda olabiliriz. Şimdi ise Role Based Security ise ne gibi güvenlik kısıtlamaları koyabiliriz bunu inceleyelim.
 
Role Based Security Düzeyleri
 
Role based security kullanarak bir uygulama içindeki rolleri belirleyebilir ve bunları bileşenlere, Interface’lere veya metodlara atayabiliriz. Burada önemli bir nokta bir rolün belirlenmesi ancak herhangi bir bileşene, interface’e veya metoda atanmaması durumunda o rolün tüm uygulamaya erişiminin sınırlanması anlamına gelmesidir.  Bunun çözümlerden biri ise yazacağınız uygulamanın analizi ve dizaynı sırasında kullanmanız gereken tüm rol gereksinimlerini belirlemektir. Bu sayede role based security de kullanıcıları ve yetkilerini çıkarmakta sizin için çok büyük kolaylıklar sağlanacaktır.
 
Bir diğer önemli nokta ise atanan yetkilerin alt katmanlarda aynen geçerli olmasındır. Örneğin bir bileşene bir rol için yetki atadığınız zaman o rol metodlardada aynı yetkilere sahip olacaktır. Burada tavsiye edilen diğer bir uygulama ise rollerin sadece işlerine yarayacak metodlara veya interface’lere erişebilir durumda olmalarını sağlayacak şekilde bir yetkilendirme yapılmasıdır.
 
Özel Bileşenler
 
Bazı özel durumlarda bileşenlerin sadece aynı uygulama içindeki bileşenlerden çağrılabilir durumda olamasını istersiniz bu durumda rol oluşturmak gibi gereksiz bir maliyete girmektense COM+ 1.5 ile birlikte gelen IsPrivateComponent metodunu kullanmak bize büyük kolaylık sağlayacaktır. Daha önceki COM+ sürümlerinde böyle bir yetenek bize sunulmamaktaydı. Her ayar gibi bu ayarıda yapmak için iki yöntem vardır bunlardan birincisi kod ile diğeri ise Component Services Administrative Tool’u kullanaraktır. İlk önce bu ayarı kodla nasıl yapabileceğimizi inceleyeceğiz.
 
 
<PrivateComponent()> _
Public Class PrivateComponentBileseni
    Inherits ServicedComponent
End Class
 
Şimdi ise Component Services Administrative Tool’u kullanarak nasıl yapacağımızı inceleyecek olursak bunu bileşenin özelliklerindeki Aktivaysyon(Activation) sekmesindeki Mark Component Private To Application kutucuğunu işaretleyerek yapabilirsiniz.
 
 


oztamer@hotmail.com
tamer.oz@yazgelistir.com
oztamer@hotmail.com