Tổng quan về quyền IIS7 - ApplicationPoolIdentity


356

Gần đây chúng tôi đã nâng cấp lên IIS7 như một máy chủ web lõi và tôi cần một cái nhìn tổng quan về các quyền. Trước đây, khi cần ghi vào hệ thống tệp, tôi sẽ cấp cho người dùng AppPool (Dịch vụ mạng) quyền truy cập vào thư mục hoặc tệp.

Trong IIS7, tôi thấy, theo mặc định, người dùng AppPool được đặt thành ApplicationPoolIdentity. Vì vậy, khi tôi kiểm tra trình quản lý tác vụ, tôi thấy rằng một tài khoản người dùng có tên 'WebSite.com' đang chạy Quy trình IIS ('Website.com' là tên của trang web trong IIS)

Tuy nhiên, tài khoản người dùng này không tồn tại nếu tôi cố gắng sử dụng tài khoản đó để cấp quyền. Vì vậy, làm cách nào để xác định người dùng nào cũng cấp quyền?

Chỉnh sửa ================================================= =============================

Xem bên dưới cho vấn đề trong ảnh chụp màn hình. Trang web của chúng tôi (www.silverchip.co.uk) chạy trên tên người dùng SilverChip.co.uk. Tuy nhiên khi tôi thêm pemissions, người dùng này vẫn tồn tại!

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

================================= Xem hình ảnh AppPool

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


2
Trên thực tế thông tin microsoft về vấn đề này rất tốt Nhận dạng nhóm ứng dụng
DanielV

Câu trả lời:


680

ApplicationPoolIdentity thực sự là cách thực hành tốt nhất để sử dụng trong IIS7 +. Nó là một tài khoản được tạo động, không có đặc quyền. Để thêm bảo mật hệ thống tệp cho nhóm ứng dụng cụ thể, hãy xem "Danh tính nhóm ứng dụng" của IIS.net . Phiên bản nhanh:

Nếu nhóm ứng dụng được đặt tên là "DefaultAppPool" (chỉ cần thay thế văn bản này bên dưới nếu nó được đặt tên khác)

  1. Mở Windows Explorer
  2. Chọn một tập tin hoặc thư mục.
  3. Nhấp chuột phải vào tệp và chọn "Thuộc tính"
  4. Chọn tab "Bảo mật"
  5. Nhấp vào nút "Chỉnh sửa" và sau đó nút "Thêm"
  6. Nhấp vào nút "Vị trí" và đảm bảo bạn chọn máy cục bộ . ( Không phải miền Windows nếu máy chủ thuộc về một.)
  7. Nhập " IIS AppPool \ DefaultAppPool " trong hộp văn bản "Nhập tên đối tượng cần chọn:". (Đừng quên thay đổi "DefaultAppPool" ở đây thành bất cứ điều gì bạn đặt tên cho nhóm ứng dụng của mình.)
  8. Nhấp vào nút "Kiểm tra tên" và nhấp vào "OK".

11
@Pino: Không, không phải tên trang web. Sử dụng tên nhóm ứng dụng . Mỗi trang web được gán cho một nhóm ứng dụng. Bạn có thể cho biết cái nào trên hộp thoại Cài đặt cơ bản của trang web (trong IIS7).
Jon Adams

2
@Pino: Trong trường hợp đó, vai trò bảo mật bạn nên sử dụng là IIS AppPool\silverchip.co.uk. Tôi đã không thử các dấu chấm trong tên bảo mật - bạn có thể muốn thay đổi nó thành một cái gì đó mà không có dấu câu.
Jon Adams

7
Tôi đã làm theo hướng dẫn của bạn như bạn đã nói. Nhưng có một hack. Bạn phải thiết lập tài sản enable load user profileđể truetrong môi trường hồ bơi ứng dụng. Và chỉ sau khi cài đặt này, tôi mới có thể chạy ứng dụng. Vì vậy, vui lòng cập nhật hướng dẫn của bạn và thêm điểm thứ 9.
Johnny_D

19
Hãy nhớ kiểm tra xem các cài đặt máy chủ để xác thực ẩn danh cũng đang sử dụng danh tính nhóm Ứng dụng. Giải pháp này hiệu quả với tôi ngay khi tôi chuyển từ IUSR.
bblue

11
Hãy chú ý ở đây! Bạn không thể tra cứu người dùng bằng Userinterface, nhưng bạn phải nhập nó. Kiểm tra tên là điều duy nhất bạn có thể làm.
Remco

88

Nhớ sử dụng tên địa phương của máy chủ, không phải tên miền khi giải quyết tên

IIS AppPool\DefaultAppPool

