IIS AppPoolIdentity dan izin akses tulis sistem file

395

Inilah masalah dengan IIS 7.5 dan ASP.NET yang telah saya teliti dan tidak berhasil. Bantuan apa pun akan sangat dihargai.

Pertanyaan saya adalah: menggunakan ASP.NET di IIS 7.5, bagaimana IIS dan / atau sistem operasi memungkinkan aplikasi web untuk menulis ke folder seperti C:\dumpketika berjalan di bawah kepercayaan penuh? Bagaimana saya tidak perlu menambahkan akses tulis secara eksplisit untuk pengguna kumpulan aplikasi (dalam hal ini ApplicationPoolIdentity)?

Setahu saya ini:

  • Di IIS 7.5, Identitas default untuk Kumpulan Aplikasi adalah ApplicationPoolIdentity.
  • ApplicationPoolIdentity mewakili akun pengguna Windows yang disebut "IIS APPPOOL \ AppPoolName", yang dibuat saat Application Pool dibuat, di mana AppPoolName adalah nama Pool Aplikasi.
  • Pengguna "IIS APPPOOL \ AppPoolName" secara default adalah anggota IIS_IUSRSgrup.
  • Jika Anda berjalan di bawah Kendali Trust, aplikasi web Anda dapat menulis ke banyak bidang sistem file (tidak termasuk folder seperti C:\Users, C:\Windows, dll). Misalnya, aplikasi Anda akan memiliki akses untuk menulis ke beberapa folder, seperti C:\dump,.
  • Secara default, IIS_IUSRSgrup tidak diberikan akses baca atau tulis C:\dump(setidaknya tidak akses yang terlihat melalui tab "Keamanan" di Windows Explorer).
  • Jika Anda menolak akses tulis IIS_IUSRS, Anda akan mendapatkan SecurityException ketika mencoba menulis ke folder (seperti yang diharapkan).

Jadi, dengan mempertimbangkan semua itu, bagaimana akses tulis diberikan kepada pengguna "IIS APPPOOL \ AppPoolName"? Proses w3wp.exe berjalan sebagai pengguna ini, jadi apa yang memungkinkan pengguna ini untuk menulis ke folder yang tampaknya tidak memiliki akses eksplisit?

Harap dicatat bahwa saya mengerti ini mungkin dilakukan demi kenyamanan, karena akan menyulitkan untuk memberikan akses kepada pengguna ke setiap folder yang perlu dituliskan jika Anda menjalankannya di bawah Kepercayaan Penuh. Jika Anda ingin membatasi akses ini, Anda selalu dapat menjalankan aplikasi di bawah Medium Trust. Saya tertarik untuk mencari tahu tentang cara sistem operasi dan / atau IIS memungkinkan penulisan ini terjadi, meskipun tampaknya tidak ada akses sistem file eksplisit yang diberikan.

rsbarro
sumber

Jawaban:

403

The ApplicationPoolIdentityditugaskan keanggotaan Userskelompok serta IIS_IUSRSkelompok. Pada pandangan pertama ini mungkin terlihat agak mengkhawatirkan, namun Userskelompok ini memiliki hak NTFS yang agak terbatas.

Misalnya, jika Anda mencoba dan membuat folder di C:\Windowsfolder itu maka Anda tidak akan bisa melakukannya. Yang ApplicationPoolIdentitymasih harus dapat membaca file dari folder sistem windows (jika tidak, bagaimana lagi proses pekerja dapat secara dinamis memuat DLL penting).

Berkenaan dengan pengamatan Anda tentang bisa menulis ke c:\dumpfolder Anda . Jika Anda melihat izin di Pengaturan Keamanan Lanjutan, Anda akan melihat yang berikut:

masukkan deskripsi gambar di sini

Lihat bahwa izin khusus diwarisi dari c:\:

masukkan deskripsi gambar di sini

Itulah alasan situs Anda ApplicationPoolIdentitydapat membaca dan menulis ke folder itu. Hak itu sedang diwarisi dari c:\drive.

Di lingkungan bersama di mana Anda mungkin memiliki beberapa ratus situs, masing-masing dengan kumpulan aplikasi mereka sendiri dan Application Pool Identity, Anda akan menyimpan folder situs dalam folder atau volume yang telah Usersdihapus grup dan izin ditetapkan sedemikian rupa sehingga hanya Administrator dan Akun SYSTEM memiliki akses (dengan warisan).

Anda kemudian akan secara individual menetapkan izin yang diperlukan masing IIS AppPool\[name]- masing pada folder root situs itu.

Anda juga harus memastikan bahwa folder apa pun yang Anda buat tempat Anda menyimpan file atau data yang berpotensi sensitif telah Usersdihapus kelompoknya. Anda juga harus memastikan bahwa aplikasi apa pun yang Anda instal tidak menyimpan data sensitif dalam c:\program files\[app name]folder mereka dan bahwa mereka menggunakan folder profil pengguna.

Jadi ya, pada pandangan pertama sepertinya ApplicationPoolIdentitymemiliki lebih banyak hak daripada seharusnya, tetapi sebenarnya tidak memiliki lebih banyak hak daripada yang ditentukan oleh keanggotaan grup.

