Tất cả các tài khoản người dùng cho IIS / ASP.NET là gì và chúng khác nhau như thế nào?


282

Trong Windows Server 2008 được cài đặt ASP.NET 4.0, có rất nhiều tài khoản người dùng liên quan và tôi không thể hiểu tài khoản nào là khác nhau, và cái nào thực sự là tài khoản mà ứng dụng của tôi chạy. Đây là danh sách:

  • IIS_IUSRS
  • IUSR
  • Mặc địnhAppPool
  • ASP.NET v4.0
  • DỊCH VỤ MẠNG
  • DỊCH VỤ ĐỊA PHƯƠNG.

Những gì là những gì?


Và sử dụng Windows Server 2012 với ASP.NET 4.0 trở lên?
Kiquenet

Câu trả lời:


432

Đây là một câu hỏi rất hay và đáng buồn là nhiều nhà phát triển không hỏi đủ câu hỏi về bảo mật IIS / ASP.NET trong bối cảnh là nhà phát triển web và thiết lập IIS. Vì vậy, ở đây đi ....

Để bao gồm các danh tính được liệt kê:

IIS_IUSRS:

Điều này tương tự với IIS_WPGnhóm IIS6 cũ . Đó là một nhóm tích hợp với bảo mật được cấu hình sao cho bất kỳ thành viên nào trong nhóm này có thể hoạt động như một danh tính nhóm ứng dụng.

IUSR:

Tài khoản này tương tự như IUSR_<MACHINE_NAME>tài khoản cục bộ cũ là người dùng ẩn danh mặc định cho các trang web IIS5 và IIS6 (tức là tài khoản được định cấu hình qua tab Bảo mật thư mục của các thuộc tính của trang web).

Để biết thêm thông tin về IIS_IUSRSIUSRxem:

Hiểu tài khoản người dùng và nhóm tích hợp trong IIS 7

DefaultAppPool:

Nếu nhóm ứng dụng được định cấu hình để chạy bằng tính năng Nhận dạng nhóm ứng dụng thì tài khoản "tổng hợp" được gọi IIS AppPool\<pool name>sẽ được tạo khi đang sử dụng làm nhận dạng nhóm. Trong trường hợp này, sẽ có một tài khoản tổng hợp được gọi là được IIS AppPool\DefaultAppPooltạo cho thời gian tồn tại của nhóm. Nếu bạn xóa nhóm thì tài khoản này sẽ không còn tồn tại. Khi áp dụng quyền cho các tập tin và thư mục, chúng phải được thêm vào bằng cách sử dụng IIS AppPool\<pool name>. Bạn cũng sẽ không thấy các tài khoản nhóm này trong Trình quản lý người dùng máy tính của mình. Xem phần sau để biết thêm thông tin:

Danh tính nhóm ứng dụng

ASP.NET v4.0: -

Đây sẽ là Danh tính nhóm ứng dụng cho Nhóm ứng dụng ASP.NET v4.0. Xem DefaultAppPoolở trên.

NETWORK SERVICE: -

Các NETWORK SERVICEtài khoản là một built-in sắc giới thiệu trên Windows 2003. NETWORK SERVICElà một tài khoản đặc quyền thấp, theo đó bạn có thể chạy ứng dụng hồ bơi và các trang web của bạn. Một trang web chạy trong nhóm Windows 2003 vẫn có thể mạo danh tài khoản ẩn danh của trang web (IUSR_ hoặc bất cứ thứ gì bạn định cấu hình làm danh tính ẩn danh).

Trong ASP.NET trước Windows 2008, bạn có thể có các yêu cầu thực thi ASP.NET trong tài khoản Nhóm ứng dụng (thường NETWORK SERVICE). Ngoài ra, bạn có thể định cấu hình ASP.NET để mạo danh tài khoản ẩn danh của trang web thông qua <identity impersonate="true" />cài đặt trong web.configtệp cục bộ (nếu cài đặt đó bị khóa thì cần phải được quản trị viên thực hiện trong machine.configtệp).

Cài đặt <identity impersonate="true">là phổ biến trong môi trường lưu trữ được chia sẻ, nơi các nhóm ứng dụng được chia sẻ được sử dụng (kết hợp với cài đặt tin cậy một phần để ngăn chặn việc hủy bỏ tài khoản mạo danh).

Hiện tại, điều khiển mạo danh IIS7.x / ASP.NET được cấu hình thông qua tính năng cấu hình Xác thực của trang web. Vì vậy, bạn có thể định cấu hình để chạy dưới dạng danh tính nhóm IUSRhoặc tài khoản ẩn danh tùy chỉnh cụ thể.

