IIS AppPoolIdentity ve dosya sistemi yazma erişim izinleri


395

IIS 7.5 ve ASP.NET ile ilgili araştırma yaptığım ve hiçbir yere ulaşmadığım bir sorun var. Herhangi bir yardım büyük mutluluk duyacağız.

Benim sorum: IIS 7.5'te ASP.NET kullanarak, IIS ve / veya işletim sistemi, web uygulamasının C:\dumptam güven altında çalışırken nasıl bir klasöre yazmasına izin verir ? Uygulama havuzu kullanıcısı için (bu durumda ApplicationPoolIdentity) açıkça yazma erişimi eklemem gerekmez mi?

Bu kadarını biliyorum:

  • IIS 7.5'te, Uygulama Havuzu için varsayılan Kimlik'tir ApplicationPoolIdentity.
  • ApplicationPoolIdentity Uygulama Havuzu oluşturulduğunda oluşturulan "AppPoolName" uygulama havuzunun adıdır "IIS APPPOOL \ AppPoolName" adlı bir Windows kullanıcı hesabını temsil eder.
  • "IIS APPPOOL \ AppPoolName" kullanıcısı varsayılan olarak IIS_IUSRSgrubun bir üyesidir .
  • Tam güven altında çalıştırıyorsanız, web uygulama dosya sisteminde birçok alanda (hariç klasörler gibi yazabilir C:\Users, C:\Windowsvb). Örneğin, uygulamanız, gibi bazı klasörlere yazma erişimine sahip olacaktır C:\dump.
  • Varsayılan olarak, IIS_IUSRSgruba okuma veya yazma erişimi verilmez C:\dump(en azından Windows Gezgini'ndeki "Güvenlik" sekmesinden görülebilen erişim).
  • Yazma erişimini reddederseniz IIS_IUSRS, klasöre yazmaya çalışırken (beklendiği gibi) bir SecurityException elde edersiniz.

Peki, tüm bunları göz önünde bulundurarak, "IIS APPPOOL \ AppPoolName" kullanıcısına yazma erişimi nasıl verilir? W3wp.exe işlemi bu kullanıcı olarak çalışır, bu nedenle bu kullanıcının açık erişimi olmayan bir klasöre yazmasına izin veren nedir?

Tam Güven altında çalışıyorsanız, kullanıcıya yazması gereken her klasöre erişim izni vermek acı verici olacağından, bunun kolaylık sağlamak için yapıldığını anladığımı lütfen unutmayın. Bu erişimi sınırlamak istiyorsanız, uygulamayı her zaman Orta Güven altında çalıştırabilirsiniz. İşletim sistemi ve / veya IIS'nin, açık dosya sistemi erişimi verilmemiş gibi görünse de, bu yazma işlemlerinin gerçekleşmesine nasıl izin verdiğini öğrenmekle ilgileniyorum.

Yanıtlar:


403

Grubun yanı sıra grubun ApplicationPoolIdentityüyeliğine atanır . İlk bakışta bu biraz endişe verici görünebilir, ancak grubun NTFS hakları biraz kısıtlıdır.UsersIIS_IUSRSUsers

Örneğin, klasörde bir klasör oluşturmaya çalışırsanız C:\Windows, yapamayacağınızı göreceksiniz. ApplicationPoolIdentityHala windows sistem klasörlerinden dosyalarını okuyabilecek olması gerekir (Aksi başka nasıl çalışan işlemi dinamik olarak gerekli DLL yüklemek mümkün olacaktır).

c:\dumpKlasörünüze yazabilme konusundaki gözlemlerinizle ilgili olarak . Gelişmiş Güvenlik Ayarları'ndaki izinlere bakarsanız aşağıdakileri görürsünüz:

resim açıklamasını buraya girin

Aşağıdaki özel izinlerin miras alındığına bakın c:\:

resim açıklamasını buraya girin

Sitenizin bu klasörü ApplicationPoolIdentityokuyabilmesi ve yazabilmesinin nedeni budur . Bu hak c:\sürücüden miras kalıyor .

Her biri kendi uygulama havuzuna ve Uygulama Havuzu Kimliğine sahip yüzlerce sitenizin olabileceği paylaşılan bir ortamda, site klasörlerini Usersgrubu kaldırmış bir klasörde veya birimde saklar ve izinler yalnızca Yöneticiler ve SYSTEM hesabının erişimi var (kalıtımla).

Daha sonra, her birinin IIS AppPool\[name]site kök klasöründe gerekli olan gerekli izinleri ayrı ayrı atarsınız .

Ayrıca, hassas olabilecek dosyaları veya verileri depoladığınız klasörlerde oluşturduğunuz klasörlerin Usersgrubun kaldırıldığından da emin olmalısınız . Ayrıca, yüklediğiniz uygulamaların hassas verileri c:\program files\[app name]klasörlerinde saklamadığından ve bunun yerine kullanıcı profili klasörlerini kullandığından emin olmalısınız .

Yani evet, ilk bakışta olması ApplicationPoolIdentitygerekenden daha fazla hak var gibi görünüyor , ama aslında grup üyeliğinin belirlediğinden daha fazla hak yok.

Bir ApplicationPoolIdentitygrubun üyeliği SysInternals Process Explorer aracı kullanılarak incelenebilir . İlgilendiğiniz Uygulama Havuzu Kimliği ile çalışan çalışan işlemi bulun User Name(sütunu, görüntülenecek sütunlar listesine eklemeniz gerekir :

resim açıklamasını buraya girin

Örneğin, burada 900300bir Uygulama Havuzu Kimliği olan bir havuz var IIS APPPOOL\900300. İşlemin özelliklerine sağ tıklayıp Güvenlik sekmesini seçerek görüyoruz:

resim açıklamasını buraya girin

Gördüğümüz gibi grubun IIS APPPOOL\900300bir üyesi Users.


@Kev [+1] Burada uygulama havuzu kimlikleri için NTFS izinlerine ilişkin benzer bir soru yayınladım: stackoverflow.com/questions/11232675/… - Bir göz atarsanız minnettar olurum.
one.beat.consumer

@ one.beat.consumer - Üzgünüm, yorumunuzu hiç görmedim. Hala bu soruya mı takıldın?
Kev

@Kev - evet, diğer saçmalıkları bir kenara çektiğim için daha az sorun haline geldi, ancak hala çözülmedi. Düşüncesi olan var mı?
one.beat.consumer

7
Bu bölümün MSDN'de yer alması için oy verelim. Bunu anlamaya hiç zaman ayırmadım, bu yüzden bu büyük bir yardım (ve hiç bilmediğim için utanıyorum).
Umutsuzluğun Yüz burcu

67
Bu Microsoft IIS çekirdek belgelerinin neden MSDN yerine SO'da olduğu açık değil.
Amit Naidu

40
  1. Klasöre sağ tıklayın.

  2. Özellikler'i tıklayın

  3. Güvenlik Sekmesi'ne tıklayın. Bunun gibi bir şey göreceksiniz:

resim açıklamasını buraya girin

  1. Yukarıdaki ekranda "Düzenle ..." düğmesini tıklayın. Bunun gibi bir şey göreceksiniz:

resim açıklamasını buraya girin

  1. Yukarıdaki ekranda "Ekle ..." düğmesini tıklayın. Bunun gibi bir şey göreceksiniz:

resim açıklamasını buraya girin

  1. Yukarıdaki ekranda "Konumlar ..." düğmesini tıklayın. Böyle bir şey göreceksiniz. Şimdi, bu ağaç yapısının en üstüne gidin ve bilgisayar adınızı seçin, ardından Tamam'a tıklayın.

resim açıklamasını buraya girin

  1. Şimdi "iis apppool \ your_apppool_name" yazın ve "Adları Kontrol Et" düğmesini tıklayın. Apppool varsa, apppool adınızı metin kutusunda altı çizili olarak göreceksiniz. Tamam düğmesine tıklayın.

resim açıklamasını buraya girin

  1. Hesaba vermeniz gereken her erişimi kontrol edin / işaretini kaldırın

  2. Uygula düğmesini ve ardından Tamam'ı tıklayın.


0

IIs'deki her uygulama havuzu, c: \ users altında varsayılan olarak TAM okuma / yazma izniyle kendi güvenli kullanıcı klasörünü oluşturur. Kullanıcılar klasörünüzü açın ve hangi uygulama havuzu klasörlerinin olduğunu görün, sağ tıklayın ve atanan uygulama havuzu sanal hesabı haklarını kontrol edin. Uygulama havuzu hesabınızın kök ve alt klasörlerine atanmış okuma / yazma erişimi eklenmiş olduğunu görmeniz gerekir.

Böylece bu tür dosya depolama erişimi otomatik olarak yapılır ve uygulama havuzları kullanıcı hesabı klasörlerine herhangi bir değişiklik yapmadan istediğinizi yazabilirsiniz. Bu nedenle her uygulama havuzu için sanal kullanıcı hesapları oluşturuldu.


Bu yalnızca "Kullanıcı Profilini Yükle" Doğru değerine ayarlanırsa olur.
JamesQMurphy

Bu doğru, yani AppPool kullanıcı klasörü doğru olmasaydı oluşturulamaz anlamına gelir değil mi? Bu yüzden bu şekilde inşa ettiler ..... II'lerin sadece bu hesap için yönetilen güvenli bir klasör yerine sabit disk üzerinden tüm pencerelere erişmesini ve depolamasını önlemek için.
Stokely

0

Olay Günlükleri → Windows → Uygulama'da aşağıdaki gibi görünen bir IIS web sitesine erişim sorunlarını düzeltmek için bunu denedim :

Günlük Adı: Uygulama
Kaynak: ASP.NET 4.0.30319.0
Tarih: 01.05.2012 16:12:33
Olay Kimliği: 1314
Görev Kategorisi: Web Etkinliği
Seviye: Bilgi
Anahtar kelimeler: Klasik
Kullanıcı: Yok
Bilgisayar: SALTIIS01

Açıklama:
Olay kodu: 4008 
Olay mesajı: İstek için dosya yetkilendirmesi başarısız oldu. 
Etkinlik zamanı: 01.05.2012 16:12:33 
Etkinlik zamanı (UTC): 1/6/2012 12:12:33 
Olay Kimliği: 349fcb2ec3c24b16a862f6eb9b23dd6c 
Olay dizisi: 7 
Olay oluşumu: 3 
Etkinlik detay kodu: 0 

Başvuru bilgisi: 
    Uygulama alanı: / LM / W3SVC / 2 / ROOT / Uygulama / SNCDW-19-129702818025409890 
    Güven seviyesi: Tam 
    Uygulama Sanal Yolu: / Uygulama / SNCDW 
    Uygulama Yolu: D: \ Sites \ WCF \ Application \ SNCDW \ 
    Makine adı: SALTIIS01 

İşlem bilgisi: 
    İşlem Kimliği: 1896 
    İşlem adı: w3wp.exe 
    Hesap adı: iisservice 

Bilgi isteme: 
    URL iste: http: //webservicestest/Application/SNCDW/PC.svc 
    İstek yolu: /Application/SNCDW/PC.svc 
    Kullanıcı ana bilgisayar adresi: 10.60.16.79 
    Kullanıcı: js3228 
    Kimliği doğrulandı: Doğru 
    Kimlik Doğrulama Türü: Anlaşma 
    İş parçacığı hesap adı: iisservice 

Sonunda düzgün çalışabilmesi için Windows Everyonegrubuna bu klasöre okuma erişimi vermeliydim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.