เพิ่ม IIS 7 AppPool Identities เป็น SQL Server Logons


233

ฉันทำงาน IIS 7 เว็บไซต์ด้วย AppPool ของโหมดแบบบูรณาการระบบท่อส่ง AppPools ไม่ทำงานภายใต้ NetworkService และอื่น ๆ identity (ตามวัตถุประสงค์) แต่ใช้ AppPool Identitiy (IIS AppPool \ MyAppPool)

นี่คือบัญชีบริการที่เรียกว่าหรือบัญชีเสมือน (บัญชีผู้ใช้ซึ่งไม่ใช่บัญชีเต็ม ... )

ฉันต้องการให้บัญชีบริการนี้ (IIS AppPool \ MyAppPool) ได้รับอนุญาตให้เชื่อมต่อกับ SQL Server 2008 Express (ทำงานใน Mixed Auth. Mode)

ในขณะที่ SQL Server สามารถเพิ่มบัญชีผู้ใช้ปกติใด ๆ บัญชีเสมือน IIS AppPool \ MyAppPool ไม่สามารถเพิ่มลงในการเข้าสู่ระบบที่ถูกต้อง (SQL Server บอกว่าไม่พบบัญชี)

มีเคล็ดลับอะไรที่ฉันต้องเปิดใช้งานเพื่อให้บัญชีเสมือนใช้งานได้ (กระบวนการ w3wp.exe ทำงานภายใต้ตัวตนนี้ตาม taskmgr แต่ฉันไม่สามารถใช้บัญชีในการรักษาความปลอดภัย NTFS อย่างใดอย่างหนึ่ง ... )

ขอบคุณสำหรับความช่วยเหลือของคุณ!

คำตอบ:


380

"IIS APPPOOL \ AppPoolName" จะทำงานได้ แต่ตามที่กล่าวไว้ก่อนหน้านี้ดูเหมือนจะไม่เป็นชื่อโฆษณาที่ถูกต้องดังนั้นเมื่อคุณค้นหาในกล่องโต้ตอบ "เลือกผู้ใช้หรือกลุ่ม" จะไม่ปรากฏขึ้น (จริง ๆ แล้ว มันจะหาเจอ แต่มันจะคิดว่ามันเป็นบัญชีระบบจริงและมันจะพยายามรักษามันเช่น ... ซึ่งจะไม่ทำงานและจะให้ข้อความผิดพลาดเกี่ยวกับมันไม่พบ)

วิธีที่ฉันได้รับให้ทำงานคือ:

  1. ใน SQL Server Management Studio ให้ค้นหาโฟลเดอร์Security (โฟลเดอร์ความปลอดภัยในระดับเดียวกับฐานข้อมูลเซิร์ฟเวอร์วัตถุ ฯลฯ ... โฟลเดอร์ไม่ใช่โฟลเดอร์ความปลอดภัยภายในแต่ละฐานข้อมูล)
  2. คลิกขวาเข้าสู่ระบบและเลือก "เข้าสู่ระบบใหม่"
  3. ในฟิลด์ชื่อเข้าสู่ระบบพิมพ์IIS APPPOOL \ YourAppPoolName - อย่าคลิกค้นหา
  4. กรอกค่าอื่น ๆ ที่คุณต้องการ (เช่นประเภทการตรวจสอบความถูกต้องฐานข้อมูลเริ่มต้น ฯลฯ )
  5. คลิกตกลง

ตราบใดที่ชื่อ AppPool มีอยู่จริงตอนนี้ควรสร้างการเข้าสู่ระบบ


4
ขออภัยที่จะฟื้นการโพสต์เก่าอีกครั้ง แต่ไม่มีใครรู้ว่าการทำเช่นนี้มีผลกระทบด้านความปลอดภัยในสภาพแวดล้อมจริงหรือไม่?
dooburt

34
มีประโยชน์อย่างน่าอัศจรรย์ แต่ Microsoftian (และเลวร้าย) ที่เหลือเชื่อ
Evan Nagle

16
ว้าว. "ไม่ต้องคลิกค้นหา" ในขั้นตอนที่ 3 ดูเหมือนว่าจะสร้างความแตกต่าง (?)
Jedidja

16
สิ่งนี้จะล้มเหลวหรือไม่หากอินสแตนซ์ของเซิร์ฟเวอร์ SQL อยู่บนเซิร์ฟเวอร์อื่น เช่น - SQL1รู้เกี่ยวกับ local / virtual IIS AppPool\MyAppPoolon WEB1อย่างไร?
one.beat.consumer