LOCAL SERVICE:

Các LOCAL SERVICEtài khoản là một built-in tài khoản được sử dụng bởi người quản lý kiểm soát dịch vụ. Nó có một bộ đặc quyền tối thiểu trên máy tính cục bộ. Nó có phạm vi sử dụng khá hạn chế:

Tài khoản dịch vụ địa phương

LOCAL SYSTEM:

Bạn đã không hỏi về điều này nhưng tôi đang thêm cho đầy đủ. Đây là một tài khoản tích hợp cục bộ. Nó có đặc quyền và sự tin tưởng khá rộng rãi. Bạn không bao giờ nên cấu hình một trang web hoặc nhóm ứng dụng để chạy dưới danh tính này.

Tài khoản hệ thống cục bộ

Trong thực tế:

Trong thực tế, cách tiếp cận ưa thích để bảo mật trang web (nếu trang web có nhóm ứng dụng riêng - mặc định cho một trang web mới trong MMC của IIS7) sẽ được chạy theo Application Pool Identity. Điều này có nghĩa là đặt Danh tính của trang web trong Cài đặt nâng cao của Nhóm ứng dụng thành Application Pool Identity:

nhập mô tả hình ảnh ở đây

Trong trang web, bạn nên định cấu hình tính năng Xác thực:

nhập mô tả hình ảnh ở đây

Nhấp chuột phải và chỉnh sửa mục xác thực ẩn danh:

nhập mô tả hình ảnh ở đây

Đảm bảo rằng "Nhận dạng nhóm ứng dụng" được chọn:

nhập mô tả hình ảnh ở đây

Khi bạn đến để áp dụng quyền truy cập tệp và thư mục, bạn cấp cho danh tính Nhóm ứng dụng bất kỳ quyền nào được yêu cầu. Ví dụ: nếu bạn đang cấp danh tính nhóm ứng dụng cho ASP.NET v4.0quyền nhóm thì bạn có thể thực hiện việc này thông qua Explorer:

nhập mô tả hình ảnh ở đây

Nhấp vào nút "Kiểm tra tên":

nhập mô tả hình ảnh ở đây

Hoặc bạn có thể làm điều này bằng cách sử dụng ICACLS.EXEtiện ích:

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

... hoặc ... nếu nhóm ứng dụng của trang web của bạn được gọi BobsCatPicBlogthì:

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

Tôi hy vọng điều này sẽ giúp làm sáng tỏ mọi thứ.

Cập nhật:

Tôi chỉ tình cờ nhận được câu trả lời xuất sắc này từ năm 2009, trong đó có rất nhiều thông tin hữu ích, rất đáng để đọc:

Sự khác biệt giữa tài khoản 'Hệ thống cục bộ' và tài khoản 'Dịch vụ mạng'?


không đồng ý sử dụng cùng một người dùng để xác thực bất hợp pháp và nhận dạng nhóm ứng dụng ... nếu bạn cần cấp quyền cho apppoolidentity ghi vào thư mục ....
giammin

1
@giammin - tại sao không? Trừ khi bạn có trường hợp đặc biệt, sử dụng danh tính nhóm ứng dụng là cách tiếp cận an toàn nhất với điều kiện mỗi trang web nằm trong nhóm ứng dụng riêng. Ghét phải làm "kháng cáo lên chính quyền" nhưng là một kỹ sư lưu trữ web và anh chàng bảo mật được chia sẻ trong 15 năm, cách tiếp cận này là không có trí tuệ trên IIS7 +.
Kev

@Kev đơn giản là tôi không muốn cấp quyền viết trên một trang web cho người dùng ẩn danh
giammin 24/07/2015

1
Nhóm ứng dụng của bạn có thể cụ thể hơn nữa bằng cách sử dụng IIS AppPool \ <name_of_apppool>. Trên một lưu ý liên quan, IIS Express sẽ chỉ hoạt động với IIS AppPool \ ASP.NET v4.0 vì tài khoản ảo nhóm ứng dụng không được tạo.
kevindaub

@ daub815 - IIS Express hoạt động khác nhau vì nó được thiết kế để chạy theo đăng nhập và khởi động Windows của bạn và tắt khi cần khi phát triển và gỡ lỗi. Trong thực tế, nó không thực sự sử dụng hoặc có bất kỳ sự phụ thuộc nào vào nhóm ứng dụng hoặc cơ sở hạ tầng Full Fat IIS. Mục đích của IIS Express là cung cấp cho các nhà phát triển nhiều hành vi, hương vị và cấu hình giống như thật vì máy chủ web đồ chơi của VS bị hạn chế nghiêm trọng ...
Kev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.