Vai trò của nhóm ứng dụng Nhận dạng nhóm đối với nhóm ứng dụng nào?


16

Khi nói về bảo mật IIS 7.5, AFAIK:

App bơi danh tính quyết định ứng dụng web của tôi chạy như.

Phương pháp xác thực quyết định khách hàng được chứng thực như.

Tôi có một thư mục ảo được cấu hình như thế này:

  • Tôi sử dụng Xác thực ẩn danh với mong muốn tất cả khách hàng sẽ được xác thực là IUSR .
  • Tôi cung cấp cho IUSR toàn quyền kiểm soát thư mục.
  • Danh tính nhóm ứng dụng của tôi được đặt là tài khoản XXX, không có quyền cho thư mục. (Tôi cố tình đặt cái này)

Nhưng hóa ra tôi không thể duyệt các tập tin trong thư mục đó. Khi tôi cấp quyền cho tài khoản XXX để truy cập vào thư mục đó, mọi việc sẽ diễn ra tốt đẹp.

Vì vậy, App Pool Identity đóng vai trò gì trong xác thực ẩn danh? Thật bất ngờ khi tôi phải cấp quyền cho tài khoản Danh tính nhóm ứng dụng để truy cập vào thư mục. Tôi nghĩ Xác thực ẩn danh là đủ?

Cảm ơn.

Câu trả lời:


18

Rất nhiều điều khoản quá tải ở đây và thay đổi giữa IIS 7 và 7.5.

Danh tính nhóm ứng dụng vs tài khoản nhóm ứng dụng

Hãy bắt đầu với danh tính Nhóm ứng dụng (chữ thường I, còn gọi là Tài khoản nhóm ứng dụng ):

Theo cách tôi nói, Tài khoản nhóm ứng dụng là tài khoản được sử dụng để khởi động Nhóm ứng dụng và danh tính mà Nhóm ứng dụng giả định khi nó không mạo danh bất kỳ ai khác.

Vì vậy, bất kỳ danh tính nào bạn cung cấp cho Nhóm ứng dụng, bạn sẽ cần có thể đọc các tệp trong thư mục nội dung : đặc biệt là {nhưng không giới hạn} bất kỳ tệp web.config nào (tạo thành một phần của cấu hình IIS và kiểm soát những gì Ứng dụng Pool sẽ được thực hiện).

Nếu nó không thể truy cập vào một thư mục, nó sẽ cho rằng có thể có một tệp web.config quan trọng (thay đổi trò chơi) trong đó và hiển thị một lỗi. Vì vậy, Tài khoản nhóm ứng dụng cần đọc quyền truy cập vào tất cả các thư mục nội dung.

ApplicationPoolIdentity

Tại sao phải phân biệt Tài khoản nhóm ứng dụng (danh tính của nhóm ứng dụng) với Danh tính nhóm ứng dụng? Bởi vì ApplicationPoolIdentity được sử dụng đặc biệt là một loại tài khoản mới - một tài khoản dịch vụ được quản lý - được giới thiệu và làm mặc định trong IIS 7.5 / Windows 2008 R2, và cũng có sẵn từ Windows 2008 SP2 (nhưng không phải mặc định).

Xem danh tính nhóm ứng dụng trên IIS.Net

Khi bạn tạo một trang web theo R2 bằng GUI:

  • Nhóm ứng dụng sẽ được tạo để lưu trữ trang web đó và
  • loại tài khoản sẽ là ApplicationPoolIdentity, thay vì Dịch vụ mạng (mặc định 2008), Dịch vụ địa phương hoặc Hệ thống cục bộ.

Với 2008 RTM, tài khoản Nhóm ứng dụng mặc định là Dịch vụ mạng cộng với nhận dạng / duy nhất nhóm ứng dụng duy nhất; loại tài khoản R2 / SP2 AppPoolIdentity mới là tài khoản giống như Dịch vụ mạng (nghĩa là máy tính khi kết nối ngoài hộp), nhưng ngăn chặn việc mạo danh một Nhóm ứng dụng khác trong cùng một hộp.

