Thêm danh tính AppPool IIS 7 làm Đăng nhập máy chủ SQL


232

Tôi đang chạy một trang web IIS 7 với AppPool của Chế độ đường ống tích hợp . AppPools KHÔNG chạy trong NetworkService, v.v. danh tính (theo mục đích), nhưng sử dụng AppPool Identitiy của riêng nó (IIS AppPool \ MyAppPool).

Đây được gọi là tài khoản dịch vụ hoặc tài khoản ảo. (tài khoản người dùng, không phải là tài khoản đầy đủ ...)

Tôi muốn cấp cho tài khoản dịch vụ này (IIS AppPool \ MyAppPool) để kết nối với SQL Server 2008 Express của tôi (chạy ở Chế độ xác thực hỗn hợp).

Mặc dù SQL Server có thể thêm bất kỳ tài khoản người dùng thông thường nào, nhưng tài khoản ảo IIS AppPool \ MyAppPool không thể được thêm vào các đăng nhập hợp lệ (SQL Server nói rằng không thể tìm thấy tài khoản này).

Có mẹo nào, bất cứ điều gì tôi cần kích hoạt để làm cho các tài khoản ảo hoạt động không? (quy trình w3wp.exe chạy theo danh tính này theo taskmgr, nhưng tôi cũng không thể sử dụng tài khoản trong bảo mật NTFS ...)

Cảm ơn bạn đã giúp đỡ!

Câu trả lời:


379

"IIS APPPOOL \ AppPoolName" sẽ hoạt động, nhưng như đã đề cập trước đó, nó dường như không phải là một tên AD hợp lệ nên khi bạn tìm kiếm nó trong hộp thoại "Chọn người dùng hoặc nhóm", thực tế nó sẽ không hiển thị , nó sẽ tìm thấy nó, nhưng nó sẽ nghĩ rằng đó là một tài khoản hệ thống thực sự và nó sẽ cố gắng xử lý nó như vậy ... sẽ không hoạt động và sẽ cung cấp cho bạn thông báo lỗi về việc nó không được tìm thấy).

Làm thế nào tôi có được nó để làm việc là:

  1. Trong SQL Server Management Studio, hãy tìm thư mục Bảo mật (thư mục bảo mật ở cùng cấp độ với các thư mục Cơ sở dữ liệu, Đối tượng Máy chủ, v.v. ... không phải thư mục bảo mật trong mỗi cơ sở dữ liệu riêng lẻ)
  2. Nhấp chuột phải đăng nhập và chọn "Đăng nhập mới"
  3. Trong trường Tên đăng nhập, nhập IIS APPPOOL \ YourAppPoolName - không nhấp vào tìm kiếm
  4. Điền vào bất kỳ giá trị nào khác mà bạn thích (ví dụ: loại xác thực, cơ sở dữ liệu mặc định, v.v.)
  5. Nhấn vào OK

Miễn là tên AppPool thực sự tồn tại, đăng nhập sẽ được tạo.


4
Xin lỗi để phục hồi một bài viết cũ, nhưng có ai biết nếu làm điều này có bất kỳ ý nghĩa bảo mật trong một môi trường sống?
dooburt

34
Microsoftian hữu ích, nhưng đáng kinh ngạc (và điên rồ) Microsoftian.
Evan Nagle

16
Ồ "không nhấp vào tìm kiếm" trong bước 3 dường như tạo ra sự khác biệt (?)
Jedidja

16
Điều này có thất bại không nếu phiên bản máy chủ SQL ở trên một máy chủ khác? Chẳng hạn - làm thế nào để SQL1biết về cục bộ / ảo IIS AppPool\MyAppPooltrên WEB1?
one.beat.consumer

3
Có giải pháp nào không nếu Máy chủ Web và Máy chủ SQL của bạn nằm trên các máy khác nhau !! ?? Tôi có thể tìm thấy thông tin đăng nhập, nhưng tôi không thể tạo Đăng nhập SQL mới. (Nếu tôi không thực hiện kiểm tra tên ... nó vẫn không hoạt động)
Dan B

63
CREATE LOGIN [IIS APPPOOL\MyAppPool] FROM WINDOWS;
CREATE USER MyAppPoolUser FOR LOGIN [IIS APPPOOL\MyAppPool];

1
Đẹp - trong khi câu trả lời được chấp nhận là chính xác - Tôi đã xoay sở trong tình huống Management Studio không hoạt động nên giải pháp TSQL thô này là điều tôi cần.
Andrew Patterson

4
Lưu ý với các noobs như tôi: đảm bảo thực hiện truy vấn này đối với cơ sở dữ liệu bạn muốn truy cập với nhóm ứng dụng IIS, câu lệnh thứ hai nằm ở cấp cơ sở dữ liệu. Bạn có thể cần phải làm cho người dùng trở thành thành viên của một số vai trò cơ sở dữ liệu nhất định và cấp cho anh ta quyền trên (các) lược đồ như dbo.
MarioDS

Khi tôi phát hiện ra không thể thêm thông tin đăng nhập IIS APPPOOL thông qua GUI SSMS, tôi đã chạy tập lệnh của bạn. CẢM ƠN! Nó được sử dụng là có thể - không phải trong SSMS 18! Tôi cho rằng đây là một "tính năng"
MC9000