(chỉ là một lời nhắc nhở vì điều này làm tôi vấp ngã một chút):nhập mô tả hình ảnh ở đây


Đúng, tôi quên điều này mỗi lần, cảm ơn vì đã nhắc nhở James Toomey!
tjans

30

Cấp quyền truy cập vào IIS AppPool \ YourAppPoolName người dùng có thể không đủ với cấu hình mặc định IIS.

Trong trường hợp của tôi, tôi vẫn gặp lỗi HTTP Lỗi 401.3 - Không được phép sau khi thêm người dùng AppPool và nó chỉ được sửa sau khi thêm quyền cho người dùng IUSR .

Điều này là cần thiết bởi vì theo mặc định, truy cập ẩn danh được thực hiện bằng IUSR . Bạn có thể đặt một người dùng cụ thể khác, Nhóm ứng dụng hoặc tiếp tục sử dụng IUSR, nhưng đừng quên đặt các quyền thích hợp.

tab xác thực

Tín dụng cho câu trả lời này: Lỗi HTTP 401.3 - Không được phép


3
Điều này rất quan trọng !!! Phải thay đổi "Xác thực ẩn danh" thành "Nhận dạng nhóm ứng dụng" để bảo mật! Tôi chắc chắn có một lý do chính đáng để nó được đặt thành IUSR, nhưng tôi không thể nghĩ ra một lý do duy nhất. Cảm ơn!!!
Dân B

Điều này đã khắc phục vấn đề cho tôi. Có thể là do phiên bản IIS của tôi là 8 trên Windows Server 2012 R2
myroslav

2
Đây là một bước quan trọng cần được thêm vào câu trả lời được chấp nhận. Ngoài ra, cách đơn giản nhất là thay đổi hộp radio thành nhận dạng nhóm ứng dụng
Sourcery 14/2/18

1
Đây là vấn đề của tôi! Cảm ơn bạn!!
Sloan Reynold

28

Trên Windows Server 2008 (r2), bạn không thể gán danh tính nhóm ứng dụng cho một thư mục thông qua Properties-> Security. Bạn có thể làm điều đó thông qua một dấu nhắc lệnh quản trị bằng cách sử dụng như sau:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

1
bạn có thể giải thích điều này một chút không? (R) có nghĩa là gì? Bạn có thực sự nhập dấu ngoặc góc trong lệnh này?
Kate Gregory

3
Xin chào Kate, tôi đã sử dụng <> để biểu thị "tên apppool của bạn ở đây", nhưng để lại trong một tên apppool hợp pháp. Trong Trình quản lý IIS -> Nhóm ứng dụng bạn sẽ cần khớp tên, khoảng trắng được bao gồm. Cái cuối cùng tôi đã làm là "IIS AppPool \ ClientName_CompanyName - Intranet". : (R) trong trường hợp này là cấp quyền truy cập đọc. Bạn cũng có thể sử dụng F (đầy đủ), M (sửa đổi), RX (đọc + thực thi) và W (chỉ ghi).
Chris

9
Bạn thực sự có thể chỉ định thông qua tab Chứng khoán trong Thuộc tính trong Windows Server 2008 R2, do đó bạn không cần giải pháp này. Hãy chắc chắn rằng bạn có các hiệu trưởng bảo mật tích hợp được chọn trên các loại đối tượng và vị trí.
nghĩa

Câu trả lời này hiệu quả với tôi. Câu trả lời được chọn không phù hợp với tôi.
Tuyên Nguyễn

3
xem thêm phản hồi ban đầu của câu trả lời được chọn của [link] serverfault.com/questions/81165/ Đối với Windows Server 2008 (hoặc phiên bản Datacenter), bạn phải sử dụng dòng lệnh để bảo mật tài khoản nhóm ứng dụng hộp thoại. Khi đã ở đó, bạn có thể quản lý nó, thay đổi cấp phép, cho các thư mục con, v.v. Cũng xem xét: "icacls" c: \ yourdirectory "/ t / cấp" IIS AppPool \ DefaultAppPool ":( OI) (CI) (R)" OI kế thừa -object, thừa kế container CI.
secretwep

7

Phần A: Cấu hình nhóm ứng dụng của bạn

Giả sử Nhóm ứng dụng được đặt tên 'MyPool' Chuyển đến 'Cài đặt nâng cao' của Nhóm ứng dụng từ Trình quản lý IIS

  1. Cuộn xuống 'Danh tính'. Cố gắng chỉnh sửa giá trị sẽ đưa ra một hộp thoại. Chọn 'Tài khoản tích hợp' và bên dưới tài khoản đó, chọn 'ApplicationPoolIdentity'.

  2. Một vài dòng bên dưới 'Danh tính', bạn sẽ tìm thấy 'Tải hồ sơ người dùng'. Giá trị này phải được đặt thành 'True'.

