SQL Server, Internet Information Server และกลไก ASP.NET ล้วนมีโมเดลความปลอดภัยที่แข็งแกร่งซึ่งทำงานร่วมกันได้ดี เพื่อให้ข้อมูลผู้ใช้และแอปพลิเคชันปลอดภัย Microsoft ยังตั้งค่าเริ่มต้นสำหรับแต่ละบริการเป็นค่าที่ค่อนข้างต่ำ
ความท้าทายที่นักพัฒนาส่วนใหญ่เผชิญคือวิธีใช้ SQL Server, IIS และ ASP.NET เพื่อกำหนดระดับความน่าเชื่อถือที่เหมาะสมระหว่างแอปพลิเคชันและข้อมูลโดยไม่ทิ้งช่องโหว่ด้านความปลอดภัยที่ผู้อื่นอาจบุกรุกได้ง่าย เนื่องจากมีบริการสามประเภทที่เกี่ยวข้อง (SQL Server, IIS และ ASP.NET) จึงมีขั้นตอนสำคัญสามขั้นตอนที่ต้องดำเนินการเพื่อให้มั่นใจถึงความปลอดภัยของโซลูชัน ส่วนนี้จะกล่าวถึงวิธีการทั่วไปวิธีหนึ่ง (และเชื่อถือได้) ในการตั้งค่าสิทธิ์และระดับความน่าเชื่อถือที่เพียงพอสำหรับแอปพลิเคชันบนเว็บ
กำหนดบัญชีผู้ใช้ IIS แบบกำหนดเองของ DotNetKB
วิธีที่ปลอดภัยที่สุดในการรักษาความปลอดภัยแอปพลิเคชันเว็บของคุณคือการกำหนดผู้ใช้แบบกำหนดเองด้วยสิทธิ์ที่จำกัด จากนั้นกำหนดค่า IIS ให้ทำงานเป็นผู้ใช้แบบกำหนดเองเมื่อเรียกใช้แอปพลิเคชันเว็บของคุณ การดำเนินการนี้ค่อนข้างง่ายและทำให้มั่นใจได้ว่าผู้เยี่ยมชมเว็บแอปพลิเคชันของคุณทุกคนมีสิทธิ์ที่คุณต้องการเท่านั้น
ขั้นตอนแรกคือการสร้างผู้ใช้ Windows ใหม่ (เรียกว่า DotNetKB ในตัวอย่างนี้) ตั้งรหัสผ่านที่รัดกุม จากนั้นจึงเพิ่มลงใน Windows Guest Group (Guest Windows Group) นอกจากนี้ ตรวจสอบให้แน่ใจว่ารหัสผ่านไม่มีวันหมดอายุ และเลือกช่องทำเครื่องหมายผู้ใช้ไม่สามารถเปลี่ยนรหัสผ่านได้ สิ่งนี้จะสร้างผู้ใช้ที่มีสิทธิพิเศษแบบจำกัดซึ่งคุณสามารถใช้เป็นข้อมูลประจำตัวเมื่อเรียกใช้แอปพลิเคชันเว็บของคุณใน IIS (ดูรูปที่ 1)
จากนั้น เรียกผู้ดูแลระบบเซิร์ฟเวอร์ข้อมูลทางอินเทอร์เน็ต และเลือกเว็บแอปพลิเคชันที่โฮสต์เพจเหล่านี้ ในตัวอย่างนี้ คุณสามารถเลือกเว็บแอปพลิเคชัน (DotNetKB_WebSite) ที่โฮสต์หน้าทดสอบที่สร้างขึ้นก่อนหน้านี้ คลิกขวาที่เว็บแอปพลิเคชันในมุมมองแบบต้นไม้ และเลือกคุณสมบัติ... จากเมนูตามบริบท จากนั้นเลือก Directory Security แล้วคลิกปุ่มแก้ไขในส่วนการเข้าถึงแบบไม่ระบุชื่อและการควบคุมการรับรองความถูกต้องของกล่องโต้ตอบ สุดท้าย ให้ป้อนชื่อผู้ใช้ที่กำหนดเอง (DotNetKB) ยกเลิกการเลือกช่องทำเครื่องหมายอนุญาตให้ IIS ควบคุมรหัสผ่าน และป้อนรหัสผ่านสำหรับบัญชีผู้ใช้ที่กำหนดเอง หลังจากเสร็จสิ้นการทำงานทั้งหมดนี้แล้ว ให้คลิกปุ่ม OK เพื่อบันทึกการเปลี่ยนแปลงเหล่านี้ไปยังฐานข้อมูลการกำหนดค่า IIS (ดูรูปที่ 2)
[ตัดหน้า]
ณ จุดนี้ IIS จะทำงานภายใต้บัญชีแบบกำหนดเองที่มีสิทธิ์ที่จำกัด ผู้เยี่ยมชมที่เยี่ยมชมหน้าเว็บของแอปพลิเคชันของคุณจะถูกเรียกใช้ในฐานะผู้ใช้ที่กำหนดเองนี้ และจะมีสิทธิ์ในการตรวจสอบสิทธิ์สำหรับผู้ใช้ที่กำหนดเองนั้นเท่านั้น
อนุญาตบัญชีผู้ใช้ DotNetKB เพื่อเข้าถึง SQL Server
จากนั้นคุณจะต้องให้สิทธิ์ที่เหมาะสมแก่ผู้ใช้ที่กำหนดเองในการเข้าถึงฐานข้อมูล (DotNetKB) ในการดำเนินการนี้ คุณสามารถใช้ Microsoft SQL Server Enterprise Manager หรือเขียนสคริปต์แบบกำหนดเองเพื่อสร้างผู้ใช้ดังกล่าวและให้สิทธิ์ในการเข้าถึงออบเจ็กต์เฉพาะได้ บทความนี้อธิบายวิธีการทำเช่นนี้โดยใช้ SQL Server Enterprise Manager
หมายเหตุ: แม้ว่า Visual Studio .NET 2003 มีคุณลักษณะบูรณาการที่มีประสิทธิภาพมากมายที่เข้ากันได้กับ SQL Server แต่ก็ไม่อนุญาตให้มีการจัดการผู้ใช้และการอนุญาตผู้ใช้จากภายใน Visual Studio .NET 2003 ได้อย่างง่ายดาย ในองค์กรและทีมขนาดใหญ่ งานขั้นสูงเหล่านี้มักดำเนินการโดยผู้ดูแลระบบฐานข้อมูล ดังนั้น หลังจากเริ่ม SQL Server Enterprise Manager แล้ว คุณสามารถทำตามขั้นตอนด้านล่างเพื่อเพิ่มผู้ใช้ที่กำหนดเอง (DotNetKB) ลงในฐานข้อมูลได้
·ในมุมมองแผนผังทางด้านซ้าย ให้ขยายโหนดเพื่อแสดงฐานข้อมูล DotNetKB บนคอมพิวเตอร์ของฉัน มุมมองแบบต้นไม้มีโครงสร้างดังนี้: คอนโซลรูท SQL Server Group (LOCAL) (Windows NT) ฐานข้อมูล DotNetKB
·จากนั้น คลิกขวาที่โหนด Users ใต้ฐานข้อมูล และเลือก New Database User... (New Database User...) เมื่อกล่องโต้ตอบคุณสมบัติผู้ใช้ฐานข้อมูล - ผู้ใช้ใหม่ปรากฏขึ้น ให้เลือก (<ใหม่>) จากกล่องดรอปดาวน์ชื่อเข้าสู่ระบบ
·เมื่อกล่องโต้ตอบคุณสมบัติการเข้าสู่ระบบเซิร์ฟเวอร์ SQL - การเข้าสู่ระบบใหม่ปรากฏขึ้น ให้เลือกแท็บทั่วไปแล้วป้อน DotNetKB ในกล่องป้อนข้อมูลชื่อ ตรวจสอบให้แน่ใจว่าได้เลือกปุ่มตัวเลือก Windows Authentication และเลือกชื่อของคอมพิวเตอร์ที่มีบัญชีผู้ใช้แบบกำหนดเองจากกล่องแบบเลื่อนลงโดเมน จากนั้นเลือก DotNetKB จากกล่องดรอปดาวน์ฐานข้อมูล
·ตอนนี้ เลือกแท็บฐานข้อมูล ค้นหาฐานข้อมูล DotNetKB ในรายการที่ด้านบนของกล่องโต้ตอบ และเลือก จากนั้นตรวจสอบให้แน่ใจว่าได้เลือกบทบาทสาธารณะในรายการที่ด้านล่างของกล่องโต้ตอบ สุดท้ายให้คลิกปุ่มตกลงที่ด้านล่างของกล่องโต้ตอบเพื่อบันทึกการเปลี่ยนแปลงของคุณ
จากนั้น คุณต้องเพิ่มสิทธิ์ในการดำเนินการให้กับขั้นตอนการจัดเก็บและฟังก์ชันแบบกำหนดเองทั้งหมดในฐานข้อมูล DotNetKB ในการดำเนินการนี้ คุณจะต้องให้สิทธิ์แก่บทบาทสาธารณะเท่านั้น คุณสามารถให้สิทธิ์แก่ผู้ใช้ DotNetKB ซึ่งจะทำให้การเข้าสู่ระบบในอนาคตง่ายขึ้น (เมื่อผู้ใช้เหล่านี้สามารถเข้าถึง DotNetKB) เพื่อดำเนินการตามขั้นตอนที่เก็บไว้โดยไม่จำเป็นต้องเพิ่มสิทธิ์ใหม่สำหรับผู้ใช้แต่ละคน
ต่อไปนี้เป็นขั้นตอนในการให้สิทธิ์ในการดำเนินการแก่ขั้นตอนและฟังก์ชันที่เก็บไว้ในฐานข้อมูล DotNetKB:
·เน้นโหนดผู้ใช้ภายใต้ฐานข้อมูล DotNetKB ในมุมมองแบบต้นไม้เพื่อแสดงรายการผู้ใช้สำหรับฐานข้อมูลนี้ ค้นหาผู้ใช้ DotNetKB และดับเบิลคลิกเพื่อเปิดกล่องโต้ตอบคุณสมบัติผู้ใช้ฐานข้อมูล
· เมื่อไฮไลต์บทบาทสาธารณะ (เลือกไว้) ให้คลิกปุ่มคุณสมบัติ... เพื่อเปิดกล่องโต้ตอบคุณสมบัติบทบาทฐานข้อมูล จากนั้นคลิกปุ่มสิทธิ์... เพื่อแสดงรายการออบเจ็กต์ฐานข้อมูลและการตั้งค่าสิทธิ์
เมื่อเลือกบทบาทสาธารณะในรายการดรอปดาวน์บทบาทฐานข้อมูลที่ด้านบนของกล่องโต้ตอบ ให้ค้นหาขั้นตอนที่เก็บไว้และฟังก์ชันแบบกำหนดเองทั้งหมดที่กำหนดไว้สำหรับฐานข้อมูลนี้ (คุณอาจต้องขยายกล่องโต้ตอบเพื่อดูชื่อเต็ม) และตรวจสอบให้แน่ใจว่า เลือกช่องทำเครื่องหมาย EXECUTE ถัดจากแต่ละรายการ คุณอาจพบว่าออบเจ็กต์ระบบบางรายการมีการทำเครื่องหมายในช่องอื่นไว้ โปรดอย่าเปลี่ยนตัวเลือกเหล่านี้
·สุดท้าย หลังจากตั้งค่าสิทธิ์ EXECUTE ทั้งหมดแล้ว ให้คลิกปุ่ม OK เพื่อบันทึกการเปลี่ยนแปลงและปิดกล่องโต้ตอบ คลิกปุ่มตกลงทีละรายการจนกว่ากล่องโต้ตอบทั้งหมดจะปิด
ณ จุดนี้ คุณได้สร้างผู้ใช้แบบกำหนดเองสำหรับ IIS และตั้งค่าสิทธิ์ที่เกี่ยวข้องของผู้ใช้ใน SQL Server ตอนนี้ คุณจำเป็นต้องทำการเปลี่ยนแปลงการกำหนดค่าในโครงการเว็บ ASP.NET เพื่อให้แน่ใจว่า ASP.NET ใช้บัญชีผู้ใช้เดียวกันสำหรับการเรียกทั้งหมดไปยัง SQL Server
ตั้งค่าแอปพลิเคชัน ASP.NET ของคุณเพื่อเลียนแบบผู้ใช้ DotNetKB
ขั้นตอนสุดท้ายในการสร้างการกำหนดค่าที่มั่นคงและเชื่อถือได้สำหรับแอปพลิเคชันเว็บ ASP.NET ที่ทำงานภายใต้ IIS คือการกำหนดค่าแอปพลิเคชันเว็บ ASP.NET เพื่อให้สามารถยอมรับ ID ผู้ใช้ Windows จาก IIS และสามารถใช้เพื่อเข้าถึงทรัพยากรระบบปฏิบัติการอื่น ๆ . ในการดำเนินการนี้ คุณเพียงแค่ต้องป้อนโค้ดหนึ่งบรรทัดในไฟล์ root web.config
ไฟล์ web.config ที่แก้ไขแล้วมีลักษณะดังนี้:
<การกำหนดค่า>
...องค์ประกอบอื่นๆ...
...องค์ประกอบอื่นๆ...
การกำหนดค่า>
โปรดทราบว่าคุณเพียงแค่เพิ่มองค์ประกอบและตั้งค่าแอตทริบิวต์จำลองให้เป็นจริง คุณไม่จำเป็นต้องป้อนบัญชีผู้ใช้หรือรหัสผ่าน เนื่องจาก IIS จะได้รับข้อมูลนี้ นั่นคือแม้ว่าผู้อื่นจะสามารถอ่านไฟล์การกำหนดค่าของคุณได้ แต่พวกเขาไม่สามารถระบุได้ว่าข้อมูลประจำตัวใดที่ใช้ในการรันแอปพลิเคชันเว็บของคุณ
ณ จุดนี้ คุณได้สร้างผู้ใช้แบบกำหนดเองและตั้งค่าสิทธิ์ที่เหมาะสมสำหรับการเข้าถึง SQL Server และ IIS
ณ จุดนี้ IIS จะทำงานภายใต้บัญชีแบบกำหนดเองที่มีสิทธิ์ที่จำกัด ผู้เยี่ยมชมที่เยี่ยมชมหน้าเว็บของแอปพลิเคชันของคุณจะถูกเรียกใช้ในฐานะผู้ใช้ที่กำหนดเองนี้ และจะมีสิทธิ์ในการตรวจสอบสิทธิ์สำหรับผู้ใช้ที่กำหนดเองนั้นเท่านั้น
อนุญาตบัญชีผู้ใช้ DotNetKB เพื่อเข้าถึง SQL Server
จากนั้นคุณจะต้องให้สิทธิ์ที่เหมาะสมแก่ผู้ใช้ที่กำหนดเองในการเข้าถึงฐานข้อมูล (DotNetKB) ในการดำเนินการนี้ คุณสามารถใช้ Microsoft SQL Server Enterprise Manager หรือเขียนสคริปต์แบบกำหนดเองเพื่อสร้างผู้ใช้ดังกล่าวและให้สิทธิ์ในการเข้าถึงออบเจ็กต์เฉพาะได้ บทความนี้อธิบายวิธีการทำเช่นนี้โดยใช้ SQL Server Enterprise Manager
หมายเหตุ: แม้ว่า Visual Studio .NET 2003 มีคุณลักษณะบูรณาการที่มีประสิทธิภาพมากมายที่เข้ากันได้กับ SQL Server แต่ก็ไม่อนุญาตให้มีการจัดการผู้ใช้และการอนุญาตผู้ใช้จากภายใน Visual Studio .NET 2003 ได้อย่างง่ายดาย ในองค์กรและทีมขนาดใหญ่ งานขั้นสูงเหล่านี้มักดำเนินการโดยผู้ดูแลระบบฐานข้อมูล ดังนั้น หลังจากเริ่ม SQL Server Enterprise Manager แล้ว คุณสามารถทำตามขั้นตอนด้านล่างเพื่อเพิ่มผู้ใช้ที่กำหนดเอง (DotNetKB) ลงในฐานข้อมูลได้
·ในมุมมองแผนผังทางด้านซ้าย ให้ขยายโหนดเพื่อแสดงฐานข้อมูล DotNetKB บนคอมพิวเตอร์ของฉัน มุมมองแบบต้นไม้มีโครงสร้างดังนี้: คอนโซลรูท SQL Server Group (LOCAL) (Windows NT) ฐานข้อมูล DotNetKB
·จากนั้น คลิกขวาที่โหนด Users ใต้ฐานข้อมูล และเลือก New Database User... (New Database User...) เมื่อกล่องโต้ตอบคุณสมบัติผู้ใช้ฐานข้อมูล - ผู้ใช้ใหม่ปรากฏขึ้น ให้เลือก (<ใหม่>) จากกล่องดรอปดาวน์ชื่อเข้าสู่ระบบ
·เมื่อกล่องโต้ตอบคุณสมบัติการเข้าสู่ระบบเซิร์ฟเวอร์ SQL - การเข้าสู่ระบบใหม่ปรากฏขึ้น ให้เลือกแท็บทั่วไปแล้วป้อน DotNetKB ในกล่องป้อนข้อมูลชื่อ ตรวจสอบให้แน่ใจว่าได้เลือกปุ่มตัวเลือก Windows Authentication และเลือกชื่อของคอมพิวเตอร์ที่มีบัญชีผู้ใช้แบบกำหนดเองจากกล่องแบบเลื่อนลงโดเมน จากนั้นเลือก DotNetKB จากกล่องดรอปดาวน์ฐานข้อมูล
·ตอนนี้ เลือกแท็บฐานข้อมูล ค้นหาฐานข้อมูล DotNetKB ในรายการที่ด้านบนของกล่องโต้ตอบ และเลือก จากนั้นตรวจสอบให้แน่ใจว่าได้เลือกบทบาทสาธารณะในรายการที่ด้านล่างของกล่องโต้ตอบ สุดท้ายให้คลิกปุ่มตกลงที่ด้านล่างของกล่องโต้ตอบเพื่อบันทึกการเปลี่ยนแปลงของคุณ
จากนั้น คุณต้องเพิ่มสิทธิ์ในการดำเนินการให้กับขั้นตอนการจัดเก็บและฟังก์ชันแบบกำหนดเองทั้งหมดในฐานข้อมูล DotNetKB ในการดำเนินการนี้ คุณจะต้องให้สิทธิ์แก่บทบาทสาธารณะเท่านั้น คุณสามารถให้สิทธิ์แก่ผู้ใช้ DotNetKB ซึ่งจะทำให้การเข้าสู่ระบบในอนาคตง่ายขึ้น (เมื่อผู้ใช้เหล่านี้สามารถเข้าถึง DotNetKB) เพื่อดำเนินการตามขั้นตอนที่เก็บไว้โดยไม่จำเป็นต้องเพิ่มสิทธิ์ใหม่สำหรับผู้ใช้แต่ละคน
ต่อไปนี้เป็นขั้นตอนในการให้สิทธิ์ในการดำเนินการแก่ขั้นตอนและฟังก์ชันที่เก็บไว้ในฐานข้อมูล DotNetKB:
·เน้นโหนดผู้ใช้ภายใต้ฐานข้อมูล DotNetKB ในมุมมองแบบต้นไม้เพื่อแสดงรายการผู้ใช้สำหรับฐานข้อมูลนี้ ค้นหาผู้ใช้ DotNetKB และดับเบิลคลิกเพื่อเปิดกล่องโต้ตอบคุณสมบัติผู้ใช้ฐานข้อมูล
· เมื่อไฮไลต์บทบาทสาธารณะ (เลือกไว้) ให้คลิกปุ่มคุณสมบัติ... เพื่อเปิดกล่องโต้ตอบคุณสมบัติบทบาทฐานข้อมูล จากนั้นคลิกปุ่มสิทธิ์... เพื่อแสดงรายการออบเจ็กต์ฐานข้อมูลและการตั้งค่าสิทธิ์
เมื่อเลือกบทบาทสาธารณะในรายการดรอปดาวน์บทบาทฐานข้อมูลที่ด้านบนของกล่องโต้ตอบ ให้ค้นหาขั้นตอนที่เก็บไว้และฟังก์ชันแบบกำหนดเองทั้งหมดที่กำหนดไว้สำหรับฐานข้อมูลนี้ (คุณอาจต้องขยายกล่องโต้ตอบเพื่อดูชื่อเต็ม) และตรวจสอบให้แน่ใจว่า เลือกช่องทำเครื่องหมาย EXECUTE ถัดจากแต่ละรายการ คุณอาจพบว่าออบเจ็กต์ระบบบางรายการมีการทำเครื่องหมายในช่องอื่นไว้ โปรดอย่าเปลี่ยนตัวเลือกเหล่านี้
·สุดท้าย หลังจากตั้งค่าสิทธิ์ EXECUTE ทั้งหมดแล้ว ให้คลิกปุ่ม OK เพื่อบันทึกการเปลี่ยนแปลงและปิดกล่องโต้ตอบ คลิกปุ่มตกลงทีละรายการจนกว่ากล่องโต้ตอบทั้งหมดจะปิด
ณ จุดนี้ คุณได้สร้างผู้ใช้แบบกำหนดเองสำหรับ IIS และตั้งค่าสิทธิ์ที่เกี่ยวข้องของผู้ใช้ใน SQL Server ตอนนี้ คุณจำเป็นต้องทำการเปลี่ยนแปลงการกำหนดค่าในโครงการเว็บ ASP.NET เพื่อให้แน่ใจว่า ASP.NET ใช้บัญชีผู้ใช้เดียวกันสำหรับการเรียกทั้งหมดไปยัง SQL Server
ตั้งค่าแอปพลิเคชัน ASP.NET ของคุณเพื่อเลียนแบบผู้ใช้ DotNetKB
ขั้นตอนสุดท้ายในการสร้างการกำหนดค่าที่มั่นคงและเชื่อถือได้สำหรับแอปพลิเคชันเว็บ ASP.NET ที่ทำงานภายใต้ IIS คือการกำหนดค่าแอปพลิเคชันเว็บ ASP.NET เพื่อให้สามารถยอมรับ ID ผู้ใช้ Windows จาก IIS และสามารถใช้เพื่อเข้าถึงทรัพยากรระบบปฏิบัติการอื่น ๆ . ในการดำเนินการนี้ คุณเพียงแค่ต้องป้อนโค้ดหนึ่งบรรทัดในไฟล์ root web.config
ไฟล์ web.config ที่แก้ไขแล้วมีลักษณะดังนี้:
<การกำหนดค่า>
...องค์ประกอบอื่นๆ...
...องค์ประกอบอื่นๆ...
การกำหนดค่า>
โปรดทราบว่าคุณเพียงแค่เพิ่มองค์ประกอบและตั้งค่าแอตทริบิวต์จำลองให้เป็นจริง คุณไม่จำเป็นต้องป้อนบัญชีผู้ใช้หรือรหัสผ่าน เนื่องจาก IIS จะได้รับข้อมูลนี้ นั่นคือแม้ว่าผู้อื่นจะสามารถอ่านไฟล์การกำหนดค่าของคุณได้ แต่พวกเขาไม่สามารถระบุได้ว่าข้อมูลประจำตัวใดที่ใช้ในการรันแอปพลิเคชันเว็บของคุณ
ณ จุดนี้ คุณได้สร้างผู้ใช้แบบกำหนดเองและตั้งค่าสิทธิ์ที่เหมาะสมสำหรับการเข้าถึง SQL Server และ IIS