Apa semua akun pengguna untuk IIS / ASP.NET dan bagaimana perbedaannya?

283

Di bawah Windows Server 2008 dengan ASP.NET 4.0 diinstal ada banyak akun pengguna terkait, dan saya tidak bisa mengerti mana yang mana, bagaimana mereka berbeda, dan mana yang BENAR-BENAR salah satu yang berjalan di bawah aplikasi saya. Berikut daftarnya:

  • IIS_IUSRS
  • IUSR
  • DefaultAppPool
  • ASP.NET v4.0
  • NETWORK_SERVICE
  • LAYANAN LOKAL.

Apa itu apa?

Vilx-
sumber
Dan menggunakan Windows Server 2012 dengan ASP.NET 4.0 atau lebih tinggi?
Kiquenet

Jawaban:

433

Ini adalah pertanyaan yang sangat bagus dan sayangnya banyak pengembang tidak mengajukan cukup pertanyaan tentang keamanan IIS / ASP.NET dalam konteks menjadi pengembang web dan mengatur IIS. Jadi begini ....

Untuk menutupi identitas yang tercantum:

IIS_IUSRS:

Ini analog dengan IIS_WPGgrup IIS6 lama . Ini adalah grup bawaan dengan keamanannya dikonfigurasi sehingga setiap anggota grup ini dapat bertindak sebagai identitas kumpulan aplikasi.

IUSR:

Akun ini analog dengan IUSR_<MACHINE_NAME>akun lokal lama yang merupakan pengguna anonim default untuk situs web IIS5 dan IIS6 (yaitu yang dikonfigurasi melalui tab Keamanan Direktori properti situs).

Untuk informasi lebih lanjut tentang IIS_IUSRSdan IUSRlihat:

Memahami Akun Pengguna dan Grup yang Terpasang di IIS 7

DefaultAppPool:

Jika kumpulan aplikasi dikonfigurasikan untuk dijalankan menggunakan fitur Application Pool Identity, maka akun "disintesis" disebut IIS AppPool\<pool name>akan dibuat dengan cepat untuk digunakan sebagai identitas kumpulan. Dalam hal ini akan ada akun yang disintesis yang IIS AppPool\DefaultAppPooldibuat untuk masa pakai pool. Jika Anda menghapus kumpulan maka akun ini tidak akan ada lagi. Saat menerapkan izin ke file dan folder, ini harus ditambahkan menggunakan IIS AppPool\<pool name>. Anda juga tidak akan melihat akun kumpulan ini di Pengelola Pengguna komputer Anda. Lihat yang berikut untuk informasi lebih lanjut:

Identitas Kumpulan Aplikasi

ASP.NET v4.0: -

Ini akan menjadi Application Pool Identity untuk Pool Aplikasi ASP.NET v4.0. Lihat di DefaultAppPoolatas.

NETWORK SERVICE: -

The NETWORK SERVICEakun adalah built-in identitas diperkenalkan pada Windows 2003. NETWORK SERVICEadalah rekening pribadi rendah di mana Anda dapat menjalankan aplikasi renang Anda dan website. Situs web yang berjalan di kumpulan Windows 2003 masih dapat menyamar sebagai akun anonim situs (IUSR_ atau apa pun yang Anda konfigurasikan sebagai identitas anonim).

Di ASP.NET sebelum Windows 2008 Anda bisa meminta ASP.NET menjalankan permintaan di bawah akun Pool Aplikasi (biasanya NETWORK SERVICE). Atau Anda dapat mengkonfigurasi ASP.NET untuk menyamar sebagai akun anonim situs melalui <identity impersonate="true" />pengaturan dalam web.configfile secara lokal (jika pengaturan itu dikunci maka perlu dilakukan oleh admin dalam machine.configfile).

Pengaturan <identity impersonate="true">adalah umum di lingkungan hosting bersama di mana kumpulan aplikasi bersama digunakan (bersama dengan pengaturan kepercayaan parsial untuk mencegah pembatalan akun palsu).

Di kontrol peniruan IIS7.x / ASP.NET sekarang dikonfigurasi melalui fitur konfigurasi otentikasi situs. Jadi, Anda dapat mengonfigurasi untuk dijalankan sebagai identitas kumpulan, IUSRatau akun anonim khusus khusus.

