SAML (Security Assertion Markup Language) ช่วยให้เข้าถึงแอปพลิเคชันหลายรายการได้อย่างปลอดภัยและราบรื่นโดยการแลกเปลี่ยนข้อมูลการตรวจสอบสิทธิ์ระหว่าง Identity Provider (IdP) และ Service Provider (SP)
สิ่งนี้ช่วยให้ผู้ใช้สามารถเข้าสู่ระบบเพียงครั้งเดียวและเข้าถึงบริการต่างๆ ได้โดยไม่ต้องป้อนข้อมูลประจำตัวซ้ำ ซึ่งช่วยเพิ่มความปลอดภัยและประสบการณ์การใช้งานของผู้ใช้ในสภาพแวดล้อมขององค์กร ในโพสต์นี้ เราจะสำรวจวิธีการทำงานของ SAML และประโยชน์ของ SAML
SAML (Security Assertion Markup Language) คืออะไร
การตรวจสอบสิทธิ์ SAML (Security Assertion Markup Language) ช่วยให้เข้าถึงบริการได้อย่างปลอดภัยโดยการแลกเปลี่ยนข้อมูลการตรวจสอบสิทธิ์และการอนุญาตระหว่าง Identity Provider (IdP) และ Service Provider (SP) โปรโตคอลนี้มักใช้ในสภาพแวดล้อมขององค์กรเพื่อให้ผู้ใช้สามารถเข้าถึงแอปพลิเคชันหลายรายการได้อย่างราบรื่นโดยใช้ชุดข้อมูลประจำตัวชุดเดียว
ส่วนประกอบของ SAML
นี่คือส่วนประกอบและแนวคิดหลักของ SAML:
- Identity Provider (IdP): นี่คือเอนทิตีที่ตรวจสอบสิทธิ์ผู้ใช้และให้การยืนยันแก่ผู้ให้บริการ การยืนยันประกอบด้วยข้อมูลเกี่ยวกับตัวตนและแอตทริบิวต์ของผู้ใช้
- Service Provider (SP): นี่คือเอนทิตีที่ได้รับการยืนยัน SAML และทำการตัดสินใจควบคุมการเข้าถึงตามนั้น ผู้ให้บริการไว้วางใจ Identity Provider ในการตรวจสอบสิทธิ์ผู้ใช้
- SAML Assertion: นี่คือเอกสาร XML ที่ Identity Provider ส่งไปยังผู้ให้บริการ ประกอบด้วยข้อมูลการตรวจสอบสิทธิ์ ข้อมูลแอตทริบิวต์ และการตัดสินใจเกี่ยวกับการอนุญาต
- Single Sign-On (SSO): SAML มักใช้เพื่อใช้ SSO ทำให้ผู้ใช้สามารถตรวจสอบสิทธิ์ได้ครั้งเดียวด้วย Identity Provider และเข้าถึงผู้ให้บริการหลายรายได้โดยไม่ต้องตรวจสอบสิทธิ์ซ้ำ
- Bindings: SAML รองรับการผูกหลายรายการสำหรับการขนส่งข้อความ รวมถึง HTTP Redirect, HTTP POST และ SOAP
- XML-Based Protocol: SAML ใช้ XML ในการเข้ารหัสข้อความที่แลกเปลี่ยนระหว่าง Identity Provider และ Service Provider
SAML 2.0
เมื่อสร้างจากแนวคิดของ SAML มาเจาะลึก SAML 2.0 ซึ่งเป็นเวอร์ชันมาตรฐานที่ใช้กันอย่างแพร่หลายที่สุด SAML 2.0 ได้แนะนำการปรับปรุงและคุณสมบัติหลายอย่างเหนือกว่ารุ่นก่อน SAML 1.1:
- Enhanced Single Sign-On (SSO): SAML 2.0 ปรับปรุงความสามารถของ SSO ทำให้ง่ายต่อการใช้งานและแข็งแกร่งขึ้นในแง่ของความปลอดภัยและประสบการณ์การใช้งานของผู้ใช้
- Identity Federation: ช่วยให้สามารถรวม Identity Federation ได้อย่างราบรื่นยิ่งขึ้นระหว่างโดเมนต่างๆ ทำให้ผู้ใช้สามารถเข้าถึงทรัพยากรในองค์กรต่างๆ ได้ด้วยกระบวนการตรวจสอบสิทธิ์เพียงครั้งเดียว
- Support for Multiple Authentication Contexts: SAML 2.0 สามารถจัดการระดับการรับรองความถูกต้องที่แตกต่างกันได้ ทำให้สามารถใช้วิธีการตรวจสอบสิทธิ์ที่แข็งแกร่งขึ้นได้ตามต้องการ
- Metadata Exchange: เวอร์ชันนี้รองรับการแลกเปลี่ยนเมตาเดตาระหว่าง Identity Provider และ Service Provider ซึ่งช่วยในการกำหนดค่าและสร้างความสัมพันธ์ที่เชื่อถือได้โดยอัตโนมัติ
- Improved Protocol Bindings: SAML 2.0 มีการสนับสนุนที่ดีขึ้นสำหรับโปรโตคอลการขนส่งต่างๆ เช่น HTTP Redirect, HTTP POST และ Artifact Binding ซึ่งช่วยเพิ่มความยืดหยุ่นและความเข้ากันได้
- Attribute Query and Consent: SAML 2.0 ช่วยให้สามารถสอบถามแอตทริบิวต์ของผู้ใช้และจัดการความยินยอมของผู้ใช้ได้อย่างมีประสิทธิภาพมากขึ้น ซึ่งช่วยปรับปรุงการควบคุมข้อมูลส่วนบุคคลของผู้ใช้
SAML Authentication ทำงานอย่างไร
กระบวนการตรวจสอบสิทธิ์
การตรวจสอบสิทธิ์ SAML เริ่มต้นเมื่อผู้ใช้เริ่มกระบวนการเข้าสู่ระบบโดยป้อนข้อมูลประจำตัวที่ IdP IdP จะตรวจสอบตัวตนของผู้ใช้และสร้างการยืนยัน SAML ซึ่งประกอบด้วยแอตทริบิวต์ของผู้ใช้และข้อมูลการตรวจสอบสิทธิ์
การยืนยันนี้รวมถึงรายละเอียดต่างๆ เช่น ตัวตนของผู้ใช้ เวลาในการตรวจสอบสิทธิ์ และเงื่อนไขที่การยืนยันมีผลบังคับใช้ เพื่อให้มั่นใจในความสมบูรณ์และความถูกต้องของข้อมูล การยืนยันจะถูกลงนามแบบดิจิทัลโดย IdP
การเข้าถึงบริการ
เมื่อตรวจสอบสิทธิ์แล้ว ผู้ใช้จะพยายามเข้าถึงบริการที่ SP มอบให้ SP ที่ต้องการตรวจสอบตัวตนของผู้ใช้ จะเปลี่ยนเส้นทางผู้ใช้ไปยัง IdP พร้อมกับคำขอตรวจสอบสิทธิ์ IdP ตอบสนองโดยการส่งการยืนยัน SAML ไปยัง SP โดยทั่วไปผ่านเบราว์เซอร์ของผู้ใช้โดยใช้ HTTP POST หรือ HTTP Redirect
จากนั้น SP จะตรวจสอบความถูกต้องของการยืนยัน SAML โดยการตรวจสอบลายเซ็นดิจิทัลและเงื่อนไขของการยืนยัน หากการยืนยันถูกต้อง SP จะให้สิทธิ์ผู้ใช้ในการเข้าถึงบริการที่ร้องขอ กระบวนการนี้ราบรื่นสำหรับผู้ใช้ ซึ่งจำเป็นต้องเข้าสู่ระบบเพียงครั้งเดียวเพื่อเข้าถึงบริการหลายรายการ
สถานการณ์ตัวอย่าง
พิจารณาสถานการณ์องค์กรทั่วไป ในช่วงเริ่มต้นวันทำงาน John จะเข้าสู่ระบบระบบ Identity and Access Management (IAM) ของบริษัท ซึ่งทำหน้าที่เป็น IdP โดยใช้ข้อมูลประจำตัวของบริษัท
IdP จะตรวจสอบข้อมูลประจำตัวของ John และสร้างการยืนยัน SAML ซึ่งรวมถึงข้อมูลต่างๆ เช่น ชื่อผู้ใช้ของ John, การประทับเวลาการตรวจสอบสิทธิ์ และแอตทริบิวต์การเข้าถึงตามบทบาท จากนั้น John พยายามเข้าถึงบริการอีเมลที่โฮสต์ของบริษัท ซึ่งเป็น SP
บริการอีเมลจะเปลี่ยนเส้นทาง John ไปยัง IdP พร้อมกับคำขอตรวจสอบสิทธิ์ IdP จะส่งการยืนยัน SAML กลับไปยังบริการอีเมลผ่านเบราว์เซอร์ของ John บริการอีเมลจะตรวจสอบความถูกต้องของการยืนยันโดยการตรวจสอบลายเซ็นดิจิทัลและตรวจสอบให้แน่ใจว่าตรงตามเงื่อนไขทั้งหมด เช่น การยืนยันมีไว้สำหรับบริการอีเมลและไม่หมดอายุ
เมื่อตรวจสอบความถูกต้องแล้ว John จะได้รับสิทธิ์เข้าถึงบริการอีเมลโดยไม่จำเป็นต้องป้อนข้อมูลประจำตัวซ้ำ ทำให้เขาใช้บริการได้อย่างราบรื่น
ประโยชน์ของการตรวจสอบสิทธิ์ SAML
ด้วยการรวมการตรวจสอบสิทธิ์ SAML องค์กรต่างๆ สามารถปรับปรุงการจัดการการเข้าถึงของผู้ใช้ เพิ่มความปลอดภัยโดยลดความเสี่ยงของการลืมรหัสผ่านและการนำกลับมาใช้ใหม่ และมอบการเข้าถึงแอปพลิเคชันหลายรายการได้อย่างราบรื่นให้กับผู้ใช้ การรวมนี้ช่วยปรับปรุงทั้งประสิทธิภาพการดำเนินงานและสถานะความปลอดภัย
SAML Assertion คืออะไร
SAML Assertion คือ เอกสาร XML ที่ออกโดย SAML Identity Provider (IdP) และใช้โดย Service Provider (SP) ประกอบด้วยคำสั่งเกี่ยวกับผู้ใช้ที่ทั้งสองฝ่ายสามารถไว้วางใจได้
วัตถุประสงค์หลักของ SAML Assertion คือการส่งข้อมูลความปลอดภัยระหว่าง IdP และ SP ในลักษณะที่ปลอดภัยและได้มาตรฐาน นี่คือส่วนประกอบหลักและประเภทของคำสั่งที่พบภายใน SAML Assertion:
ส่วนประกอบหลัก
- Issuer: เอนทิตีที่ออกการยืนยัน โดยทั่วไปคือ IdP
- Subject: ผู้ใช้หรือเอนทิตีที่เกี่ยวข้องกับการยืนยัน โดยปกติจะรวมถึงตัวระบุเฉพาะสำหรับผู้ใช้
- Conditions: ข้อจำกัดและกฎเกณฑ์ที่การยืนยันมีผลบังคับใช้ รวมถึงข้อจำกัดด้านเวลาและข้อจำกัดด้านผู้ชม
- Authentication Statement: ข้อมูลเกี่ยวกับการตรวจสอบสิทธิ์ของผู้ใช้ที่ IdP เช่น วิธีการตรวจสอบสิทธิ์และการประทับเวลา
- Attribute Statement: ชุดของแอตทริบิวต์เกี่ยวกับผู้ใช้ เช่น ชื่อ ที่อยู่อีเมล บทบาท ฯลฯ
- Authorization Decision Statement: ข้อมูลเกี่ยวกับการเข้าถึงทรัพยากรเฉพาะของผู้ใช้
ประเภทของคำสั่ง
- Authentication Statement: อธิบายการกระทำของการตรวจสอบสิทธิ์ที่ IdP รวมถึงวิธีการที่ใช้และเวลาในการตรวจสอบสิทธิ์
- Attribute Statement: ประกอบด้วยแอตทริบิวต์ที่เกี่ยวข้องกับหัวเรื่อง ตัวอย่างเช่น ที่อยู่อีเมลของผู้ใช้ บทบาท หรือข้อมูลอื่นๆ ที่เกี่ยวข้อง
- Authorization Decision Statement: ให้ข้อมูลเกี่ยวกับว่าผู้ใช้ได้รับอนุญาตให้เข้าถึงทรัพยากรเฉพาะหรือไม่ ซึ่งรวมถึงการตัดสินใจ (อนุญาตหรือปฏิเสธ) และทรัพยากรที่เป็นปัญหา
SAML Assertion ทำงานอย่างไร
- User Requests Access: ผู้ใช้พยายามเข้าถึงทรัพยากรที่ SP
- SP Requests Authentication: SP เปลี่ยนเส้นทางผู้ใช้ไปยัง IdP เพื่อตรวจสอบสิทธิ์
- User Authenticates: ผู้ใช้ให้ข้อมูลประจำตัวแก่ IdP
- IdP Issues Assertion: เมื่อตรวจสอบสิทธิ์สำเร็จ IdP จะสร้าง SAML Assertion และส่งกลับไปยัง SP โดยทั่วไปผ่านเบราว์เซอร์ของผู้ใช้
- SP Validates Assertion: SP จะตรวจสอบความถูกต้องของการยืนยัน โดยตรวจสอบความสมบูรณ์ ความถูกต้องของผู้ออก และเงื่อนไข
- Access Granted: หากการยืนยันถูกต้อง ผู้ใช้จะได้รับสิทธิ์เข้าถึงทรัพยากร
ข้อควรพิจารณาด้านความปลอดภัย
- Encryption: SAML Assertions สามารถเข้ารหัสเพื่อรับรองความลับ
- Signing: การยืนยันมักจะถูกลงนามเพื่อรับประกันความสมบูรณ์และความถูกต้อง
- Expiration: การยืนยันรวมถึงเงื่อนไข เช่น ข้อจำกัดด้านเวลา เพื่อลดความเสี่ยงของการโจมตีซ้ำ