3
มีวิธีแก้ไขไหมถ้าเว็บเซิร์ฟเวอร์และเซิร์ฟเวอร์ SQL ของคุณอยู่ในเครื่องอื่น !! ฉันหาล็อกอินได้ แต่ไม่สามารถสร้างล็อกอิน SQL ใหม่ได้ (ถ้าฉันไม่ตรวจสอบชื่อ ... มันยังใช้งานไม่ได้)
Dan B

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

1
ดี - ในขณะที่คำตอบที่ยอมรับนั้นถูกต้อง - ฉันจัดการเพื่อให้ตัวเองอยู่ในสถานการณ์ที่ Management Studio ไม่ทำงานดังนั้นโซลูชัน TSQL แบบดิบนี้คือสิ่งที่ฉันต้องการ
Andrew Patterson

4
หมายเหตุถึง noobs อย่างฉัน: ตรวจสอบให้แน่ใจว่าได้ดำเนินการค้นหานี้กับฐานข้อมูลที่คุณต้องการเข้าถึงด้วยพูลแอพ IIS คำสั่งที่สองอยู่ในระดับฐานข้อมูล คุณอาจต้องการที่จะทำให้การใช้งานเป็นสมาชิกของบทบาทของฐานข้อมูลบางอย่างและให้เขาสิทธิ์ของสคี (s) dboเช่น
MarioDS

เมื่อฉันค้นพบว่าเป็นไปไม่ได้ที่จะเพิ่มการลงชื่อเข้าใช้ IIS APPPOOL ผ่านทาง SSMS GUI ฉันจะเรียกใช้สคริปต์ของคุณ ขอขอบคุณ! มันเคยเป็นไปได้ - ไม่ใช่ใน SSMS 18! ฉันคิดว่านี่จะเป็น "คุณสมบัติ"
MC9000

6

หากคุณกำลังข้ามเครื่องคุณต้องใช้ NETWORK SERVICE, ระบบ LOCAL, บัญชีโดเมนหรือ SQL 2008 R2 (ถ้าคุณมี) บัญชีบริการที่มีการจัดการ (ซึ่งเป็นค่ากำหนดของฉันหากคุณมีโครงสร้างพื้นฐานดังกล่าว) . คุณไม่สามารถใช้บัญชีที่ไม่สามารถมองเห็นได้ในโดเมน Active Directory


6

ในฐานะที่เป็นกระบวนการบันทึกย่อที่ใช้บัญชีเสมือน (NT Service \ MyService และ IIS AppPool \ MyAppPool) ยังคงทำงานภายใต้บัญชี "บริการเครือข่าย" ตามที่โพสต์นี้แนะนำhttp://www.adopenstatic.com/cs/blogs/ken/ เก็บ ความแตกต่างเพียงอย่างเดียวคือกระบวนการเหล่านี้เป็นสมาชิกของกลุ่ม "NT Service \ MyService" หรือ "IIS AppPool \ MyAppPool" กลุ่ม (เนื่องจากเป็นกลุ่มจริงและไม่ใช่ผู้ใช้) นี่คือเหตุผลที่กระบวนการตรวจสอบความถูกต้องที่เครือข่ายเช่นเดียวกับเครื่องในลักษณะเดียวกับบัญชี NETWORK SERVICE

วิธีการเข้าถึงที่ปลอดภัยไม่ได้ขึ้นอยู่กับบัญชีนี้ที่ไม่มีสิทธิ์ NETWORK SERVICE แต่ให้สิทธิ์เพิ่มเติมเฉพาะกับ "NT Service \ MyService" หรือ "IIS AppPool \ MyAppPool" และลบสิทธิ์สำหรับ "ผู้ใช้" หากจำเป็น

หากใครมีข้อมูลที่ถูกต้องหรือขัดแย้งมากกว่ากรุณาโพสต์



2

นี่อาจเป็นสิ่งที่คุณกำลังมองหา ...

http://technet.microsoft.com/en-us/library/cc730708%28WS.10%29.aspx

ฉันจะแนะนำในระยะยาวเพื่อพิจารณาผู้ใช้โดเมนที่มีสิทธิ์ จำกัด สิ่งที่คุณพยายามทำงานได้ดีในสถานการณ์จำลองของเครื่องจักรไซโล แต่คุณจะต้องทำการเปลี่ยนแปลงหากคุณย้ายไปยังเครื่องอื่นสำหรับเซิร์ฟเวอร์ DB


0

