IIS 7.5 - AppPoolIdentity kullanırken alınan Security / Access Denied hataları ve çözüm önerisi...

IIS 7.5 altında application pool'u çalıştırabilecek kullanıcı (identity) olarak daha önceki versiyonlarda bulunmayan bir seçenek karşımıza çıkmaktadır: AppPoolIdentity

Application Pool Identities
https://learn.iis.net/page.aspx/624/application-pool-identities/

IIS 6.0 ve IIS 7.0'da varsayılan application pool kullanıcısı "Network Service" hesabıydı. Bu kullanıcı ASP.NET uygulamalarını çalıştırmak için gerekli olan minimum haklara sahipti. ASP.NET kullanıcısının sahip olması gereken minimum haklar için https://msdn.microsoft.com/en-us/library/kwzs111e.aspx makalesini inceleyebilrsiniz.

Ancak bu kullanıcı hesabının şöyle bir problemi olabiliyor: "Netowrk Service" hesabı altında çalışan farklı uygulamalar bazı açılardan bu hesapta çalışan farklı uygulamalar ile etkileşime girebiliyorlar. Her ne kadar bu sınırlı bir etkileşim olsa da application pool'u tamamen izole gerekli olabilir.

Bu nedenle Windows Server 2008 R2 ile birlikte gelen Virtual Accounts kavramı IIS altında da bir seçenek olarak verilmeye başlandı. IIS 7.5 ile birlikte bir application pool'u tamamen izole bir kullanıcı hesabı ile çalıştrabilirsiniz. Bu hesabın adı AppPoolIdentity'dir.

AppPoolIdentity kullanırken bazı durumlarda güvenlik hatası ile karşılaşabilirsiniz. Bunun pek çok sebebi olabilir ancak bazı durumlarda problem GAC'taki bazı modüllerin lock amaçlı olarak "user profile" klasörüne yazma hakkı ihtiyacı duyması olabilir. AppPoolIdentity kullanıcı worker process'i çalıştırırken default olarak user profile klarösünü kullanmaz. Bu durumda default kullanıcının user profile klasörü kullanılır. Ancak AppPoolIdentity bir virtual account olduğu için bu klasöre yazma hakkı yoktur.

Bu problemi gidermek için IIS 7.5 altında application pool ayarlarından "Load User Profile" seçeneğini seçerek bu hesabın user profile klasörünün yaratılmasını ve kullanılmasını sağlayabilirsiniz. Böylece default kullanıcının user profiler'ına ihtiyaç duyulmayacaktır.

Geçerli olduğu platformlar:

IIS 7.5

Referanslar:

Application Pool Identities
https://learn.iis.net/page.aspx/624/application-pool-identities/

ASP.NET Required Access Control Lists (ACLs)
https://msdn.microsoft.com/en-us/library/kwzs111e.aspx

--
AMB