เอกสารโกงความปลอดภัย SAML
คู่มืออ้างอิงอย่างรวดเร็วสำหรับ Security Assertion Markup Language (SAML) และคุณลักษณะด้านความปลอดภัย ทำความเข้าใจคำสำคัญ เคล็ดลับการใช้งาน และแนวทางปฏิบัติที่ดีที่สุดสำหรับการรักษาความปลอดภัยการรับรองความถูกต้องและการอนุญาตที่ใช้ SAML ในสภาพแวดล้อมองค์กร
บทนำ
Security Assertion Markup Language (SAML) เป็นมาตรฐานแบบเปิดสำหรับการแลกเปลี่ยนข้อมูลการรับรองความถูกต้องและการอนุญาตระหว่างฝ่ายต่างๆ โดยเฉพาะอย่างยิ่งระหว่างผู้ให้บริการข้อมูลประจำตัวและผู้ให้บริการ ในการรับรองความปลอดภัย SAML เป็นภาษาแบบมาร์กอัปที่ใช้ XML สำหรับคำยืนยันด้านความปลอดภัยที่ใช้สำหรับการลงชื่อเข้าใช้แบบครั้งเดียว (SSO) และการรวมตัวตนแบบ federated ซึ่งใช้กันทั่วไปในสภาพแวดล้อมองค์กรเพื่อวัตถุประสงค์ในการตรวจสอบและอนุญาต
กระบวนการรับรองความถูกต้องมาตรฐานของ SAML
- ผู้ใช้ร้องขอการเข้าถึงแอปพลิเคชันไคลเอ็นต์ซึ่งทำหน้าที่เป็นผู้ให้บริการ (SP)
- SP ส่งคำขอรับรองความถูกต้องของ SAML SSO ไปยังผู้ให้บริการข้อมูลประจำตัว (IdP) และเปลี่ยนเส้นทางผู้ใช้ไปยัง IdP
- IdP ขอข้อมูลประจำตัวจากผู้ใช้ หากผู้ใช้ยังไม่ได้รับการตรวจสอบสิทธิ์
- ผู้ใช้ป้อนข้อมูลประจำตัว และ IdP ตรวจสอบความถูกต้องของผู้ใช้
- IdP ส่งคำยืนยันการตอบกลับ SAML ไปยัง SP ซึ่งรวมถึงสถานะการตรวจสอบสิทธิ์ของผู้ใช้และแอตทริบิวต์ จากนั้น IdP จะเปลี่ยนเส้นทางผู้ใช้กลับไปยัง SP
- SP รับคำยืนยันการตอบกลับ SAML ตรวจสอบความถูกต้องของมัน และให้สิทธิ์การเข้าถึงแก่ผู้ใช้
ปัจจัยด้านความปลอดภัยใน SAML
SP entity ID
คิดว่า SP entity ID เป็นตราสัญลักษณ์เฉพาะสำหรับ SP ภายใต้บริบทการรับรองความถูกต้องของ SAML มันเหมือนกับลายนิ้วมือที่ช่วยให้ IdP จำ SP ในระหว่างการโต้ตอบ ID นี้เป็นส่วนสำคัญของเมทาดาทาของ SP ที่ใช้ร่วมกับ IdP เพื่อสร้างความไว้วางใจและมั่นใจในการสื่อสารที่ปลอดภัย
การใช้งาน SP entity ID:
- การลงทะเบียนเมทาดาทา: แอตทริบิวต์
EntityID
เป็นส่วนหนึ่งของเมทาดาทาของ SP ที่ใช้ร่วมกับ IdP เพื่อสร้างความสัมพันธ์ที่เชื่อถือได้ มันทำหน้าที่เป็นตัวระบุเฉพาะในการค้นหาเมทาดาทาของ SP และรับรายละเอียดการกำหนดค่าที่จำเป็นสำหรับปฏิสัมพันธ์ของ SAML - คำขอรับรองความถูกต้อง: SP entity ID รวมอยู่ในคำขอรับรองความถูกต้องของ SAML ที่ส่งไปยัง IdP โดยระบุ SP ที่ร้องขออย่างชัดเจน IdP ใช้ข้อมูลนี้เพื่อตรวจสอบคำขอและพิจารณาบริบทการรับรองความถูกต้องที่เหมาะสม
- การอนุญาตกลุ่มผู้ฟัง: หลังจา กตรวจสอบสิทธิ์ของผู้ใช้เรียบร้อยแล้ว SP entity ID จะรวมอยู่ในคำยืนยัน SAML เป็นการจำกัดขอบเขตของกลุ่มผู้ฟัง มาตรการนี้รับรองว่าคำยืนยันมีไว้สำหรับ SP ที่กำหนดเท่านั้น และไม่สามารถใช้ในทางที่ผิดโดย SP อื่นๆ
IdP entity ID
ในทางกลับกัน IdP entity ID คือป้ายกำกับพิเศษสำหรับ IdP มันช่วยระบุ IdP ภายในระบบนิเวศ SAML ทำให้ SP ค้นหาได้ง่าย ID นี้รวมอยู่ในเมทาดาทาของ IdP และใช้ร่วมกับ SP เพื่อส่งเสริมความสัมพันธ์ที่น่าเชื่อถือและการเชื่อมต่อที่ปลอดภัย
การใช้งาน IdP entity ID:
- การลงทะเบียนเมทาดาทา: แอตทริบิวต์
EntityID
ยังรวมอยู่ในเมทาดาทาของ IdP ที่ใช้ร่วมกับ SP เพื่อสร้างความสัมพันธ์ที่เชื่อถือได้ มันทำหน้าที่เป็นตัวระบุเฉพาะในการค้นหาเมทาดาทาของ IdP และรับรายละเอียดการกำหนดค่าที่จำเป็นสำหรับ SP เพื่อตรวจสอบการตอบกลับ SAML - ผู้ออกใบอนุญาต: เมื่อ IdP สร้างคำยืนยัน SAML มันจะรวม entity ID ของตนเป็นผู้ออกใบอนุญาต แอตทริบิวต์นี้บ่งชี้ว่าเบี้ยประกันภัยออกโดยเอนทิตีใดและช่วยให้ SP ตรวจสอบความถูกต้องและความสมบูรณ์ของมัน
สถานะรีเลย์
สถานะรีเลย์เป็นพารามิเตอร์ที่ใช้ในการตรวจสอบสิทธิ์ของ SAML ที่อำนวยความสะดวกในการถ่ายโอนข้อมูลสถานะระหว่าง SP และ IdP มันทำหน้าที่เป็นสะพานเชื่อมระหว่างเส้นทาง SP ที่เริ่มต้นการ SSO และ IdP ที่เริ่มต้นการ SSO โดยรักษาบริบทของผู้ใช้และสถานะเซสชันในระหว่างกระบวนการตรวจสอบสิทธิ์
การใช้งานสถานะรีเลย์:
- การรักษาบริบทของผู้ใช้: สถานะรีเลย์ช่วยให้ SP สามารถส่งข้อมูลเพิ่มเติมไปยัง IdP ในระหว่างกระบวนการตรวจสอบสิทธิ์ ข้อมูลนี้อาจรวมถึงสถานะเซสชันของผู้ใช้ บริบทของแอปพลิเคชัน หรือข้อมูลอื่น ๆ ที่เกี่ยวข้องใด ๆ ที่จำเป็นต้องรักษาไว้ตลอดเส้นทางการ SAML เช่น URL หรือ ID เซสชันของแอปพลิเคชันที่ผู้ใช้กำลังเข้าถึงก่อนการตรวจสอบสิทธิ์
- ป้องกันการโจมตี CSRF: สถานะรีเลย์มีความสำคัญสำหรับการป้องกันการโจมตี cross-site request forgery (CSRF) ในระหว่างการตรวจสอบสิทธิ์ SAML โดยการรวมสถานะรีเลย์ที่มีค่าเฉพาะและไม่สามารถคาดเดาได้ในคำขอรับรองความถูกต้อง SP สามารถตรวจสอบความสมบูรณ์ของการตอบกลับ SAML และให้แน่ใจว่ามันมีความสัมพันธ์กับคำขอต้นฉบับ
ลายเซ็นคำยืนยัน
ลายเซ็นคำยืนยันเป็นคุณลักษณะด้านความปลอดภัยที่สำคัญใน SAML ซึ่งช่วยรับรองความสมบูรณ์ ความถูกต้อง และการไม่เปลี่ยนแปลงของคำยืนยัน SAML มันเกิดจากการมีลายเซ็นดิจิตอลที่ใช้กุญแจส่วนตัวของ IdP ในการลงนาม ทำให้ SP สามารถตรวจสอบต้นกำเนิดของคำยืนยันและตรวจจับความพยายามในการดัดแปลงได้
การทำงานของลายเซ็นคำยืนยัน:
- การสร้างคู่กุญแจ: IdP สร้างคู่กุญแจสาธารณะ-ส่วนตัว โดยที่กุญแจส่วนตัวใช้ในการลงนามในคำยืนยัน SAML และกุญแจสาธารณะจะถูกแชร์กับ SP เพื่อการตรวจสอบ ลักษณะการเข้ารหัสแบบอสมมาตรนี้ทำให้มั่นใจได้ว่าเฉพาะ IdP เท่านั้นที่สามารถลงนามในคำยืนยันได้ ในขณะที่ SP สามารถตรวจสอบได้
- ใบรับรองที่ใช้ร่วมกัน: IdP ให้ SP รับรองกุญแจสาธารณะของ ตนซึ่งมีข้อมูลเกี่ยวกับกุญแจสาธารณะที่ใช้ในการยืนยันลายเซ็นคำยืนยัน โดยปกติแล้วใบรับรองนี้จะเป็นส่วนหนึ่งของเมทาดาทาของ IdP หรือ SP สามารถรับมันผ่านกระบวนการดาวน์โหลดที่ปลอดภัย
- การลงนามคำยืนยัน: หลังจากตรวจสอบสิทธิ์ของผู้ใช้ IdP จะลงนามในคำยืนยัน SAML ดิจิตอลโดยใช้กุญแจส่วนตัว ลายเซ็นนี้รวมอยู่ในคำยืนยันพร้อมกับใบรับรองกุญแจสาธารณะเพื่อให้ SP ยืนยันความถูกต้องของคำยืนยัน
- การตรวจสอบคำยืนยัน: หลังจาก SP ได้รับคำยืนยัน SAML มันใช้กุญแจสาธารณะของ IdP เพื่อตรวจสอบลายเซ็นของคำยืนยัน หากลายเซ็นถูกต้อง SP สามารถเชื่อถือคำยืนยันและให้สิทธิ์การเข้าถึงแก่ผู้ใช้
การเข้ารหัสคำยืนยัน
นอกเหนือจากการลงนาม SAML ยังรองรับการเข้ารหัสคำยืนยันเพื่อป้องกันแอตทริบิวต์และข้อมูลที่สำคัญของผู้ใช้ที่ส่งระหว่าง IdP และ SP ด้วยการเข้ารหัสคำยืนยัน IdP ทำให้มั่นใจว่าเฉพาะผู้รับที่ต้องการ (SP) เท่านั้นที่สามารถถอดรหัสและเข้าถึงเนื้อหาของคำยืนยันได้ รักษาความเป็นส่วนตัวและความลับของผู้ใช้ให้ปลอดภัย การเข้ารหัสคำยืนยันเป็นคุณลักษณะความปลอดภัยเสริมใน SAML ที่สามารถใช้เพื่อเพิ่มการป้องกันข้อมูล
การใช้งานการเข้ารหัสคำยืนยัน:
- การปกป้องแอตทริบิวต์ที่สำคัญ: การเข้ารหัสคำยืนยันมีประโยชน์อย่างยิ่งในการปกป้องแอตทริบิวต์ที่สำคัญของผู้ใช้ เช่น ข้อมูลที่สามารถระบุตัวบุคคลได้ (PII) ข้อมูลทางการเงิน หรือเวชระเบียน ด้วยการเข้ารหัสแอตทริบิวต์เหล่านี้ภายในคำยืนยัน IdP จะป้องกันการเข้าถึงที่ไม่ได้รับอนุญาตและรักษาความลับของข้อมูล
การทำงานของการเข้ารหัสคำยืนยัน:
- การแลกเปลี่ยนกุญแจ: IdP และ SP จัดตั้งกลไกการแลกเปลี่ยนกุญแจที่ปลอดภัยเพื่อแชร์กุญแจการเข้ารหัสสำหรับการปกป้องคำยืนยัน SAML สิ่งนี้อาจเกี่ยวข้องกับการใช้กุญแจการเข้ารหัสแบบสมมาตร์หรือโครงร่างการเข้ารหัสกุญแจสาธารณะ ขึ้นอยู่กับอัลกอริทึมการเข้ารหัสและกลยุทธ์การจัดการกุญแจ
- การเข้ารหัสแอตทริบิวต์: หลังจากสร้างคำยืนยัน SAML แล้ว IdP เข้ารหัสแอตทริบิวต์ของผู้ใช้ที่สำคัญโดยใช้กุญแจการเข้ารหัสที่แชร์กัน โดยแอตทริบิวต์ที่เข้ารหัสจะถูกฝังอยู่ภายในคำยืนยันทำให้มั่นใจได้ว่ามีเพียง SP เท่านั้นที่สามารถถอดรหัสและเข้าถึงข้อมูลได้
- การถอดรหัสคำยืนยัน: หลังจาก SP ได้รับคำยืนยันที่เข้ารหัสแล้ว มันจะถอดรหัสแอตทริบิวต์ที่ได้รับการปกป้องโดยใช้กุญแจการเข้ารหัสที่แชร์กระบวนบนี้ให้ SP สามารถเข้าถึงข้อมูลที่สำคัญของผู้ใช้ได้โดยปลอดภัยและสามารถดำเนินการตามความจำเป็นได้
วิธีการกำหนดบาน
วิธีการกำหนดบานใน SAML กำหนดวิธีการที่ผู้ใช้ข้อความ SAML ถูกส่งระหว่าง SP และ IdP ผ่านโปรโตคอลการสื่อสารต่างๆ พวกเขากำหนดการเข้ารหัส การส่ง และกลไกความปลอดภัยที่ใช้ในการแลกเปลี่ยนคำยืนยัน SAML และคำขอ เพื่อให้การสื่อสารระหว่างฝ่ายที่เกี่ยวข้องสามารถดำเนินไปได้อย่างปลอดภัยและน่าเชื่อถือ
ทั้ง SP และ IdP จะระบุวิธีการกำหนดบานที่พวกเขาสนับสนุนในเมทาดาทาของพวกเขา ทำให้พวกเขาสามารถเจรจาเลือกวิธีการที่เหมาะสมสำหรับปฏิสัมพันธ์ของ SAML การเลือกวิธีการกำหนดบานขึ้นอยู่กับปัจจัยต่างๆ เช่น ขนาดของข้อความ ข้อกำหนดความปลอดภัย และลักษณะของช่องทางการสื่อสาร
วิธีการกำหนดบานของ SAML:
- HTTP Redirect: ข้อความ SAML ถูกเข้ารหัสเป็นพารามิเตอร์ URL และถูกส่งผ่านการเปลี่ยนเส้นทาง HTTP วิธีการนี้เหมาะสมสำหรับกรณีข้อความมีขนาดจำกัด และช่องทางการสื่อสารไม่ปลอดภัย
- HTTP POST: ข้อความ SAML ถูกเข้ารหัสเป็นพารามิเตอร์ในแบบฟอร์มและถูกส่งผ่านการร้องขอ HTTP POST วิธีการนี้ใช้เมื่อขนาดข้อความเกินกว่าความยาวของ URL หรือเมื่อมาตรการความปลอดภัยเพิ่มเติมเป็นสิ่งจำเป็น
- Artifact: ข้อความ SAML ถูกส่งโดยใช้โทเค็นอายุสั้นที่เรียกว่า artifacts ซึ่งถูกแลกเปลี่ยนบนช่องทางแบบ back-channel ที่ปลอดภัยระหว่าง SP และ IdP วิธีการนี้เหมาะสำหรับกรณีที่ความลับและความสมบูรณ์ของข้อความเป็นสิ่งสำคัญ และช่องทางการสื่อสารมีความปลอดภัย
วิธีการกำหนดบานที่พบบ่อยที่สุด:
- คำขอรับรองความถูกต้อง: คำขอรับรองความถูกต้องจาก SP ไปยัง IdP มักจะส่งผ่านการเปลี่ยนเส้นทาง HTTP เนื่องจากความเรียบง่ายและประสิทธิภาพของมัน SP เข้ารหัสคำร ้องขอ SAML เป็นพารามิเตอร์ URL และเปลี่ยนเส้นทางไปที่เบราว์เซอร์ของผู้ใช้ไปยัง IdP เพื่อรับรองตัว นี้เรียกว่าเส้นทางการ SSO ที่เริ่มต้นโดย SP
- การตอบกลับคำยืนยัน: คำยืนยันการตอบกลับ SAML จาก IdP ไปยัง SP มักจะส่งผ่านวิธีการ POST ของ HTTP IdP เข้ารหัสข้อยืนยัน SAML เป็นพารามิเตอร์ในแบบฟอร์มและโพสต์กลับไปที่ SP เพื่อการตรวจสอบ วิธีการนี้ทำให้แน่ใจว่าคำยืนยันถูกส่งโดยปลอดภัยโดยไม่เปิดเผยข้อมูลสำคัญใน URL นอกจากนี้ วิธีการ POST ของ HTTP ยังสามารถจัดการกับขนาดข้อความที่ใหญ่กว่าการเปลี่ยนเส้นทาง HTTP ได้อีกด้วย
การพิจารณาปัจจัยความปลอดภัยในคำยืนยัน SAML
ผู้ออกคำยืนยัน
อย่างที่กล่าวไปแล้ว ผู้ออกคำยืนยันเป็นแอตทริบิวต์หลักในคำยืนยัน SAML ที่ระบุเอนทิตีที่ออกคำยืนยัน ปกติแล้วผู้ออกคำยืนยันจะเป็น IdP ที่ตรวจสอบสิทธิ์ผู้ใช้และสร้างคำยืนยัน ด้วยการรวมแอตทริบิวต์ผู้ออกคำยืนยันในคำยืนยัน SP สามารถตรวจสอบต้นกำเนิดของคำยืนยันและให้แน่ใจว่ามันมาจากแหล่งที่เชื่อถือได้
ลายเซ็น
โหนดลายเซ็นในคำยืนยัน SAML จะมีลายเซ็นดิจิทัลที่สร้างขึ้นโดย IdP เพื่อรับรองความสมบูรณ์และความถูกต้องของคำยืนยัน ลายเซ็นถู กสร้างขึ้นใช้กุญแจส่วนตัวของ IdP และรวมอยู่ในคำยืนยันพร้อมกับใบรับรองกุญแจสาธารณะสำหรับการตรวจสอบโดย SP ด้วยการตรวจสอบความถูกต้องของลายเซ็น SP สามารถยืนยันได้ว่าคำยืนยันไม่ได้ถูกดัดแปลงและมาจาก IdP ที่คาดหวัง
เงื่อนไข
โหนดเงื่อนไขในคำยืนยัน SAML กำหนดข้อจำกัดและข้อห้ามที่มีต่อความถูกต้องและการใช้คำยืนยัน มันรวมถึงเงื่อนไขเช่นระยะเวลาความถูกต้องของคำยืนยัน ข้อจำกัดของกลุ่มผู้ฟัง และข้อจำกัดเชิงบริบทอื่นๆ ที่ SP ต้องปฏิบัติตามเมื่อประมวลผลคำยืนยัน
ประกาศรับรองความถูกต้อง
ข้อความรับรองความถูกต้อง (AuthnStatement) เป็นองค์ประกอบสำคัญของคำยืนยัน SAML ที่ให้ข้อมู ลเกี่ยวกับสถานะและบริบทการรับรองความถูกต้องของผู้ใช้ มันรวมถึงรายละเอียดเช่นวิธีการรับรองความถูกต้องที่ใช้ เวลาที่รับรองความถูกต้อง และข้อมูลบริบทการรับรองความถูกต้องที่เกี่ยวข้องใด ๆ ที่ช่วยให้ SP สามารถตัดสินใจการควบคุมการเข้าถึงที่มีความเข้าใจจากสถานะการรับรองความถูกต้องของผู้ใช้
แอตทริบิวต์ข้อความรับรองความถูกต้อง:
- บริบทการรับรองความถูกต้อง: อธิบายวิธีการและบริบทในการรับรองความถูกต้องของผู้ใช้ เช่น ชื่อใช้และรหัสผ่าน การรับรองความหลากหลาย หรือการลงชื่อเข้าใช้แบบครั้งเดียว แอตทริบิวต์นี้ช่วยให้ SP ประเมินความแข็งแกร่งและความน่าเชื่อถือของกระบวนการรับรองความถูกต้องและกำหนดการควบคุมการเข้าที่เหมาะสม
- ช่วงเวลารับรองความถูกต้อง: ระบุเวลาที่ผู้ใช้ได้รับการรับรองความถูกต้องโดย IdP การประทับเวลานี้มีความสำคัญสำหรับการตรวจสอบความสดของการรับรองความถูกต้องและป้องกันการโจมตีซ้ำหรือการยึดเซสชัน
- เซสชันจะไม่เกินวันเวลา: ระบุเวลาหมดอายุของเซสชันของผู้ใช้ หลังจากนั้นผู้ใช้จะต้องรับรองสิทธิ์อีกครั้งเพื่อเข้าถึงบริการ แอตทริบิวต์นี้ช่วยบังคับใช้นโยบายการจัดการเซสชันและลดความเสี่ยงของการเข้าถึงที่ไม่ได้รับอนุญาต
แนวทางปฏิบัติที่ดีที่สุดสำหรับความปลอดภัยของ SAML
- ใช้วิธีการกำหนดบานที่ปลอดภัย: เลือกวิธีการกำหนดบาน SAML ที่เหมาะสมตามข้อกำหนดด้านความปลอดภัยและลักษณะของช่องทางการสื่อสาร ใช้ HTTP POST สำหรับการส่งข้อมูลที่มีความสำค ัญและ HTTP Redirect สำหรับคำขอที่เรียบง่าย
- ตรวจสอบลายเซ็นคำยืนยัน: ตรวจสอบลายเซ็นดิจิตอลของคำยืนยัน SAML เพื่อรับรองความสมบูรณ์และความถูกต้องของมัน ใช้ใบรับรองกุญแจสาธารณะของ IdP เพื่อตรวจสอบลายเซ็นและตรวจจับความพยายามในการดัดแปลง
- บังคับใช้ข้อจำกัดของกลุ่มผู้ฟัง: รวมข้อจำกัดของกลุ่มผู้ฟังในคำยืนยัน SAML เพื่อจำกัดขอบเขตของคำยืนยันให้เฉพาะ SP ที่ตั้งใจไว้ การป้องกันนี้ช่วยป้องกันการโจมตีการใช้งานคำยืนยันซ้ำและการเข้าถึงที่ไม่ได้รับอนุญาตจากผู้ให้บริการคนอื่น
- ปกป้องการแลกเปลี่ยนเมทาดาทา: ป้องกันการแลกเปลี่ยนเมทาดาทาของ SP และ IdP เพื่อป้องกันการดัดแปลงเมทาดาทาและการโจมตีการปลอมแปลง ใช้ช่องทางและกลไกที่ปลอดภัยในการแชร์เมทาดาทาอย่างปลอดภัย
- ใช้การจัดการสถานะรีเลย์ที่ปลอดภัย: ใช้ค่าของสถานะรีเลย์ที่มีความเป็นเอกลักษณ์และไม่สามารถคาดเดาได้เพื่อป้องกันการโจมตี CSRF ระหว่างการตรวจสอบสิทธิ์ SAML ตรวจสอบความสมบูรณ์และความถูกต้อง
- บังคับใช้นโยบายการจัดการเซสชัน: กำหนดนโยบายการหมดอายุของเซสชันและบังคับใช้ระยะเวลาหมดเซสชันเพื่อลดความเสี่ยงของการยึดเซสชันและการเข้าถึงที่ไม่ได้รับอนุญาต ใช้แอตทริบิวต์ที่เกี่ยวข้องกับเซสชันในคำยืนยัน SAML เพื่อจัดการเซสชันผู้ใช้อย่างปลอดภัย
- เข้ารหัสแอตทริบิวต์ที่มีความสำคัญ: เข้ารหัสแอตทริบิวต์ที่ควรจำเป็นในคำยืนยัน SAML เพื่อปกป้องความเป็นส่วนตัวและความลับของข้อมูลผู้ใช้ ใช้อัลกอริทึมการเข้ารหัสที่ปลอดภัยและแนวทางการจัดการกุญแจที่ปลอดภัยเพื่อปกป้องข้อมูลที่มีความสำคัญ