บทคัดย่อ: บทความนี้จะแนะนำประเภทของโมเดลการรักษาความปลอดภัยสำหรับแอปพลิเคชัน ASP.NET WEB เป็นหลัก เปรียบเทียบข้อดีและข้อเสีย และเสนอกลไกการเลือก
คำสำคัญ: โมเดลการรักษาความปลอดภัยโมเดลย่อยที่เชื่อถือได้ การจำลอง/การมอบหมายโมเดลย่อย ASP.NET เว็บแอปพลิเคชัน
1.คำนำ
แอปพลิเคชัน ASP.NET WEB มักจะอยู่ในสถาปัตยกรรมแบบหลายชั้น โดยทั่วไป โครงสร้างเชิงตรรกะสามารถแบ่งออกเป็นชั้นการนำเสนอ ชั้นตรรกะทางธุรกิจ และชั้นการเข้าถึงข้อมูล ระดับ. บทความนี้ส่วนใหญ่กล่าวถึงรูปแบบการรักษาความปลอดภัยการเข้าถึงทรัพยากรของแอปพลิเคชัน SP.NET
2. รหัสการเข้าถึงทรัพยากร
ทรัพยากรทั่วไปที่แอปพลิเคชัน WEB มอบให้กับไคลเอ็นต์จากภายนอก ได้แก่:
ทรัพยากรของเซิร์ฟเวอร์เว็บ เช่น เว็บเพจ บริการบนเว็บ และทรัพยากรแบบคงที่ (เพจ HTML และรูปภาพ)
ทรัพยากรฐานข้อมูล เช่น ข้อมูลต่อผู้ใช้หรือข้อมูลระดับแอปพลิเคชัน
ทรัพยากรเครือข่าย เช่น ทรัพยากรระบบไฟล์ระยะไกล เป็นต้น
ทรัพยากรระบบ เช่น รีจิสทรี บันทึกเหตุการณ์ และไฟล์การกำหนดค่า เป็นต้น
ลูกค้าเข้าถึงทรัพยากรเหล่านี้ผ่านเลเยอร์แอปพลิเคชัน โดยมีข้อมูลประจำตัวไหลผ่านแต่ละเลเยอร์ ข้อมูลระบุตัวตนนี้ใช้สำหรับการเข้าถึงทรัพยากรประกอบด้วย:
ข้อมูลระบุตัวตนของผู้เรียกดั้งเดิม ข้อมูลระบุตัวตนของผู้เรียกดั้งเดิมจะได้รับมาและต่อมาจะไหลผ่านแต่ละเลเยอร์ของระบบ
รหัสกระบวนการ การเข้าถึงทรัพยากรภายในเครื่องและการเรียกดาวน์สตรีมทำได้โดยใช้รหัสกระบวนการปัจจุบัน ความเป็นไปได้ของแนวทางนี้ขึ้นอยู่กับขอบเขตที่จะข้าม เนื่องจากระบบเป้าหมายจะต้องรับรู้ถึงเอกลักษณ์ของกระบวนการ สิ่งนี้จะต้องถูกเรียกด้วยวิธีใดวิธีหนึ่งจากสองวิธี:
โดเมนความปลอดภัยข้าม Windows ภายในโดเมนความปลอดภัยของ Windows เดียวกัน - ใช้ความเชื่อถือและบัญชีโดเมน หรือใช้ชื่อผู้ใช้และรหัสผ่านซ้ำกันโดยไม่มีความสัมพันธ์ที่เชื่อถือได้
บัญชีบริการ วิธีการนี้ใช้บัญชีบริการ (คงที่) ตัวอย่างเช่น สำหรับการเข้าถึงฐานข้อมูล บัญชีบริการอาจแสดงด้วยชื่อผู้ใช้และรหัสผ่าน SQL แบบคงที่โดยส่วนประกอบที่เชื่อมต่อกับฐานข้อมูล
เมื่อจำเป็นต้องมีการระบุตัวตนของ Windows แบบคงที่ ควรใช้แอปพลิเคชันเซิร์ฟเวอร์ Enterprise Services
ข้อมูลประจำตัวที่กำหนดเอง เมื่อไม่มีบัญชี Windows คุณสามารถใช้ Iprincipal และ Iidentity เพื่อสร้างข้อมูลประจำตัวของคุณเอง ซึ่งอาจรวมถึงรายละเอียดเกี่ยวกับบริบทด้านความปลอดภัย
3. รูปแบบการเข้าถึงทรัพยากร
3.1 โมเดลระบบย่อยที่เชื่อถือได้
ดังแสดงในรูปที่ 1 ในโมเดลนี้ บริบทด้านความปลอดภัยของผู้เรียกดั้งเดิมไม่ไหลผ่านบริการที่ระดับระบบปฏิบัติการ แต่จะใช้ข้อมูลประจำตัวคงที่ในชั้นบริการระดับกลางเพื่อเข้าถึงบริการและทรัพยากรดาวน์สตรีม โมเดลระบบย่อยที่เชื่อถือได้ได้ชื่อมาจากข้อเท็จจริงที่ว่าบริการดาวน์สตรีม (อาจเป็นฐานข้อมูล) เชื่อถือบริการอัปสตรีมเพื่ออนุญาตผู้โทร ในตัวอย่างในรูปที่ 1 ฐานข้อมูลเชื่อถือการอนุญาตของผู้โทรโดยเลเยอร์กลาง และอนุญาตให้เฉพาะผู้โทรที่ได้รับอนุญาตเท่านั้นที่จะเข้าถึงฐานข้อมูลโดยใช้ข้อมูลระบุตัวตนที่เชื่อถือได้
3.1.1 โหมดการเข้าถึงทรัพยากร
ในโมเดลระบบย่อยที่เชื่อถือได้ โมเดลการเข้าถึงทรัพยากรจะเป็นดังนี้:
ตรวจสอบผู้ใช้ แมปผู้ใช้กับบทบาท อนุญาตตามการเป็นสมาชิกของบทบาท ใช้ข้อมูลประจำตัวที่เชื่อถือได้แบบคงที่เพื่อเข้าถึงทรัพยากรดาวน์สตรีม
3.1.2 บัตรประจำตัวคงที่
ข้อมูลประจำตัวคงที่ที่ใช้ในการเข้าถึงระบบดาวน์สตรีมและตัวจัดการทรัพยากร ซึ่งสามารถจัดเตรียมได้โดยใช้ข้อมูลประจำตัวของกระบวนการหรือบัญชีบริการบัญชี Windows ที่กำหนดไว้ล่วงหน้า สำหรับ SQL Server Explorer นี่หมายถึงการรับรองความถูกต้องของ Windows ไปยัง SQL Server
เมื่อใช้ข้อมูลประจำตัวของกระบวนการ คุณมักจะใช้ข้อมูลประจำตัวของกระบวนการ ASP.NET (ค่าเริ่มต้นคือบัญชี ASPNET) ในแอปพลิเคชันที่ใช้งานจริง มักจำเป็นต้องเปลี่ยนบัญชี ASPNET ให้เป็นรหัสผ่านที่ปลอดภัยยิ่งขึ้น และสร้างบัญชี Windows บนคอมพิวเตอร์ SQL Server ที่ตรงกับบัญชีกระบวนการ ASP.NET วิธีการเฉพาะมีดังนี้:
แก้ไขไฟล์ Machine.config ที่อยู่ในไดเร็กทอรี %windr%Microsoft.NETFrameworkv1.1.4322CONFIG และกำหนดค่าแอตทริบิวต์รหัสผ่านใหม่บนองค์ประกอบ <processModel> เป็นค่าเริ่มต้น <!-UserName="machine"password = "สร้างอัตโนมัติ" -->เปลี่ยนเป็น <!-UserName="machine" pass="NewPassword" -->; หรือใช้เครื่องมือ ASPNET_setreg.exe เพื่อบันทึกชื่อผู้ใช้และรหัสผ่านลงในรีจิสทรี และเปลี่ยนการกำหนดค่าเป็น: < !- เปิดใช้งาน = "true" ชื่อผู้ใช้ = "Registry:HKLMSOFTWAREYourAPPprocesssModelASPNET_SETREG,ชื่อผู้ใช้" รหัสผ่าน = "Registry:HKLMSOFTWAREYourAPPprocesssModelASPNET_SETREG,รหัสผ่าน" -->
แอปพลิเคชันอื่นใช้บัญชี SQL ที่กำหนด (ระบุโดยชื่อผู้ใช้และรหัสผ่านในสตริงการเชื่อมต่อ) เพื่อเข้าถึง SQL Server ในกรณีนี้ จะต้องกำหนดค่าฐานข้อมูลสำหรับการรับรองความถูกต้องของ SQL สตริงการเชื่อมต่อที่บันทึกไว้ในไฟล์กำหนดค่าจำเป็นต้องได้รับการป้องกันด้วยการเข้ารหัส
3.2 การจำลอง/แบบจำลองการมอบหมาย
ดังที่แสดงในรูปที่ 2 เมื่อใช้โมเดลการเลียนแบบ/การลบ บริการหรือส่วนประกอบ (โดยปกติจะอยู่ในเลเยอร์บริการทางธุรกิจแบบลอจิคัล) จะใช้ความสามารถในการเลียนแบบระบบปฏิบัติการเพื่อเลียนแบบข้อมูลเฉพาะตัวของไคลเอ็นต์ก่อนที่จะเข้าถึงบริการดาวน์สตรีมถัดไป หากบริการอยู่บนเครื่องเดียวกัน การใช้การเลียนแบบก็เพียงพอแล้ว หากบริการดาวน์สตรีมอยู่บนเครื่องระยะไกล คุณต้องใช้การมอบหมายด้วย บริบทความปลอดภัยของการเข้าถึงทรัพยากรดาวน์สตรีมจะเป็นบริบทของไคลเอ็นต์
3.3 เลือกรูปแบบการเข้าถึงทรัพยากร
การเปรียบเทียบโมเดลการเข้าถึงทรัพยากรทั้งสองแบบแสดงในตารางที่ 1
แบ็คเอนด์ของฟังก์ชันการจำลองระบบย่อยที่เชื่อถือได้/การตรวจสอบโมเดลที่ได้รับมอบหมายจะเชื่อถือบริการชั้นบน หากเลเยอร์กลางถูกบุกรุก ทรัพยากรแบ็คเอนด์ก็เสี่ยงต่อการถูกโจมตี บริการแบ็คเอนด์สามารถตรวจสอบและอนุญาตผู้โทรแต่ละรายด้วยการรักษาความปลอดภัยที่ดี
ความสามารถในการปรับขนาดรองรับการรวมการเชื่อมต่อและมีความสามารถในการปรับขนาดที่ดี ไม่รองรับการรวมการเชื่อมต่อและมีความสามารถในการปรับขนาดต่ำ
ACL การจัดการ ACL แบ็กเอนด์ได้รับการกำหนดค่าสำหรับเอนทิตีเดียว ซึ่งต้องการงานการจัดการน้อยลง ผู้ใช้แต่ละคนจะต้องได้รับระดับการเข้าถึงที่สอดคล้องกัน เมื่อจำนวนทรัพยากรแบ็คเอนด์และผู้ใช้เพิ่มขึ้น งานการจัดการจะกลายเป็นเรื่องยุ่งยาก
ไม่จำเป็นต้องมอบหมายปัญหาทางเทคนิค จำเป็นต้องมีการมอบอำนาจ ผู้ให้บริการรักษาความปลอดภัยส่วนใหญ่ไม่สนับสนุนการมอบหมาย
โมเดลระบบย่อยที่เชื่อถือได้ใช้ในแอปพลิเคชันอินเทอร์เน็ตส่วนใหญ่รวมถึงแอปพลิเคชันอินทราเน็ตขนาดใหญ่ เนื่องจากโมเดลนี้สามารถรองรับความสามารถในการขยายขนาดได้ดี แบบจำลองการจำลอง/ผู้รับมอบสิทธิ์มีแนวโน้มที่จะใช้ในระบบขนาดเล็ก สำหรับแอปพลิเคชันเหล่านี้ ความสามารถในการปรับขนาดไม่ใช่การพิจารณาเบื้องต้นคือการตรวจสอบ