Cuma, Eylül 30, 2011

SharePoint Güvenlik Tipleri

SharePoint'in güvenlik tipleri üzerinde konuşmadan önce ilk olarak kimlik denetimi (Authentication) ve yetkilendirme (Authorization) kavramları üzerinde durmak lazım. Authentication yani kimlik denetimi veri tabanında kullanıcının olup olmadığı ve eğer varsa doğru parolayı bildirip bildirmediği ile ilgilenmektedir. Eğer kullanıcı doğru bilgileri vermedi ise sisteme giremez. Kullanıcı sisteme girdikten sonra ne yapacağı ise Authorization ile belirtilmektedir. Kelime anlamından da anlaşılacağı gibi Authorization kullanıcının sisteme girdikten sonra sistemde hangi bölümlere erişeceğini belirtir. SharePoint'e bu bilgiler çerçevesinden bir kez daha baktığımızda göreceğiz ki SharePoint'in arayüzü üzerinden gerçekleştirmiş olduğumuz güvenlik ayarlarının tamamı yetkilendirme ayarlarıdır. Peki kimlik denetimi tarafını nasıl çözüyoruz? Kimlik denetiminde iki yöntem söz konusudur bunlar ASP.NET'te de olan Windows tabanlı güvenlik ve Forms tabanlı güvenliktir.

SharePoint 2010'la birlikte bu güvenlik modlarının kullanımı ve isimlendirmesi de biraz değiştirildi. Temel anlamda yine iki farklı güvenlik modu bulunmaktadır. Bunlar;

  • Claims Based Authentication
  • Classic Mode Authentication

Olarak isimlendirilmektedir.

Classic Mode Authentication sadece Windows tabanlı güvenliğe destek verir ve makinenin yerel kullanıcıları ve yerel grupları ile dahil olunan domain içindeki kulllanıcılar ve gruplar kullanılabilir. Classic Mode Authentication seçili ise kullanıcıların Authenticate olması için genellikle çok fazla ayar yapmanıza gerek kalmamaktadır. Kullanıcı eklerken SharePoint domaini tarayıp kullanıcıları sizin için arayacaktır. Kullanıcılar Authenticate olurken ise iş henüz SharePoint'e devredilmeden IIS devreye girer ve kimlik denetimini gerçekleştirir. Windows tabanlı güvenlik Form tabanlı güvenliğe göre daha yüksek seviye bir koruma sağlıyor olacaktır. Windows tabanlı güvenliğin içerisinde de güvenlik seviyeleri alt kırılımlara ayrılmaktır bu alt kırılımlar ve detayları için IIS güvenlik makalelerini takip etmenizi öneririm.

Claims Based Authentication yönteminde ise kullanıcıların kimliklerini ister Windows Tabanlı güvenlik ile isterseniz de Form tabanlı güvenlik ile denetleyebilirsiniz. Eğer isterseniz bir Web Application için her iki yöntemi de tercih edebilirsiniz. Kullanıcılar ne taraftan Authenticate olmaları gerektiğini kendileri seçip doğru kullanıcı adı ve parola belirttikten sonra sisteme gireceklerdir. Form tabanlı güvenliği tercih ettiğiniz senaryoda ise kullanıcı yönetimi üstlenecek olan bir tane Membership, rollerin yönetimini üstlenecek olan bir tane de Role sağlayıcısı belirtmek zorundasınız. Burada ASP.NET'in Membership ve Role Provider'ını tercih edebileceğiniz gibi kendiniz de yeni bir Provider geliştirebilirsiniz. Benim önerim, eğer kullanıcılar ve roller sıfırdan oluşturulacaksa ASP.NET Membership Provider'ı kullanmanız olacaktır çünkü kullanıcıların yönetimi bu provider'da oldukça profesyonel bir şekilde ele alınmıştır ve yine kullanmak için sizin yapmanız gereken ayarlar dışında fazla bir şey yoktur. Kullanıcıları daha önce var olan tamamen özel bir veri tabanında saklıyorsanız ya da kullanıcıların var olan domain'e girerken kullandıkları kullanıcı adı ve parolaları ile sisteme girmesini istiyorsanız mutlaka yeni bir Provider yazmak durumundasınız. Her iki çözüm için de MSDN üzerinde oldukça yeterli makaleler mevcuttur. Bu konuları özellikle ASP.NET sitelerinde ararsanız daha fazla sonuca ulaşırsınız.

SharePoint 2010'da güvenlik ayarlarını gerçekleştirirken karşılaştığımız bir problemi de sizlerle paylaşayım: Güvenlik modu Classic mode olarak ayarlanmış bir WebApplication'un güvenlik modunu Claims Based güvenliğe döndürmek için arayüz üzerinden destek maalesef sağlanmıyor ve bu sıklıkla bizim karşımıza çıkıyor. Bunun nedeni daha önce Forms Authentication desteğine gerek görülmeyen bir WebApplication'un Classic modda oluşturulmasından kaynaklanmaktadır. Çözüm olarak SharePoint PowerShell üzerinden aşağıdaki komutu çalıştırmanız gerekiyor. Aşağıdaki kodları SharePoint'in Management Shell'i üzerinde çalıştırdığınıza web uygulamanız artık Claims Based güvenliği kullanıyor olacaktır ve yukarıda açıkladığımız her şey artık bu WebApplication için de geçerlidir.

$w = Get-SPWebApplication "http://<server>/"
$w.UseClaimsAuthentication = 1
$w.Update()
$w.ProvisionGlobally()