มีสองตัวเลือกสำหรับเซฟโหมดเมื่อติดตั้ง SQL Server ความแตกต่างระหว่างซอฟต์แวร์เหล่านี้คือซอฟต์แวร์ใดที่ดำเนินการกระบวนการตรวจสอบสิทธิ์ การรับรองความถูกต้องเป็นกระบวนการในการยืนยันตัวตนของผู้ใช้ที่กำลังเชื่อมต่อกับ SQL Server เมื่อดำเนินการตรวจสอบสิทธิ์แล้ว SQL Server จะสามารถตรวจสอบได้ว่าผู้ใช้มีสิทธิ์ในการเชื่อมต่อกับทรัพยากรที่ร้องขอ เช่น ฐานข้อมูล หรือไม่ หากผู้ใช้มีสิทธิ์ในการเชื่อมต่อกับฐานข้อมูล SQL Server จะอนุญาตให้การร้องขอการเชื่อมต่อสำเร็จ มิฉะนั้น การเชื่อมต่อจะล้มเหลว กระบวนการตรวจสอบสิทธิ์ผู้ใช้นี้เรียกอีกอย่างว่าการอนุญาต
· Windows Authentication (หรือที่เรียกว่า Trusted Authentication หรือ Integrated Security) ใช้ข้อมูลประจำตัวของผู้ใช้ Windows ที่ส่งคำขอเชื่อมต่อเพื่อดำเนินการอนุญาตฐานข้อมูล ในกรณีนี้ สตริงการเชื่อมต่อไม่จำเป็นต้องระบุชื่อผู้ใช้และรหัสผ่านที่ชัดเจน ASP.NET ทำงานเป็นผู้ใช้ภายในเครื่องชื่อ "ASPNET" (หรือ "บริการเครือข่าย" ใน IIS 6.0) ดังนั้นเมื่อใช้ Windows Authentication SQL จะตรวจสอบว่าผู้ใช้รายนี้มีสิทธิ์ใช้ฐานข้อมูลหรือไม่ ณ จุดนี้ แอปพลิเคชัน ASP.NET ทั้งหมดกำลังทำงานกับผู้ใช้รายเดียวกัน ดังนั้นเซฟโหมดจึงปฏิบัติต่อแอปพลิเคชันเหล่านั้นอย่างเท่าเทียมกัน แม้ว่าจะเป็นไปได้ที่จะเรียกใช้แต่ละแอปพลิเคชันในกระบวนการ ASP.NET ที่แยกจากกัน (ผู้ใช้แยกต่างหากที่เรียกใช้แต่ละแอปพลิเคชัน) หรือเลียนแบบข้อมูลประจำตัวผู้ใช้ Windows ของไคลเอนต์เบราว์เซอร์ที่ทำการร้องขอการเชื่อมต่อ แต่สิ่งเหล่านี้อยู่นอกเหนือขอบเขตของหนังสือเล่มนี้ . อย่างไรก็ตาม การเลียนแบบไคลเอ็นต์คือการใช้ Windows Authentication ที่พบบ่อยที่สุดในเว็บแอปพลิเคชัน
· การตรวจสอบความถูกต้องของ SQL จะตรวจสอบชื่อผู้ใช้และรหัสผ่านที่ให้มาอย่างชัดเจนกับผู้ใช้ที่กำหนดค่าภายใน SQL Server (โดยไม่เกี่ยวข้องกับระบบปฏิบัติการ) ในกรณีนี้ แต่ละแอปพลิเคชันที่ทำงานในกระบวนการ ASP.NET สามารถเชื่อมต่อกับฐานข้อมูลด้วยใบรับรองแยกต่างหาก ดังนั้นจึงเป็นการแยกแอปพลิเคชันอย่างสมเหตุสมผล (แอปพลิเคชัน A จะไม่สามารถเชื่อมต่อกับฐานข้อมูลได้หากไม่มีชื่อผู้ใช้และรหัสผ่านของ B) ไม่สามารถเชื่อมต่อกับฐานข้อมูลของ B) นี่เป็นโหมดการตรวจสอบสิทธิ์ทั่วไปที่ใช้สำหรับเว็บแอปพลิเคชันที่ใช้งาน โดยเฉพาะอย่างยิ่งในกรณีของโฮสติ้งที่ใช้ร่วมกัน ข้อเสียเล็กน้อยคือแอปพลิเคชันต้องเก็บรหัสผ่านของบัญชีผู้ใช้ที่ใช้ในการเชื่อมต่อ และหากผู้ใช้ที่เป็นอันตรายได้รับรหัสผ่านนี้ ความปลอดภัยของฐานข้อมูลก็จะถูกบุกรุก อย่างไรก็ตาม ดังที่คุณจะเห็นในภายหลังในหนังสือเล่มนี้ ASP.NET มอบวิธีที่ปลอดภัยในการจัดเก็บรหัสผ่านการรับรองความถูกต้องของ SQL ในรูปแบบที่เข้ารหัสในไฟล์ Web.config ซึ่งจะช่วยลดความเสี่ยงในการได้รับรหัสผ่าน
· โหมดผสมคือการกำหนดค่าของ SQL Server ที่อนุญาตทั้ง Windows Authentication และ SQL Authentication
เมื่อติดตั้ง SQL Server หรือ SSE คุณต้องเลือกโหมดการรับรองความถูกต้อง ใน SQL Server จะมีตัวช่วยสร้างเพื่อช่วยคุณเลือกในระหว่างขั้นตอนการรักษาความปลอดภัย ในขณะที่อยู่ใน SSE ตัวเลือกเริ่มต้นคือการรับรองความถูกต้องของ Windows หากคุณต้องการติดตั้ง SQL Authentication คุณต้องกำหนดค่าอย่างชัดเจน บทความนี้ใช้การรับรองความถูกต้องของ Windows
หากคุณได้ติดตั้ง SQL Server หรือ SSE คุณสามารถดูโหมดการตรวจสอบสิทธิ์ที่ระบุได้โดยเปิด RegEdit (แน่นอนว่าคุณต้องสำรองข้อมูลก่อน) ค้นหา HKey_Local_Machine/Software/Microsoft/Microsoft SQL Server และค้นหา LoginMode คีย์ย่อยของการลงทะเบียนที่มีค่า 1 แสดงถึง Windows Authentication ในขณะที่ค่า 2 แสดงถึงโหมด Mixed Authentication
ตาราง 3-1 สรุปความแตกต่างระหว่างโหมดเหล่านี้
ตารางที่ 3-1
การรับรองความถูกต้องของ Windows | การรับรองความถูกต้องของ SQL | |
ชื่อที่เปลี่ยนได้ | การรับรองความถูกต้องที่เชื่อถือได้ การรักษาความปลอดภัยแบบรวม | ไม่ แต่การรับรองความถูกต้องของโหมดผสมอนุญาตให้ใช้การรับรองความถูกต้องของ Windows หรือ SQL ได้ |
สภาพแวดล้อมทั่วไป | ของราย | ชื่อ |
ผู้ใช้อินเทอร์เน็ตและกระบวนการตรวจสอบความ | ถูก | ต้อง |
ของ | Windows | |
SQL | Server | SSE |
=ผู้ใช้จริง | =ชื่อผู้ใช้; รหัสผ่าน=รหัสผ่าน | |
ผู้ใช้แอปพลิเคชันเว็บ | ASP.NET, ASPNET (IIS 5.x) หรือบริการเครือข่าย (IIS 6) | ผู้ใช้ SQL |
มีข้อดี | ของการรักษาความปลอดภัยที่ดีกว่า สามารถควบคุมเหตุการณ์ SQL ของผู้ใช้และการติดตามกิจกรรมของ Windows | ได้ ปรับใช้บนเครื่องโฮสต์โดยไม่ต้องสร้างบัญชีใหม่โดยไม่ขึ้นกับระบบปฏิบัติการ ไซต์อินทราเน็ตที่โฮสต์ต้องใช้ทักษะปานกลางเท่านั้น ให้วิธีที่ยืดหยุ่นมากขึ้นสำหรับแอปพลิเคชันในการเชื่อมต่อกับแต่ละฐานข้อมูลด้วยใบรับรองที่แตกต่างกัน |
ข้อเสีย | การให้ใบรับรอง Windows แก่แอปพลิเคชันเว็บมีศักยภาพในการกำหนดขอบเขตการอนุญาตในระบบปฏิบัติการที่มีขนาดใหญ่เกินไป | รหัสผ่านจะถูกเก็บไว้ในแอปพลิเคชันเว็บ (ซึ่งไม่ใช่ กรณีในการรับรองความถูกต้องของ Windows) ยืนยันว่ารหัสผ่านถูกบันทึกไว้ในไฟล์ Web.config และมีการเข้ารหัส อนุญาตการดำเนินการระดับต่ำสำหรับเว็บแอปพลิเคชันที่ใช้ใบรับรอง SA สร้างใบรับรองใหม่สำหรับแอปพลิเคชันเว็บ ASP.NET เสมอ และให้สิทธิ์ที่จำเป็นเท่านั้น |