목차
1. Keycloak 이란?
Keycloak은 웹 앱 및 RESTful 웹 서비스를 위한 Single Sign On 솔루션이다.
Keycloak의 목표는 애플리케이션 개발자가 조직에 배포한 애플리케이션과 서비스를 쉽게 보호할 수 있도록 보안을 단순화하는 것이다.
2. Keycloak 기능설명
2.1. SSO
- 사용자는 개별 응용프로그램이 아닌 Keycloak으로 인증한다.
- 애플리케이션이 로그인 양식, 사용자 인증 및 사용자 저장에 관여하지 않으며 Keycloak에 로그인한 후에는 사용자가 다른 애플리케이션에 액세스하기 위해 다시 로그인 불필요하다. ( 이것은 로그아웃에도 적용된다.
- Keycloak은 Single Sign-out을 제공하므로 사용자는 Keycloak을 사용하는 모든 응용 프로그램에서 로그아웃하려면 한번만 로그아웃하면 된다.
2.2. 소셜 로그인
- 이를 이용하여 Google 로그인, 네이버 로그인 같은 기능을 구현할 수 있으며, 소셜 네트워크에서 로그인을 사용하도록 설정하려면 관리 콘솔을 통해 쉽게 추가 가능하다.
2.3. 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 관리 콘솔에서 수행합니다.
- You need an administrator account. See Creating the first administrator.
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를 생성하고 관리할 수 있다.
'DevOps, Infra' 카테고리의 다른 글
[DevOps] Ansible 이란? (0) | 2023.01.17 |
---|---|
[k6] 성능테스트 도구 (0) | 2023.01.10 |
[ArgoCD]카나리 배포 (Canary Deployment) (0) | 2022.12.30 |
[ArgoCD] 블루그린 배포(Blue Green Deployment) (0) | 2022.12.30 |
[ArgoCD] 롤링 배포 (Rolling Deployment) (0) | 2022.12.30 |