Phần B: Cấu hình trang web của bạn

  1. Tên trang web: SiteName (chỉ là một ví dụ)
  2. Đường dẫn vật lý: C: \ Sao cũng được (chỉ là một ví dụ)
  3. Kết nối dưới dạng ...: Người dùng ứng dụng (xác thực thông qua) (Có thể tìm thấy các cài đặt trên trong 'Cài đặt cơ bản' của trang web trong Trình quản lý IIS)
  4. Sau khi định cấu hình các cài đặt cơ bản, hãy tìm cấu hình 'Xác thực' trong 'IIS' trong bảng điều khiển chính của trang web. Mở nó ra. Bạn sẽ thấy một tùy chọn cho 'Xác thực ẩn danh'. Hãy chắc chắn rằng nó được kích hoạt. Sau đó nhấp chuột phải và 'Chỉnh sửa ...' nó. Chọn 'Nhận dạng nhóm ứng dụng'.

Phần C: Cấu hình thư mục của bạn

Thư mục trong câu hỏi là C: \ Sao cũng được

  1. Chuyển đến Thuộc tính - Chia sẻ - Chia sẻ Nâng cao - Quyền và đánh dấu 'Chia sẻ thư mục này'
  2. Trong cùng hộp thoại, bạn sẽ tìm thấy nút 'Quyền'. Nhấp vào nó.
  3. Một hộp thoại mới sẽ mở ra. Nhấp vào 'Thêm'.
  4. Một hộp thoại mới 'Chọn Người dùng hoặc Nhóm' sẽ mở. Trong 'Từ vị trí này', đảm bảo tên giống với máy tính chủ cục bộ của bạn. Sau đó, trong 'Nhập tên đối tượng', nhập 'IIS AppPool \ MyPool' và nhấp vào 'Kiểm tra tên' và sau đó 'Ok'
  5. Cung cấp quyền chia sẻ đầy đủ cho người dùng 'MyPool'. Áp dụng nó và đóng các thuộc tính thư mục
  6. Mở thuộc tính thư mục một lần nữa. Lần này, đi đến Bảo mật - Nâng cao - Quyền và nhấp vào Thêm. Sẽ có một tùy chọn 'Chọn hiệu trưởng' ở trên cùng hoặc một số tùy chọn khác để chọn người dùng. Nhấp vào nó.
  7. Hộp thoại 'Chọn Người dùng hoặc Nhóm' sẽ mở lại. Lặp lại bước 4.
  8. Cung cấp tất cả hoặc nhiều quyền bạn cần cho người dùng 'MyPool'.
  9. Kiểm tra 'Thay thế tất cả các quyền đối tượng con ... "và Áp dụng và đóng.

Bây giờ bạn có thể sử dụng trình duyệt trang web


Bạn là vua của rừng rậm! Cảm ơn bạn
tno2007

5

Câu trả lời hàng đầu từ Jon Adams

Đây là cách triển khai thực hiện điều này cho mọi người PowerShell

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

1

Chỉ cần thêm vào sự nhầm lẫn, hộp thoại Quyền hiệu quả (Windows Explorer) không hoạt động đối với các thông tin đăng nhập này. Tôi có một trang web "Umbo4" bằng cách sử dụng xác thực thông qua và xem Quyền hạn hiệu quả của người dùng trong thư mục gốc của trang web. Kiểm tra Tên Kiểm tra đã giải quyết tên "IIS AppPool \ Umbo4", nhưng Quyền hiệu quả cho thấy rằng người dùng không có quyền nào trên thư mục (tất cả các hộp kiểm đều không được chọn).

Sau đó, tôi loại trừ người dùng này khỏi thư mục một cách rõ ràng, sử dụng tab Explorer Security. Điều này dẫn đến việc trang web bị lỗi với lỗi HTTP 500.19, như mong đợi. Quyền hiệu quả tuy nhiên nhìn chính xác như trước.


1

Tôi đã khắc phục tất cả các sự cố asp.net của mình chỉ bằng cách tạo một người dùng mới có tên IUSER bằng mật khẩu và thêm nó vào Dịch vụ mạng và Nhóm người dùng. Sau đó, tạo tất cả các trang web và ứng dụng ảo của bạn đặt xác thực thành IUSER bằng mật khẩu của nó .. đặt quyền truy cập tệp cấp cao để bao gồm IUSER và BAM, nó đã khắc phục ít nhất 3-4 vấn đề bao gồm cả vấn đề này ..

Dave

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.