ฉันคิดว่ามันออกมาจากการลองผิดลองถูก ... ความจริงที่ว่าในเกราะนั้นเป็นการตั้งค่าเล็กน้อยที่รู้จักใน IIS Configuration Editorสำหรับเว็บไซต์ใน

Section: system.webServer/security/authentication/windowsAuthentication

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

เรียกว่าuseAppPoolCredentials(ซึ่งกำหนดเป็นค่าFalseเริ่มต้นตั้งค่านี้เป็นTrueและชีวิตจะยิ่งใหญ่อีกครั้ง !!! หวังว่านี่จะช่วยลดความเจ็บปวดสำหรับคนต่อไป ....

ป้อนคำอธิบายรูปภาพที่นี่


ฉันทำตามกระบวนการเดียวกัน แต่ปัญหาไม่ได้รับการแก้ไข คุณต้องทำอย่างอื่นด้วยกรุณาแบ่งปันได้ไหม
RSB

@RSB - คุณทำตามขั้นตอนอื่น ๆ ทั้งหมดแล้วหรือยัง? คุณตั้งค่า appPools และให้สิทธิ์ในการใช้ไฟล์ที่เว็บไซต์ของคุณอยู่หรือไม่ คุณเพิ่มชื่อเซิร์ฟเวอร์เป็นชื่อล็อกอินที่มีสิทธิ์ใน SQL Server หรือไม่? คุณแอพ appPool ไปยัง SQL Server ของคุณด้วยการอนุญาตหรือไม่? คุณปรับเปลี่ยน IIS เพื่อใช้ WindowsAuthentication หรือไม่ คุณได้รับข้อผิดพลาดอะไร มันทำงานในสภาพแวดล้อมการพัฒนาของคุณและไม่ได้ผลิตหรือไม่
Dan B

ฉันตั้งค่า appPool แต่จะให้สิทธิ์ไฟล์ที่เว็บไซต์ตั้งอยู่ได้อย่างไร วิธีเพิ่มชื่อเซิร์ฟเวอร์เป็นการเข้าสู่ระบบด้วยสิทธิ์ไปยังเซิร์ฟเวอร์ SQL? ฉันยังเพิ่ม appPool ไปยัง SQL Server ด้วยสิทธิ์ วิธีการปรับเปลี่ยน IIS เพื่อใช้ WindowsAuthentocation มันทำงานในสภาพแวดล้อม dev ของฉันเมื่อ IIS และเซิร์ฟเวอร์ sql อยู่บนเครื่องเดียวกัน แต่มันให้ข้อผิดพลาด System.ComponentModel.Win32Exception: การเข้าถึงถูกปฏิเสธข้อผิดพลาดเมื่อเซิร์ฟเวอร์ IIS และ Sql อยู่บนเครื่องที่แตกต่างกัน กรุณาแนะนำ
RSB

ถ้าคุณให้ฉันอีเมลของคุณผมจะส่งเอกสารที่ผมทำเกี่ยวกับวิธีการที่จะทำมันทั้งหมด .... มี mucj เกินไปที่จะเพิ่มที่นี่ ...
แดน B

@RSB ฉันส่งอีเมลถึงคุณ โชคดี.
Dan B

0

ในกรณีของฉันปัญหาคือว่าฉันเริ่มสร้างโครงการตัวอย่าง MVC Alloy ตั้งแต่เริ่มต้นโดยใช้ส่วนขยาย Visual Studio / Episerver และทำงานได้ดีเมื่อดำเนินการโดยใช้ Visual Studio iis ท้องถิ่น อย่างไรก็ตามโดยค่าเริ่มต้นมันชี้ฐานข้อมูล sql ไปที่ LocalDB และเมื่อฉันปรับใช้เว็บไซต์ IIS ท้องถิ่นมันเริ่มให้ข้อผิดพลาดบางข้อผิดพลาดเริ่มต้นฉันแก้ไขโดย: 1. เพิ่ม url เว็บไซต์ท้องถิ่นผูกพันกับ C: / Windows / System32 / ไดรเวอร์ / etc / hosts 2. จากนั้นแก้ไข application.config พบตำแหน่งไฟล์โดยคลิกขวาที่ IIS ด่วนในมุมขวาของหน้าจอเมื่อใช้งานเว็บไซต์โดยใช้ Visual Studio และเพิ่มการเชื่อมโยงสำหรับ url ท้องถิ่นของ iis 3. ในที่สุดฉันติดอยู่กับ "ไม่สามารถเข้าถึงข้อผิดพลาดของฐานข้อมูล"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.