[Keycloak] Keycloak 도입기_SSO 솔루션 비교, 키클락 선택 이유(feat. OKTA, CAS, GLUU SERVER)

cielo ru·2024년 6월 3일
0

Keycloak

목록 보기
2/6

➰ 서론

Keycloak 외에도 마이크로서비스 아키텍쳐 환경에서 적합한 다양한 SSO(Single Sign-On) 솔루션이 있다.

다양한 SSO 솔루션을 비교하며 Keycloak을 선택한 이유를 알아보자.


➰ 글로벌 상용 SSO 솔루션

SSO 를 제공하는 다양한 글로벌 SSO 솔루션들이 있다.

각각의 솔루션은 독특한 기능과 이점을 제공하며, 조직의 요구 사항에 따라 적합한 솔루션이 다를 수 있다. 따라서 자신의 환경에 적합한 SSO 솔루션을 선택해야 한다.

➰ 오픈소스 SSO 솔루션 비교

프로젝트에 적용할 수 있도록 오픈소스로 제공되며, 마이크로서비스 아키텍쳐 환경에서 적합한 SSO 솔루션을 비교해보자.

그 중에서 가장 많이 사용하는 Gluu Server, CAS, Keycloak, OKTA 에 대해 알아보려 한다.


➰ CAS (Central Authentication Service)

1) 개발 언어 : JAVA

2) Github star: 9.8K

3) 원리
: 쿠키를 기반으로 하기 때문에 같은 도메인명 사이에서만 SSO가 가능

4) 기능
: SSO, MFA, 다양한 프로토콜 지원(SAML, OAuth, OpenID Connect)

5) 장점

  • 오픈 소스로 무료로 사용할 수 있으며, 커스터마이징이 가능

  • SSO 솔루션 중 오래된 역사를 가지고 있어 신뢰성 있고 널리 사용됨

  • 플랫폼 독립적이고 프록시 기능 지원

  • 같은 도메인명 사이에서만 SSO 가 가능하기 때문에 구현이 쉬움

  • Spring Security는 CAS를 완벽하게 지원

  • Spring Security를 사용하여 단일 애플리케이션에서의 보안 설정을 시작한 후, 조직 내 여러 애플리케이션에서 중앙 인증을 제공하는 CAS 서버로 쉽게 마이그레이션할 수 있음

6) 단점

  • 크로스 도메인 지원x
    : CAS는 특정 도메인에만 적용되는 쿠키를 통해 세션을 관리하기 때문에 여러 도메인 간에 인증 정보를 공유할 때 보안 문제를 발생시킴

  • CAS는 사용자 인증 후 토큰을 서비스에 전달하는데, URL에 토큰을 달고 다니거나, HTML에 Hidden Field로 서버에서 생성하여 전달해주는 경우 사용자에게 쉽게 노출되어 보안상 위협 요인이 됨.

  • 설정과 유지 보수가 복잡할 수 있음

  • 관리 콘솔이 상대적으로 덜 직관적임

  • CAS는 전통적인 온프레미스 환경에서 주로 사용되며, 최신 클라우드 네이티브 환경이나 컨테이너화된 배포에 적합하지 않음

7) Keycloak vs CAS
Keycloak은 다양한 인증 및 인가 기능을 제공하며, LDAP, Active Directory, SAML, OAuth, OpenID Connect 등 다양한 표준과 시스템과의 통합을 지원하는 반면 CAS는 주로 웹 기반의 SSO를 제공하며, 보다 전통적인 방식으로 인증 및 권한 부여를 다룬다.


➰ GLUU SERVER

1) 개발 언어 : JAVA, Python, JavaScript

2) Github star: 185

3) 기능
: SSO, 사용자 인증, MFA, LDAP/Active Directory 통합, 인증 서버 및 IAM 기능

4) 장점

  • 오픈 소스로 무료로 사용할 수 있으며, 커스터마이징이 가능

  • 장기적으로 데이터 보안을 강화하고 비용을 절감할 수 있는 유연한 액세스 관리 제공

  • 다양한 프로토콜(SAML, OpenID Connect, OAuth 2.0) 지원 및 복잡한 인증 시나리오 지원하고 웹 및 모바일 애플리케이션 모드에 대한 보안 싱글 사인온을 제공

  • 중요한 애플리케이션의 보안을 강화하기 위해 수많은 2단계 인증 메커니즘을 지원(이중 인증)

  • privacyIDEA에 매우 쉽게 연결할 수 있는 인증 흐름이 있음

  • Gluu 오픈 소스 ID 및 액세스 관리를 통해 기존 Active Directory 또는 LDAP 디렉토리 서비스를 연결할 수 있음

5) 단점

  • Gluu Server는 강력한 기능을 제공하지만 구성 및 관리가 복잡

  • 메모리와 CPU를 많이 사용하며, 대규모 환경에서는 추가적인 하드웨어 자원이 필요

  • 설정과 운영에 대한 학습이 필요

6) Keycloak vs Gluu Server

Keycloak 시스템에는 512Mb의 RAM과 1GB의 디스크 공간이 필요한 반면 Gluu 시스템에는 8GB의 RAM과 40GB의 디스크 공간이 필요하다.


➰ Okta

1) 개발 언어 : JAVA, JavaScript

2) Github star: 5000

3) 기능
: SSO, 사용자 인증, MFA, 사용자 및 그룹 관리, 애플리케이션 통합, API 보안

