새소식

short terms

통합 인증, Single Sign-On (SSO)

  • -

배경(필요성)

  • 여러 개의 사이트를 운영하는 대기업/인터넷 관련 기업이, 각각의 회원을 통합 관리할 필요성에 따라 개발 - [2]
    • 1997년도, IBM이 최초
    • (국내) 2000년도, 코리아닷컴이 최초
  • 통계적 배경 - [4]
    • 기업에서 사용하는 클라우드 서비스가 평균 1427개 이상, 직원들은 일평균 36개의 서비스를 이용
    • 글로벌 지식 근로자의 79%가 원격근무 근로자 (지속 성장세)
    • 비즈니스 네트워크의 유형이 다양화 추세 (직원, 파트너, 협력 업체, 공급망, 방문자, 배포채널 등)
    • 비즈니스 네트워크 구성원이 사용하는 디바이스의 다양화 추세 (모바일, 커넥티드 스마트 디바이스, BYOD (Bring Your Own Device) 등)
  • 종합적으로, 더 많은 서비스가 등장하고, 더 많은 근로자가 온라인으로 활동하며, 더 다양한 디바이스로 사용하기에 Sign on 과정이 복잡하고 과다해진 배경

 

의미

  • 한 번의 인증 과정으로 여러 자원을 이용 가능하게 하는 인증(Authentication) 기능 - [1]
  • 한 번의 로그인으로 여러 개의 서비스를 이용할 수 있게 해주는 시스템 - [2]
  • 한 번의 로그인으로 여러 허용된 자원에 접근할 수 있도록 하는 기술 - [6]
    • 주로 기업에서 그룹웨어, ERP, CRM 등 여러 업무 시스템에 대해 한 번에 로그인하기 위해 사용
  • 여러 Application의 login 화면을 하나로 결합하는 기술 - [9]

 

예시

  • 어느 컴퓨터에 로그인 후, 그룹 웨어, 서버 프로그램 등 각종 응용 프로그램들에 각각 추가적으로 로그인이 필요한 상황 - [1]
    • 통합 인증을 사용한다면, 사용자는 하나의 아이디와 비밀번호만 관리하면 된다.
    • 통합 인증이 없다면, 사용자는 여러 개의 아이디와 비밀번호를 관리해야 한다.

장점

  • 다른 아이디와 암호 조합으로 인한 Password Exhaustion 경감 - [1]
    • Password Exhausion : 여러 가지 ID/PW를 기억해야 하는 상황에서, 동일한 ID/PW를 사용할 확률이 높고, 보안 위험으로 이어짐 - [9]
    • SSO를 통하면 하나의 ID/PW만 기억하면 되기 때문에, 하나의 PW를 강력하게 생성할 수 있음
  • 같은 아이디마다 암호를 다시 입력하는 시간 절약 - [1]
  • 암호를 답하는 Help desk 비용 감소 - [1]
    • 암호를 잃어버렸거나, 디바이스나 애플리케이션이 잠긴 사용자들이 Help desk에 도움을 요청하는 상황 - [4]
  • 암호 복구에 낭비되는 시간 감소 - [9]
  • 중앙 관리를 통한 업무 단순화 및 표준화 실현, 중앙 집중적인 사용자 관리를 통한 보안 기능 강화 - [3]
  • 생산성 : OS, Network, Database 등 환경에 구애받지 않고 접속 가능 - [7]
  • 보안성 : Logic 정보가 Cache되거나, User PC에 저장되지 않음 - [7]
  • 확장성 : Application에 관계없이 Login이 필요한 곳에 확장 - [7]

 

SSO Login

  • SSO Service에 user가 login하면, Token을 발급 - [9]
  • Token을 Application에 전달하여 login 진행 - [9]
  • Token이 정확한지 확인하기 위한 통신 표준 - [9]
    • SAML (Security Assertion Markup Language)
  •  

구성요소

  • 사용자 통합 로그인
  • 인증 서버 (Authentication Server)
  • 통합 에이전트
  • LDAP (Lightweight Directory Access Protocol)

 

기술요소

인증

  • PKI (Public Key Infrastructure)
    • 비대칭키(공개키, 비밀키) 기반의 인증 및 암호화 - [7]
  • 생체 인식
    • 생체의 유일한 특징을 추출하여 인증 수행 - [7]
  • OTP (One Time Password)
    • 로그인마다 Session에서 1회성 Password를 생성 - [7]

관리

  • Lightweight Directory Access Protocol (LDAP)
    • X.500을 기반으로 Directory Database에 접속하기 위한 통신 protocol - [7]
  • 쿠키 (Cookie)

 

