오늘은 정보보안기사에서 "정보 보안 및 법규 일반" 에 해당하는 SAML에 대하여 알아봅시다.
우선 SAML이 무슨 약자인지 알아야겠죠?
SAML이란
- Security Assertion Markup Language
- 네트워크 통신을 거쳐 다수의 컴퓨터에서 보안 인증, 권한 부여 등의 자격 증명을 공유할 수 있도록 한 XML 기반의 표준
- 한 대의 컴퓨터가 다른 컴퓨터를 대신하여 보안 검사를 수행한다.
- 즉 SSO(Single Sign-On)을 가능토록 한다.
SAML은 보안 인증을 위한 프로토콜입니다.
SAML 프로토콜에서는 아래와 같은 공급자가 존재합니다.
공급자란 사용자가 원하는 서비스를 이용할 수 있도록 도와주는 역할을 합니다.
일반적으로 네이버 사이트를 들어가고 싶으면 네이버 웹 서버가 필요하겠죠?
이렇듯 이러한 네이버 웹 서버는 사용자에게 서비스 공급자가 될 수 있습니다.
SAML 공급자
- IDP(Identity Provider)
- 인증수행
- 권한부여
- SP(Service Provider)
- 일반적인 서버
SP는 우리가 평소에 알고 있는 그러한 서버들이 맞습니다.
하지만 IDP는 처음 들어보는 경우가 많습니다.
IDP는 인증을 수행하는 주체입니다. 즉, 네이버에 회원가입을 하고 로그인을 하는 경우라면 A 사용자가 실제로 네이버에 회원가입
을 한 사용자인지? 대신 검사해주고 권한을 부여해주는 공급자를 말합니다.
그렇다면 실제 SAML 프로토콜을 통해 어떻게 인증이 이루어질까요? 한번 살펴봅시다.
우선 SAML 어설션에 대하여 알아봅니다.
SAML Assertion
- 인증을 위한 정보가 담긴 XML 문서
- IDP가 사용자를 인증한 내용을 SAML 어설션에 추가하고, 이 XML문서를 사용자는 SP에게 전송하여 서비스를 이용한다.
이렇듯 사용자는 IDP에게 인증받은 후 SAML 어설션 XML문서를 받습니다.
그리고 이 문서를 통해 서비스를 이용하죠.
아래는 인터넷에 공개되어 있는 SAML 프로토콜의 예제입니다.
SAML 프로토콜 예제
출처: Credit: Tom Scavo (CC BY-SA 3.0)
간단히 프로토콜 과정을 요약하면 아래와 같습니다.
1. 사용자는 SP에게 서비스 이용을 요청합니다.
2. SP는 인증된 사용자가 아닐 경우 IDP에게 인증을 받으라고 Redirect 메시지를 사용자에게 전달합니다.
3. 사용자는 IDP에게 인증을 받고 SAML 어설션을 받습니다.
4. 이제 사용자는 SAML 어설션을 SP에게 전송합니다.
5. SP는 인증된 사용자임을 인식하고 서비스를 제공합니다.
이처럼 SAML을 SSO를 구현한 XML 프로토콜이란 것을 알게되었습니다.