4) 특징

  • 클라우드 기반 사용자 계정관리 서비스

    • 구축형이 아닌 saas 기반 서비스

    • 클라우드 기반으로 제공되지만 기업에서 사용하는 온프레미스 환경의 전통 애플리케이션까지 모두 지원

    • 7000개 이상 앱 연동이 되어 있음

  • SSO(Single-sign-on)

    • 높은 가용성과 무중단 운영을 보장하는 아키텍쳐로 항상 믿을 수 있는 접속을 보장

    • 서비스 인프라에 대한 세계 최고 수준의 보안 감사 및 보안 통제

    • 실시간 수요 변화에 문제없이 대응하는 높은 확장성

    • 사전에 옥타가 연동해놓은 7000여개의 앱이 있어 사용자를 생성하고 소속 그룹과 역할에 맞게 앱을 할당하는 작업이 자동으로 이루어짐

  • Access Gateway

    • 온 프레미스 앱을 최소한의 변경으로 Okta에 연결

    • Okta의 SSO 와 적응형 MFA를 온 프레미스 앱에 코드 변경 없이 적용

    • 레거시 아이덴티티 제품의 구축 및 운영 비용, 복잡한 관리 벤터 리크에서 해방

  • Universal Directory

    • 모든 사용자, 그룹, 장비를 한 곳에서 관리

    • 자체 스토어를 통해 계정을 관리할 수 있음

    • 사용자별로 접속 권한을 부여할 수 있게 프로필 정보를 보아서 관리

  • Multi-factor authentication

    • 패스워드 외에 추가 인증요소를 등록해 패스워드 탈취 시에서 시스템 접근을 차단할 수 있는 기능

    • 사용자가 어떠한 위치에서 어떠한 맥락에서 접속하는지에 따라 접근을 차단 또는 허용하거나 추가 패스워드리스 팩터로 인증을 할지 상황에 따라 유연하게 조합 가능

  • Lifecycle Management

    : 신규직원 입사 또는 부서 이동 시 손쉬운 권한 반영, 원클릭 입사자/퇴사자 계정 관리 기능

5) 장점

  • 유저 관리 자동화
    : 사용자 인증과 계정관리 서비스를 적응형에서 자동화된 방식으로 편하게 구현하고 관리할 수있음
  • 사용자 정보 통합 관리
    : 사용자 계정 관리 작업량 감소
  • 아이디 / 패스워드 발급 또는 무효화 외에 앱 접근에 대한 중앙 통제 또는 체계적인 정책 수립이 쉬워짐
  • 보안 가시성 증가
    : 누가 어떤 앱에 언제 어떻게 로그인하는지에 대해 개별 앱에서 각각 확인할 필요가 없음

6) 단점

  • 상용 제품으로 용량에 따라 비용이 발생하고 무료 옵션이 제한적

  • 오픈 소스 솔루션에 비해 커스터마이징 제한


➰ KEYCLOAK

1) 개발 언어 : JAVA

2) Github star: 14.2K

3) 기능
: 사용자 관리, 소셜 로그인, 다중 요소 인증, OAuth 및 OpenID Connect 등 다양한 프로토콜을 지원

4) 장점

  • 오픈 소스로 무료로 사용할 수 있으며, 소스 코드를 수정하고 커스터마이징 가능

  • 멀티팩터인증을 지원

  • 설치 용이

  • SAML, OIDC, OAUTH2 표준 프로토콜을 지원

  • 소셜로그인의 인증 위임이나 OTP 인증을 지원

5) 단점

  • 유지 보수와 운영 관리가 필요함

  • 초기 설정과 사용법 학습에 시간이 필요할 수 있음


➿ 비교 요약


➰ 우리가 Keycloak 을 사용한 이유

  1. 오픈소스이다.

    : 기존의 외부 솔루션(OKTA)은 비용이 발생해 비용 지불 없이 사용할 수 있는 오픈소스를 선택했다.

  2. 다양한 인증 연동 방식을 지원한다.

    : 내부에 있는 전체 서비스들이 연동이 가능하도록 하기를 원했다.

  3. 자바 개발자가 많다.

    : 자바 개발자가 많기 때문에 C# 으로 개발된 Identity Server는 개발하는데 불리하다고 판단해 배제했다.

  4. 대중적인 서비스이다.

    : 오픈소스이기 때문에 사람들이 많이 사용하고 관심이 많아야 이슈 보고를 많이 하고, 이슈 처리도 빠를 것이라고 판단했다.
    따라서 Github Star를 기준(20.7K)으로 가장 대중적인 SSO인 keycloak을 선택했다.

  5. 키클락은 클라우드 네이티브 컴퓨팅 재단(CNCF)에서 인큐베이팅 레벨로 합류한 기술이다.

  • 클라우드 네이티브 생태계의 중요한 역할
    : CNCF의 지원과 인프라를 받아 키클락은 클라우드 네이티브 생태계에서 더욱 중요한 역할을 할 것으로 예상되어 선택했다.

  • 안정성과 신뢰성의 확보
    : CNCF의 인큐베이팅 레벨로 선정된 키클락은 안정성과 신뢰성이 검증되었습니다. 이를 통해 안정적이고 신뢰할 만한 인증 및 인가 서비스를 구축할 수 있다는 확신을 받았고 키클락을 선택했다.


➰ 참고

1) 오픈소스 비교
https://www.openmaru.io/wp-content/uploads/2022/06/05.-Keycloak-세미나-자료_20190325.pdf
https://www.slideshare.net/slideshow/05-sso/194430720

2) CAS
https://docs.spring.io/spring-security/site/docs/5.2.2.RELEASE/reference/html5/#cas-sequence

3) GLUU
https://www.slexn.com/gluu/

4) OKTA
https://www.okta.com/kr/blog/2020/09/best-of-breed-technology/

5) KEYCLOAK
https://www.youtube.com/watch?v=dFPGO5jDHPY

profile
Cloud Engineer & BackEnd Developer

0개의 댓글