암호화 통신

  • SSL (Secure Socket Layer)
  • IPSec (IP Security-protocol)
    • 인터넷상으로 가상 전용회선을 구축하여 데이터를 도청하는 등의 불법 행위를 방지하기 위한 통신 protocol - [7]

 

구축 유형

인증 대행(위임) 모델 (Delegation)

  • SSO Agent가 인증을 대행하는 방식 - [6]
  • 시스템 접근 시, 통합 Agent를 통해 Authentication 및 각 서비스에 접근
  • User의 인증 정보를 SSO Agent가 관리하며, 로그인을 대신 수행 - [6]
    • 웹기반 SSO의 경우, 저장해둔 ID/PW을 POST로 전달하여 로그인 (또는 token을 GET방식으로 전달)
  • 대상 애플리케이션의 인증 방식을 변경하기 어려울 경우

인증 정보 전달(전파) 모델 (Propagation)

  • 미리 인증된 토큰(Cookie 기능 이용)을 받아, 각 시스템 접근 시 자동으로 전달
    • 인증 서비스에서 User가 직접 Authentication 후 Token을 받고, 해당 Token으로 각 서비스에 접근
  • 웹 기반의 시스템에 주로 사용
    • Cookie를 통해 Token 저장 (유의사항 2)
  • 인증 token의 유효성만 검사, Cookie를 활용하여 인증 - [7]
  • 해당 모델의 SSO를 구현하기 위한 기반 protocol : Kerberos (커버로스)

** 대상 애플리케이션에 따라 Delegation과 Propagation을 혼용하는 경우도 있음

 

유의사항

  1. 보안이 필요한 환경에서 SSO를 도입하는 경우, SSO point (최초 로그인 지점)에 대한 접근 보안의 중요성 증가 - [1]
    1. 대책 (보안 강화) 예시 : 1회용 비밀번호, 이중 인증 등
    2. Single Point of Failure의 위험이 있음 - [6]
  2. Cookie 기반 SSO 구현 시, Cookie의 보안 - [3, 8]
    1. Token 암호화 - 데이터 기밀성 (Data Confidentiality)
      1. 주요 알고리즘 (AES, SEED)
      2. 128bit 이상 Key
    2. 데이터 무결성 (Data Integrity)
      1. Token에 MAC 등을 포함
    3. Replay Attack Protection : Token을 네트워크에서 은닉 (노출 X)
      1. 사용자 주소 제한
      2. 유효 시간 제한
  3. Session Pool - [5]
    1. SSO server에서 대규모 사용자를 지원할 때, session 정보를 분산 저장하는 방법
      1. Redis Session Clustering 등
  4. 동시 로그인/로그아웃 - [5]
    • Site A와 Site B를 사용하고, Site A에서 로그인하여 Token을 발행, Site B에 해당 Token으로 로그인하여 Session 시작
      • 해당 경우, Site A와 Site B의 Session 만료 시간이 다를 수 있음
      • Site A에서 로그아웃된 경우, Site B에서는 여전히 로그인으로 남아있는 비일관성 문제 발생
    • 일반적인 SSO Solution의 해결법
      • Http 기반 : Page가 열릴 때마다 Token 확인 요청
      • Agent 기반 : Backend Scheduler를 구현하여, Token 유효성 검사를 주기적으로 판단하는 Web-server Agent 설치

 

동의어

  • 단일 계정 로그인, 단일 인증 - [1]

 


Reference

  1. 위키백과 "통합 인증", https://ko.wikipedia.org/wiki/%ED%86%B5%ED%95%A9_%EC%9D%B8%EC%A6%9D
  2. 두산세계대백과사전, https://www.doopedia.co.kr/doopedia/master/master.do?_method=view&MAS_IDX=101013000876927
  3. 토마의 개발노트, https://toma0912.tistory.com/75
  4. Akamai 사용 사례 : 모든 애플리케이션에 SSO 구현하기 (2018/04 발행), https://www.akamai.com/kr/ko/multimedia/documents/brochure/use-case-enabling-single-sign-on-across-all-application-types.pdf
  5. Megazone SSO 기술블로그, https://megazonedsg.github.io/sso-integration/
  6. IT Wiki "SSO", https://itwiki.kr/w/SSO
  7. 보안을 읽어주는 횽 blog (정보보안 119, KISA&KPC IT 전문강사 및 과기부 사이버보안 전문단), https://m.blog.naver.com/security_reader/221838899196
  8. Just Do IT blog, https://blog.naver.com/PostView.nhn?blogId=xcripts&logNo=70121445000&categoryNo=177&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=&from=postList&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=1
  9. Cloudflare, https://www.cloudflare.com/ko-kr/learning/access-management/what-is-sso/
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.