İnternet
Portallerinde tahmin edebileceğimiz üzere çoğunda public kullanıcıların kısıtlı
miktarda erişimleri vardır. Diğer bir deyişle anonim kullanıcıların okuma
haklarının olması durumudur. Bu durum SharePoint 2007 ve 2010’da yanında bir
sorunu da karşımıza çıkarmaktadır.
Anonim
kullanıcılara siteye erişim hakkı (Okuma vb.) verdiğimiz durumda sadece genel
arayüzdeki içerikleri görmekle kalmayıp sharepoint ile yerleşik (built in)
gelen birçok SharePoint Form sayfları
ve SharePoint sistem ayar sayfalarını
görebilecektir. Bu durumda tasarımsal açıdan sorun olduğu kadar güvrnlik açığı
olarak da nitelendirebileceğimiz bir sorun teşkil etmektedir.
A. SharePoint Form sayfasından kasıt http://sp10/Sayfalar/Forms/AllItems.aspx
gibi her liste ve kütüphane için oluşturulan form
sayfalarıdır. Bu sayfalara erişimi engellemek için (erişilmek istendiğinde
login olunmasını sorma) için aşağıdaki komut bloğunu çalıştırmak gerekmektedir.
stsadm.exe –o
activatefeature –url -filename ViewFormPagesLockdown\feature.xml
Yapacağımız işlemler sırasıyla;
- Yukarıda yer alan komut bloğunu –filename kısmında
işleme yapacağımız portal adresi yer alacak şekilde SharePoint 2010 PowerShell aracılığıyla
çalıştırıyoruz.
- Eğer mevcut durumda anonim erişim varsa
öncelikle onu kapatmalısınız ve yeniden açmalısınız
Her ihtimale karşı sisteminizce sakıncası yoksa
iisreset atmak yaptığımız işlemin sonucunu daha net görmemizde fayda
sağlayacaktır.
Artık herhangi bir listenin formlarına girmeyi
denediğimizde bizden yetkili kullanıcı hesaplarındna biri ile giriş yamamızı
isteyecektir.
B. Form sayfaları dışında yukarda bahsettiğimiz
üzere SharePoint sistem ayar sayfalarını anonim erişimi istenmeyen bir durumdur.
_layouts ve _vti_bin dizininde yer alan sayfalardan erişimini kapatmak
istediğimiz sayfalar için aşağıdaki örenekteki konfigürasyon ayarlarını
web.config içerisinde yapmalıyız.
<add path="configuration">
<location path="_layouts">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="_vti_bin">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<location path="_layouts/login.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="_layouts/error.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
<location path="_layouts/accessdenied.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
Örnekte olduğu gibi izin verilen
_layouts/accessdenied.aspx
dışındaki sistem sayfalarının hiç birine
anonim kullanıcılar erişemeyecektir. Erişmek istediklerinden sisteme yetkili
bir hesap ile login olmaları istenecektir.
Uyarılar:
- Portaldaki yetkilerden farklı
olarak anonim kullanıcılara bir listeye öğe ekleme yetkisi verecek iseniz
(örneğin yorumlar, sayaçlar gibi listeler olabilir), öncelike siteyi tekrar
anonim erişime açıp ilgili izinleri verip tekrar erişime kapamamız gerek. Bu
süreçte anonim kullanıcıların form sayfalarına erişimlerini tekrar açmamız
gerekecektir.
Actifleştirdiğimiz feature’ı deactive etmek
için aşağıdaki kod bloğunu kullanabiliriz.
stsadm -o
deactivatefeature -url -filename ViewFormPagesLockDown\feature.xml
- Erişime açmak
istediğimiz sistem sayfaları için örneğin _layouts/login.aspx için web.config de aşağıda yer alan izin verme kod parçacığı web.configde ilgili alana eklenmelidir.
<location path="_layouts/login.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
Kolaylıklar dilerim