Trở lại với câu hỏi ban đầu:

  • Tài khoản nhóm ứng dụng xác định ứng dụng của bạn chạy như thế nào khi nó không mạo danh bất kỳ ai khác

  • Phương thức xác thực mô tả cách bạn sẽ xác thực ứng dụng khách (để mạo danh họ)

  • Các Anonymous tài khoản người dùng định nghĩa người bạn sẽ chạy như khi mạo danh một người sử dụng cho một yêu cầu mà không được chứng thực - IUSR là một người sử dụng như vậy.

Ngẫu nhiên, với IIS 7.5, bạn có thể đặt tài khoản người dùng ẩn danh là Danh tính nhóm ứng dụng (thuộc tính của phương thức xác thực ẩn danh), điều này có thể giúp cách ly và bảo mật nội dung cho một trang web cụ thể trở nên đơn giản hơn.

Đặt quyền bằng IIS AppPool \ YourSiteName cho định dạng tên. (xem thêm bài này )


4

Bạn đang thấy hai điều, thường bị nhầm lẫn trong ASP.NET:

  1. "Danh tính người dùng" - Xác thực tài khoản người dùng không liên quan gì đến tài khoản hoặc danh tính thực sự chạy trong cả II và ASP.NET. Xác thực ẩn danh cho phép bất kỳ người dùng nào truy cập bất kỳ nội dung công khai nào mà không cung cấp thách thức tên người dùng và mật khẩu cho trình duyệt máy khách. Tài khoản IUSR ẩn danh được xác thực theo mặc định trong IIS chỉ áp dụng quyền truy cập vào nội dung trang web công cộng. Nó không ảnh hưởng đến các quy trình hoặc tài nguyên được sử dụng bởi các dịch vụ II hoặc ASP.NET cơ bản.
  2. "Nhận dạng ứng dụng" - Đây là tài khoản "WindowsIdentity" thực tế trên máy chủ thực sự chạy sau IIS và ASP.NET, là tài khoản Nhận dạng nhóm ứng dụng được IIs gán cho nhóm và được cấp cho ASP.NET. Quá trình ASP.NET của bạn chạy trong tài khoản Nhận dạng nhóm ứng dụng này (được gọi là tài khoản ảo trong phiên bản IIs 7.5+) theo mặc định.

Giải thích: Đầu tiên, "xác thực" trong ASP.NET chỉ là một sự kiện thường được thiết lập trong web.config đăng nhập vào một tài khoản người dùng nhất định được chuyển qua làm mã thông báo người dùng bởi IIs sang ASP.NET dưới dạng đối tượng httpContext đơn giản ... tức là phiên hiện tại hoặc bối cảnh của người dùng hiện tại. Nó không thực sự thay đổi WindowsIdentity đang chạy quy trình ASP.NET, chỉ chuyển mã thông báo id người dùng cho nó. Sử dụng HttpContext, mã của bạn có thể sử dụng id hoặc tên đó để lưu trữ quyền cơ sở dữ liệu cho các phần khác nhau của trang web của bạn. Nhưng nó sẽ không ảnh hưởng đến quyền truy cập tệp bởi ASP.NET vì nó không ảnh hưởng hoặc thay đổi danh tính của tài khoản "quy trình" ứng dụng thực tế chạy ASP.NET theo IIs.

Điều đó không xảy ra cho đến khi bạn thực hiện "Mạo danh", yêu cầu ASP.NET mạo danh bất kỳ mã thông báo nào được chuyển đến nó bởi IIs và sau đó chạy theo id tài khoản đó. Bạn có thể đặt mạo danh trong web.config. Khi bạn kích hoạt mạo danh trong ASP.NET thì WindowsIdentity sẽ thay đổi quy trình worker thành bất kỳ tài khoản được xác thực nào được chuyển đến ASP.NET từ IIS và sau đó bạn có thể truy cập các tệp, tất nhiên dựa trên quyền bạn gán cho tài khoản người dùng đó. Điều quan trọng cần lưu ý khi điều đó xảy ra tạm thời và ASP.NET có thể trở lại nhận dạng quy trình mặc định của nó, trong phiên bản II hiện tại một lần nữa, tài khoản Nhận dạng nhóm ứng dụng được gán cho nhóm ứng dụng cụ thể.