6

Nếu bạn đang đi qua các máy, bạn cần phải sử dụng DỊCH VỤ MẠNG, HỆ THỐNG ĐỊA PHƯƠNG, tài khoản miền hoặc SQL 2008 R2 (nếu bạn có) Tài khoản dịch vụ được quản lý (là sở thích của tôi nếu bạn có cơ sở hạ tầng như vậy) . Bạn không thể sử dụng tài khoản không hiển thị cho miền Active Directory.


6

Vì một quy trình lưu ý phụ sử dụng tài khoản ảo (NT Service \ MyService và IIS AppPool \ MyAppPool) vẫn đang chạy trong tài khoản "DỊCH VỤ MẠNG" vì bài đăng này gợi ý http://www.adopenstatic.com/cs/bloss/ken/ lưu trữ / 2008/01/29 / 15759.aspx . Sự khác biệt duy nhất là các quy trình này là thành viên của nhóm "NT Service \ MyService" hoặc "IIS AppPool \ MyAppPool" (vì đây thực sự là các nhóm chứ không phải người dùng). Đây cũng là lý do tại sao các quy trình xác thực tại mạng là máy giống như tài khoản NETWORK DỊCH VỤ.

Cách để truy cập an toàn không phụ thuộc vào tài khoản này không có đặc quyền DỊCH VỤ MẠNG mà là cấp thêm quyền cụ thể cho "NT Service \ MyService" hoặc "IIS AppPool \ MyAppPool" và xóa quyền cho "Người dùng" nếu cần.

Nếu bất cứ ai có thông tin chính xác hoặc mâu thuẫn hơn xin vui lòng gửi.




0

Tôi đã tìm ra nó thông qua bản dùng thử và lỗi ... đường viền thực sự trong bộ giáp là một thiết lập ít được biết đến trong IIS trong Configuration Editortrang web dành cho

Section: system.webServer/security/authentication/windowsAuthentication

From: ApplicationHost.config <locationpath='ServerName/SiteName' />

được gọi useAppPoolCredentials(được đặt thành Falsemặc định. Đặt điều này Truevà cuộc sống trở nên tuyệt vời trở lại !!! Hy vọng điều này sẽ cứu vãn nỗi đau cho chàng trai tiếp theo ....

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


Tôi đã làm theo quy trình tương tự, nhưng vấn đề không được giải quyết. Bạn chắc cũng đã làm một cái gì đó khác, bạn có thể vui lòng chia sẻ?
RSB

@RSB - bạn đã làm theo tất cả các bước khác? bạn đã thiết lập appPools và cấp cho họ quyền đối với các tệp nơi trang web của bạn được đặt chưa? Bạn đã thêm tên máy chủ làm thông tin đăng nhập có quyền cho Máy chủ SQL chưa? Bạn đã áp dụng appPool cho SQL Server của mình bằng quyền chưa? Bạn đã sửa đổi IIS để sử dụng WindowsAuthentication? Bạn đang gặp phải lỗi gì? Nó hoạt động trong môi trường dev của bạn và không sản xuất?
Dan B

Tôi đã thiết lập appPool, nhưng làm thế nào để cấp cho họ quyền đối với các tệp có vị trí trang web? Làm cách nào để thêm tên máy chủ làm thông tin đăng nhập với quyền cho máy chủ SQL? Tôi cũng đã thêm appPool vào SQL Server với quyền. Cách sửa đổi IIS để sử dụng WindowsAuthentocation. Nó hoạt động trong môi trường dev của tôi khi máy chủ IIS và sql trên cùng một máy, nhưng nó gây ra lỗi-System.ComponentModel.Win32Exception: Truy cập bị từ chối khi máy chủ IIS và Sql ở trên máy khác. Xin đề nghị.
RSB

nếu bạn đưa email cho tôi, tôi sẽ gửi cho bạn một tài liệu tôi đã làm về cách thực hiện tất cả .... có quá nhiều thứ để thêm vào đây ...
Dan B

@RSB Tôi đã gửi cho bạn một email. Chúc may mắn.
Dân B

0

Trong trường hợp của tôi, vấn đề là tôi đã bắt đầu tạo một dự án mẫu MVC Alloy từ đầu bằng cách sử dụng phần mở rộng Visual Studio / Episerver và nó hoạt động tốt khi được thực thi bằng Visual studio iis express. Tuy nhiên, theo mặc định, nó trỏ cơ sở dữ liệu sql vào LocalDB và khi tôi triển khai trang web sang IIS cục bộ, nó bắt đầu đưa ra một số lỗi ban đầu mà tôi đã giải quyết bằng cách: vv / hosts 2. Sau đó, bằng cách chỉnh sửa application.config đã tìm thấy vị trí tệp bằng cách nhấp chuột phải vào IIS express ở góc bên phải của màn hình khi chạy trang web bằng Visual studio và thêm ràng buộc vào đó cho url iis cục bộ. 3. Cuối cùng tôi bị mắc kẹt với "không thể truy cập lỗi cơ sở dữ liệu"

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.