DevOps, Infra

[Keycloak] MSA 인증/인가 Open Source Solution Keycloak ?

seulseul 2023. 1. 5. 23:25

목차

 

    1. Keycloak  이란?

    Keycloak은 웹 앱 및 RESTful 웹 서비스를 위한 Single Sign On 솔루션이다.

    Keycloak의 목표는 애플리케이션 개발자가 조직에 배포한 애플리케이션과 서비스를 쉽게 보호할 수 있도록 보안을 단순화하는 것이다.

    2. Keycloak 기능설명

    2.1. SSO

    • 사용자는 개별 응용프로그램이 아닌 Keycloak으로 인증한다.
    • 애플리케이션이 로그인 양식, 사용자 인증 및 사용자 저장에 관여하지 않으며 Keycloak에 로그인한 후에는 사용자가 다른 애플리케이션에 액세스하기 위해 다시 로그인 불필요하다. ( 이것은 로그아웃에도 적용된다.
    • Keycloak은 Single Sign-out을 제공하므로 사용자는 Keycloak을 사용하는 모든 응용 프로그램에서 로그아웃하려면 한번만 로그아웃하면 된다.

    2.2. 소셜 로그인

    keycloak-sso

    • 이를 이용하여 Google 로그인, 네이버 로그인 같은 기능을 구현할 수 있으며, 소셜 네트워크에서 로그인을 사용하도록 설정하려면 관리 콘솔을 통해 쉽게 추가 가능하다.

    2.3. User Federation

    keycloak-user-federation

    • Keycloak에는 기존 LDAP 또는 ActiveDirectory 서버에 연결할 수 있는 지원 기능 내장하고 있다.
    • 관계형 데이터베이스 (RDB) 와 같은 다른 스토어에 사용자가 있는 경우 자체 provider를 구현이 가능하다.
    • 해당 LDAP – Keycloak 연계를 통하여 시스템별 유저 관리로 인한 계정 관리의 어려움을 해결할 수 있다. 
    • Gitlab, SonarQube, Nexus, Harbor, Kibana와 같은 개발자 계정을 Keycloak 에서 관리할 수 도 있다.

     

     

    3. Keycloak 용어 정리

    3.1. Realms (영역)

    • 인증, 권한 부여가 적용되는 범위를 나타내는 단위, SSO로서 인증 대상의 범위를 의미한다.
    • Realm 을 통해 Namespace 형태로 관리할 수 있다.
    • 다수의 Realm을 가질 수 있고 일반적으로 master(default로 생성된 Realm)는 관리자의 목적으로만 사용하고 다른 Realm을 생성하여 사용하기를 권장한다.
    • Realms 은 사용자, 애플리케이션, 역할 및 그룹을 포함한 개체를 관리하는 공간이다.
    • 사용자는 Realms에 속해 로그인 한다.
    • 1개의 Keyclock 배치로 데이터베이스에 공간이 있는 만큼 Realms를 정의, 저장 및 관리할 수 있다.
    • Realm (영역) 을 설정하고 대부분의 관리 작업을 Keyclock 관리 콘솔에서 수행합니다.

    3.2. Clients

    • 클라이언트는 Keycloak에 사용자 인증을 요구할 수 있는 Entity 이다.
    • 대부분의 경우 클라이언트는 Keyclock을 사용하여 보안을 유지하고 Single Sign On 솔루션을 제공하고자 하는 Application 및 서비스이다.
    • 클라이언트는 Keycloak에 의해 보호되는 네트워크상의 다른 서비스를 안전하게 호출할 수 있도록 ID 정보 또는 Access Token 만을 요구하는 entity일 수도 있다.
    • SSO를 사용할 각 Application
    • 하나의 Realm에 n개의 Client를 생성, 관리할 수 있다.

     

    3.3. Role

    • 역할은 사용자의 유형 또는 카테고리를 식별한다.
    • 관리자, 사용자, 관리자 및 직원은 모두 조직에 존재할 수 있는 일반적인 역할이다.
    • Application 에서는, 개개의 유저가 아닌 특정의 Role 에 액세스와 권한을 할당하는 경우가 많다.
      • 이는 유저를 취급하는 것이 너무 세밀하고 관리하기 어렵기 때문이다.
    • User에게 부여할 권한 내용 , KeyCloak의 REST API를 사용할 권한을 부여할 수 있고 사용자가 정의한 권한을 부여할 수 있다.

    3.4. Users

    • 사용자는 시스템에 로그인할 수 있는 entity 이다.
    • 기본적으로 User는 Username, Email, FirstName, LastName으로 구성되어 있지만 Custom User Attribute를 사용하면 사용자가 원하는 속성을 추가할 수 있다.
    • Group 멤버쉽을 할당하고 특정 Role (역할) 을 할당할 수 있다.
    • Client에 인증을 요청할 사용자(실제 로그인할 사용자계정) , 하나의 Realm에는 Realm에 종속된 n개의 User를 생성하고 관리할 수 있다.