Khi các II chỉ sử dụng tài khoản người dùng ẩn danh đơn giản mà không có xác thực rõ ràng được thiết lập trong ASP.NET, các II sẽ khởi động theo mặc định tài khoản Nhận dạng nhóm ứng dụng nhóm ứng dụng của trang web và chuyển nó đến ASP.NET và quy trình worker chạy nó. Tài khoản nhận dạng nhóm ứng dụng đó xử lý tất cả các yêu cầu cho IIS và chạy ASP.NET cho trang web đó.

Khi II bắt đầu theo thiết lập này và được người dùng truy cập, nó thực sự xác thực đằng sau hậu trường theo mặc định tài khoản IUSR ẩn danh xác định quyền truy cập vào các trang web và các tài nguyên cơ bản khác. Nhưng tài khoản đó KHÔNG được chuyển đến ASP.NET. Và nó không ảnh hưởng đến IIS Pool Identity IIS chạy và ASP.NET chạy theo.

Nếu bạn đặt Mạo danh thành "true" trong web.config, và bạn đang sử dụng tài khoản IUSR ẩn danh mặc định trong II để truy cập công khai, VÀ bạn đặt thành đúng một cách rõ ràng thuộc tính ẩn danh xác thực trong web.config (thay vì sử dụng Windows hoặc tài khoản đăng nhập khác), các II sẽ tung ra Nhận dạng nhóm ứng dụng và cả II và ASP.NET hiện sẽ chạy các quy trình ứng dụng của chúng dưới dạng tài khoản ẩn danh và xác thực IUSR.

Khi bạn làm điều đó ASP.NET và các quy trình của nó bây giờ sẽ chạy trong tài khoản IUSR .... tức là quá trình ứng dụng của ASP.NET sẽ chạy tài khoản WindowsIdentity của nó dưới dạng tài khoản IUSR. Bây giờ bạn có thể áp dụng quyền truy cập đọc / ghi vào tài khoản IUSR ẩn danh đó và vào các thư mục bạn muốn tài khoản đó truy cập. (Lưu ý: tuy nhiên, hãy chắc chắn để thêm tài khoản quy trình mặc định, tài khoản Nhóm ứng dụng cho nhóm, quyền cũng như các thư mục đó. Đó là theo khuyến nghị của Microsoft)

Chúc may mắn!


2

Có hai bối cảnh xác thực khi chơi. Quá trình máy chủ web (xử lý các yêu cầu web của bạn) chạy với tư cách là người dùng Nhận dạng nhóm ứng dụng. Khi có yêu cầu đến máy chủ ảo của bạn, nhóm ứng dụng sẽ mạo danh người dùng được liệt kê trong "Thông tin xác thực ẩn danh" của trang web cụ thể - theo mặc định IUSR.

Bất kỳ tập lệnh nào chạy từ bên trong trang web của bạn sẽ chạy dưới dạng IUSR, nhưng việc ghi nhật ký và một số chức năng khác sẽ chạy như Người dùng nhóm ứng dụng (theo mặc định là Dịch vụ mạng - mặc dù điều này đã được thay đổi gần đây để sử dụng người dùng nhóm ứng dụng ảo đặc biệt). Nhận dạng nhóm ứng dụng (Dịch vụ mạng) cần có thể liệt kê các tệp trong thư mục của bạn vì một số kiểm tra được thực hiện trong ngăn xếp yêu cầu trước khi quyền kiểm soát được đưa vào tập lệnh của bạn.

Cách tốt nhất là chạy một trang web trên mỗi nhóm và đặt Danh tính nhóm ứng dụng chạy cùng một người dùng với người dùng ẩn danh trên trang web của bạn. Có thể thoát ra khỏi bối cảnh Người dùng ẩn danh (IUSR) và nâng cao các đặc quyền cho chính các Nhận dạng nhóm ứng dụng.

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.