LOCAL SERVICE:

The LOCAL SERVICEaccount built-in akun yang digunakan oleh manajer layanan kontrol. Ini memiliki sekumpulan hak minimum di komputer lokal. Ini memiliki cakupan penggunaan yang cukup terbatas:

Akun Layanan Lokal

LOCAL SYSTEM:

Anda tidak bertanya tentang yang satu ini tetapi saya menambahkan untuk kelengkapan. Ini adalah akun bawaan lokal. Ini memiliki hak istimewa dan kepercayaan yang cukup luas. Anda tidak boleh mengonfigurasi situs web atau kumpulan aplikasi untuk dijalankan di bawah identitas ini.

Akun Sistem Lokal

Dalam praktek:

Dalam praktiknya pendekatan yang lebih disukai untuk mengamankan situs web (jika situs mendapatkan kumpulan aplikasinya sendiri - yang merupakan default untuk situs baru di MMC IIS7) adalah berjalan di bawah Application Pool Identity. Ini berarti mengatur Identitas situs di Pengaturan Lanjutan Pool Aplikasi untuk Application Pool Identity:

masukkan deskripsi gambar di sini

Di situs web Anda harus mengkonfigurasi fitur Otentikasi:

masukkan deskripsi gambar di sini

Klik kanan dan edit entri Anonim Authentication:

masukkan deskripsi gambar di sini

Pastikan "Identitas kumpulan aplikasi" dipilih:

masukkan deskripsi gambar di sini

Ketika Anda datang untuk menerapkan izin file dan folder, Anda memberikan identitas Application Pool hak apa pun yang diperlukan. Misalnya jika Anda memberikan identitas kumpulan aplikasi untuk ASP.NET v4.0izin kumpulan maka Anda bisa melakukan ini melalui Explorer:

masukkan deskripsi gambar di sini

Klik tombol "Periksa Nama":

masukkan deskripsi gambar di sini

Atau Anda dapat melakukan ini menggunakan ICACLS.EXEutilitas:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ ASP.NET v4.0" :( CI) (OI) (M)

... atau ... jika kumpulan aplikasi situs Anda dipanggil, BobsCatPicBlogmaka:

icacls c: \ wwwroot \ mysite / grant "IIS AppPool \ BobsCatPicBlog" :( CI) (OI) (M)

Saya harap ini membantu membereskan semuanya.

Memperbarui:

Saya baru saja menemukan jawaban yang sangat baik dari tahun 2009 yang berisi banyak informasi bermanfaat, layak dibaca:

Perbedaan antara akun 'Sistem Lokal' dan akun 'Layanan Jaringan'?

Kev
sumber
tidak setuju dalam menggunakan pengguna yang sama untuk otentikasi anonim dan identitas kumpulan aplikasi ... jika Anda perlu memberikan izin kepada apppoolidentity ke folder ....
giammin
1
@giammin - mengapa tidak? Kecuali jika Anda memiliki kasus khusus, menggunakan identitas kumpulan aplikasi adalah pendekatan paling aman yang disediakan setiap situs di kumpulan aplikasi sendiri. Benci untuk melakukan "banding ke otoritas" tetapi menjadi insinyur web host bersama dan petugas keamanan selama 15 tahun, pendekatan ini adalah no-brainer di IIS7 +.
Kev
@Kev sederhananya saya tidak suka memberikan izin menulis di situs kepada pengguna anonim
giammin
1
Kumpulan aplikasi Anda dapat lebih spesifik dengan menggunakan IIS AppPool \ <name_of_apppool>. Pada catatan terkait, IIS Express hanya akan bekerja dengan IIS AppPool \ ASP.NET v4.0 karena akun virtual kumpulan aplikasi tidak dibuat.
kevindaub
@ daub815 - IIS Express berfungsi secara berbeda karena dimaksudkan untuk berjalan di bawah login dan startup Windows Anda dan ditutup sesuai kebutuhan saat mengembangkan dan debugging. Pada kenyataannya itu tidak benar-benar menggunakan atau memiliki ketergantungan pada kumpulan atau infrastruktur aplikasi IIS Full Fat. Maksud dari IIS Express adalah untuk memberikan pengembang perilaku, rasa, dan konfigurasi yang sama dengan yang asli karena server web mainan VS sangat terbatas ...
Kev