ApplicationPoolIdentityKeanggotaan grup An dapat diperiksa menggunakan alat SysInternals Process Explorer . Temukan proses pekerja yang berjalan dengan Application Pool Identity yang Anda minati (Anda harus menambahkan User Namekolom ke daftar kolom untuk ditampilkan:

masukkan deskripsi gambar di sini

Sebagai contoh, saya memiliki kolam di sini bernama 900300yang memiliki Application Pool Identity of IIS APPPOOL\900300. Mengklik kanan pada properti untuk proses dan memilih tab Security yang kita lihat:

masukkan deskripsi gambar di sini

Seperti yang bisa kita lihat IIS APPPOOL\900300adalah anggota Usersgrup.

Kev
sumber
@Kev [+1] Saya memposting pertanyaan serupa mengenai izin NTFS untuk identitas kumpulan aplikasi di sini: stackoverflow.com/questions/11232675/... - Saya akan berterima kasih jika Anda melihatnya.
one.beat.consumer
@ one.beat.consumer - maaf, saya tidak pernah melihat komentar Anda. Anda masih terjebak dengan pertanyaan itu?
Kev
@Kev - ya, itu menjadi kurang masalah karena saya telah disingkirkan ke omong kosong lainnya, tetapi masih belum terpecahkan. ada pemikiran?
one.beat.consumer
7
Mari kita pilih untuk memasukkan bagian ini pada MSDN. Tidak pernah mengambil waktu untuk mencari tahu, jadi ini sangat membantu (dan saya malu saya tidak pernah tahu).
Meringis Putus asa
67
Tidak jelas mengapa dokumentasi inti Microsoft IIS ini ada pada SO, bukan MSDN.
Amit Naidu
40
  1. Klik kanan pada folder.

  2. Klik Properti

  3. Klik Tab Keamanan. Anda akan melihat sesuatu seperti ini:

masukkan deskripsi gambar di sini

  1. Klik tombol "Edit ..." di layar di atas. Anda akan melihat sesuatu seperti ini:

masukkan deskripsi gambar di sini

  1. Klik tombol "Tambah ..." di layar di atas. Anda akan melihat sesuatu seperti ini:

masukkan deskripsi gambar di sini

  1. Klik tombol "Lokasi ..." di layar di atas. Anda akan melihat sesuatu seperti ini. Sekarang, buka bagian paling atas dari struktur pohon ini dan pilih nama komputer Anda, lalu klik OK.

masukkan deskripsi gambar di sini

  1. Sekarang ketik "iis apppool \ your_apppool_name" dan klik tombol "Periksa Nama". Jika apppool ada, Anda akan melihat nama apppool Anda di kotak teks dengan garis bawah di dalamnya. Klik tombol OK.

masukkan deskripsi gambar di sini

  1. Periksa / hapus centang akses apa pun yang perlu Anda berikan ke akun

  2. Klik tombol Apply dan kemudian OK.

pelindung cairan
sumber
0

Setiap kumpulan aplikasi dalam IIs membuat folder pengguna aman sendiri dengan izin baca / tulis LENGKAP secara default di bawah c: \ pengguna. Buka folder Users Anda dan lihat folder pool aplikasi apa yang ada, klik kanan, dan periksa haknya untuk pool virtual aplikasi pool yang ditugaskan. Anda harus melihat akun kumpulan aplikasi Anda sudah ditambahkan dengan akses baca / tulis yang diberikan ke root dan subfoldernya.

Sehingga jenis akses penyimpanan file dilakukan secara otomatis dan Anda harus dapat menulis apa pun yang Anda suka di dalam folder kumpulan akun pengguna aplikasi tanpa mengubah apa pun. Itu sebabnya akun pengguna virtual untuk setiap kumpulan aplikasi dibuat.

Stokely
sumber
Ini hanya terjadi jika "Muat Profil Pengguna" diatur ke True.
JamesQMurphy
Itu benar, yang berarti folder pengguna AppPool tidak akan dibuat jika itu benar bukan? Inilah sebabnya mengapa mereka membangunnya dengan cara ini ..... untuk mencegah pengguna mengakses dan menyimpan sampah di windows / temp dan di seluruh hard drive alih-alih folder aman yang dikelola hanya untuk akun itu.
Stokely
0

Saya mencoba ini untuk memperbaiki masalah akses ke situs web IIS, yang dimanifestasikan sebagai sesuatu seperti yang berikut ini di Log Acara → Windows → Aplikasi:

Nama Log: Aplikasi
Sumber: ASP.NET 4.0.30319.0
Tanggal: 1/5/2012 4:12:33 PM
ID Peristiwa: 1314
Kategori Tugas: Acara Web
Level: Informasi
Kata kunci: Klasik
Pengguna: T / A
Komputer: SALTIIS01

Deskripsi:
Kode acara: 4008 
Pesan acara: Otorisasi file gagal untuk permintaan. 
Waktu acara: 1/5/2012 4:12:33 PM 
Waktu acara (UTC): 1/6/2012 12:12:33 AM 
ID Peristiwa: 349fcb2ec3c24b16a862f6eb9b23dd6c 
Urutan acara: 7 
Kejadian peristiwa: 3 
Kode detail acara: 0 

Informasi aplikasi: 
    Domain aplikasi: / LM / W3SVC / 2 / ROOT / Aplikasi / SNCDW-19-129702818025409890 
    Tingkat kepercayaan: Penuh 
    Jalur Virtual Aplikasi: / Aplikasi / SNCDW 
    Jalur Aplikasi: D: \ Sites \ WCF \ Application \ SNCDW \ 
    Nama mesin: SALTIIS01 

Informasi proses: 
    ID Proses: 1896 
    Nama proses: w3wp.exe 
    Nama akun: iisservice 

Permintaan informasi: 
    URL Permintaan: http: //webservicestest/Application/SNCDW/PC.svc 
    Jalur permintaan: /Application/SNCDW/PC.svc 
    Alamat host pengguna: 10.60.16.79 
    Pengguna: js3228 
    Diotentikasi: Benar 
    Jenis Otentikasi: Bernegosiasi 
    Nama akun utas: iisservice 

Pada akhirnya saya harus memberikan akses bacaEveryone grup Windows ke folder itu agar berfungsi dengan benar.

SharpC
sumber