OpenSource/Keycloak

[OpenSource] Keycloak 이해하기 -4 : Keycloak 권한 및 종류

adjh54 2025. 2. 6. 20:00
728x170
해당 글에서는 Keycloak의 권한에 대해서 상세히 알아봅니다.





💡 [참고] Keycloak 초기 구성에서부터 활용방법에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩니다.
분류 주제 URL
Docker Docker Compose를 이용한 Keycloak 환경 구성 및 실행 방법 https://adjh54.tistory.com/644
환경설정 Google Cloud Console OAuth 2.0 API 액세스 환경 설정하기 https://adjh54.tistory.com/657
     
이해하기 Keycloak 이해하기 -1 : 구성 요소, 인증 처리과정, 주요 기능 https://adjh54.tistory.com/645
이해하기 Keycloak 이해하기 -2 : SAML/OIDC 프로토콜, 인증 흐름(Authentication flow) 종류 https://adjh54.tistory.com/646
이해하기 Keycloak 이해하기 -3 : 기본 환경 구성 및 로그인/로그아웃 구현 https://adjh54.tistory.com/647
이해하기 Keycloak 이해하기 -4 : Keycloak 권한 및 종류 https://adjh54.tistory.com/655
     
구성하기 Spring Boot 환경에서 Keycloak 활용하기 -1 : OIDC 인증 흐름 구현(Standard Flow) https://adjh54.tistory.com/648
구성하기 Spring Boot 환경에서 Keycloak 활용하기 -2 : OIDC 인증 흐름 구현(Direct Access Grants, Implicit Flow) https://adjh54.tistory.com/649
구성하기 Spring Boot 환경에서 Keycloak 활용하기 -3 : OIDC 인증 흐름 구현(Service Accounts Roles) https://adjh54.tistory.com/654
구성하기 Spring Boot 환경에서 Keycloak 활용하기 -4 : Identity providers Social 소셜 로그인 구현(Google) https://adjh54.tistory.com/658
     
Github Spring Boot Keycloak 관련 Repository https://github.com/adjh54ir/blog-codes/tree/main/spring-boot-keycloakhttps://github.com/adjh54ir/blog-codes/tree/main/spring-boot-keycloak-sub


 
 

1) Keycloak Role


💡 Keycloak Role

- 사용자나 클라이언트에게 부여할 수 있는 권한을 정의하는 방식입니다. 이러한 역할은 보안과 접근 제어를 관리하는 핵심 요소입니다.
- 이를 통해서 중앙집중식 권한 관리로 보안을 강화하고 세분화된 접근 제어가 가능하다는 장점이 있습니다.
- 또한, 유연하게 권한에 대한 위임을 제공하거나 효율적인 사용자 권한을 관리할 수 있습니다.

 
 

1. Keycloak Role 유형


💡 Keycloak Role 유형

- Keycloak에서 역할을 부여할 때, Realm 단위, Client 단위, Composite(복합적) 단위로 역할을 부여할 수 있습니다.
역할 유형 설명 사용 예시 
Realm Level Roles 전체 영역에서 공통적으로 사용되는 역할로, 모든 클라이언트에 적용 가능 - admin: 전체 관리자 권한
- user: 일반 사용자 권한
- manager: 중간 관리자 권한
Client Level Roles 특정 클라이언트 애플리케이션에서만 사용되는 역할로, 해당 클라이언트 내에서만 유효 - app1_admin: 앱1의 관리자
- app1_user: 앱1의 일반 사용자
- app2_editor: 앱2의 편집자
Composite Roles 여러 개의 역할을 하나로 묶어 관리하는 복합 역할. 역할 관리의 효율성 증대 - super_admin: admin + manager + editor 권한 포함
- content_team: writer + editor + reviewer 권한 포함
- support_staff: helpdesk + viewer 권한 포함

 
 

1.1. Realm Level Roles


💡 Realm Level Roles

- Realm 내의 전체 영역에서 공통적으로 사용되는 역할로, 모든 클라이언트에 적용이 가능합니다.
- Realm > Realm roles 내에서 Realm에 대한 역할을 부여할 수 있습니다.

 
 
 

1.2. Client Level Roles


💡 Client Level Roles

- 특정 클라이언트 애플리케이션에서만 사용되는 역할로, 해당 클라이언트 내에서만 유효합니다.
- Clients > Client 선택 > Roles 탭 내에서 클라이언트 단위에 역할을 부여할 수 있습니다.

 
 

1.3. Composite Roles


💡 Composite Roles

- 여러 개의 역할을 하나로 묶어 관리하는 복합 역할. 역할 관리의 효율성 증대할 수 있습니다.
- 이는 위에서 구성한 Realm Level Roles에서 적용한 내용과 Client Level Roles 내용이 합쳐져 복합적인 역할을 부여할 수 있습니다. 즉, 위에서 구성한 여러 가지 역할에 대해서 사용자나 그룹에 대해서 이러한 역할을 부여할 수 있습니다.

 

2. 권한 할당 및 권한 매핑


💡 권한 할당 및 권한 매핑

- 위에서 구성한 권한들에 대해서 Client 내에서 적용이 가능하지만, 각각 사용자 혹은 그룹에 대해서 이에 대한 할당을 할 수 있습니다.
할당 방식 설명 장점
직접 할당 방식 사용자나 클라이언트에게 개별적으로 역할을 직접 부여하는 방식 - 명확한 권한 관리
- 개별 사용자 맞춤 권한 설정 용이
- 즉각적인 권한 변경 가능
그룹을 통한 할당 방식 그룹에 역할을 부여하고 사용자를 해당 그룹에 포함시켜 권한을 관리하는 방식 - 대규모 사용자 관리 효율적
- 일관된 권한 관리
- 그룹 단위 권한 변경 용이
복합 역할을 통한 할당 방식 여러 개의 기본 역할을 하나의 상위 역할로 묶어서 할당하는 방식 - 복잡한 권한 구조 단순화
- 권한 관리 효율성 증대
- 일관된 권한 세트 관리 가능

 
 
 

2.1. 직접 할당 방식


💡 직접 할당 방식

- 사용자나 클라이언트에게 개별적으로 역할을 직접 부여하는 방식을 의미합니다.

 
 

💡 Clients > Clients 선택 > Roles

- 클라이언트에게 역할을 직접 부여합니다.

 

💡 Users > Users 선택 > Role mapping

- 사용자에게 구성한 역할을 부여합니다.

 
 

2.3. 복합 역할을 통한 할당 방식


💡 복합 역할을 통한 할당 방식

- 여러 개의 기본 역할을 하나의 상위 역할로 묶어서 할당하는 방식을 의미합니다.
- 예를 들어서, Realm Role과 Client Role을 함께 지정하여 복합 역할로 결합하여 사용자에게 할당할 수 있습니다.

- 아래와 같은 조합으로 복합 역할을 지정할 수 있습니다.
- SUPER_ADMIN 복합 역할: manage-users + manage-clients + view-realm + manage-events 역할 포함
- CONTENT_MANAGER 복합 역할: create-content + edit-content + delete-content + view-analytics 역할 포함
- SUPPORT_TEAM 복합 역할: view-users + manage-tickets + view-logs + basic-access 역할 포함

 
 

2) Keycloak Role 종류


 💡 Keycloak Role 종류

- Keycloak Role로 부여할 수 있는 종류들에 대해서 알아봅니다.

 

1. 요약


💡 요약

- Keycloak에서 Role로 부여할 수 있는 역할들입니다.
키워드 역할 분류 역할 명 상세 설명
account 계정관리 role_delete-account 사용자가 자신의 계정을 영구적으로 삭제할 수 있는 권한. 계정 삭제 시 모든 개인 정보와 설정이 제거되며 복구가 불가능합니다.
account 계정관리 role_manage-account 사용자가 자신의 프로필 정보, 비밀번호, 이메일 등 계정 관련 모든 설정을 변경하고 관리할 수 있는 권한입니다.
account 계정관리 role_manage-account-links 사용자가 소셜 미디어 계정(Google, Facebook 등)과 Keycloak 계정을 연동하거나 해제할 수 있는 권한입니다.
account 계정관리 role_manage-consent 사용자가 애플리케이션별 개인정보 수집 및 이용 동의 내역을 관리하고, 동의를 철회하거나 새로운 동의를 할 수 있는 권한입니다.
       
account 계정 조회 role_view-applications 사용자가 자신의 계정과 연결된 모든 애플리케이션의 목록을 확인하고, 각 애플리케이션에 부여된 권한 범위를 볼 수 있는 권한입니다.
account 계정 조회 role_view-consent 사용자가 각 애플리케이션에 제공한 개인정보 동의 내역과 동의 일시, 동의 범위 등을 조회할 수 있는 권한입니다.
account 계정 조회 role_view-groups 사용자가 자신이 속한 모든 그룹의 목록과 각 그룹의 역할, 권한 등의 상세 정보를 확인할 수 있는 권한입니다.
account 계정 조회 role_view-profile 사용자가 자신의 기본 프로필 정보(이름, 이메일, 전화번호 등)를 조회할 수 있는 권한입니다.
       
broker 토큰 관리 role_read-token 사용자의 인증 토큰 정보를 읽을 수 있는 권한으로, 토큰의 만료 시간, 범위, 발급자 등의 정보를 확인할 수 있습니다.
       
realm-management 영역 관리 role_create-client 새로운 클라이언트 애플리케이션을 등록하고 초기 설정을 구성할 수 있는 관리자 권한입니다. 클라이언트 ID, 시크릿, 리다이렉트 URI 등을 설정할 수 있습니다.
realm-management 영역 관리 role_impersonation 관리자가 특정 사용자의 계정으로 로그인하여 해당 사용자의 관점에서 시스템을 확인하고 문제를 진단할 수 있는 권한입니다.
realm-management 영역 관리 role_manage-authorization 시스템의 전반적인 권한 정책을 설정하고 관리할 수 있는 권한으로, 역할 기반 접근 제어(RBAC) 정책을 수립하고 수정할 수 있습니다.
realm-management 영역 관리 role_manage-clients 등록된 클라이언트의 설정을 변경하고, 클라이언트별 접근 정책, 프로토콜 매퍼, 서비스 계정 등을 관리할 수 있는 권한입니다.
realm-management 영역 관리 role_manage-events 시스템에서 발생하는 모든 이벤트(로그인, 로그아웃, 권한 변경 등)의 로깅 설정을 관리하고 이벤트 히스토리를 관리할 수 있는 권한입니다.
realm-management 영역 관리 role_manage-identity-providers 외부 신원 공급자(소셜 로그인 등)를 추가, 수정, 삭제하고 각 공급자의 인증 설정을 구성할 수 있는 권한입니다.
realm-management 영역 관리 role_manage-realm 영역의 기본 설정(세션 정책, 토큰 정책, 암호화 설정 등)을 관리하고 변경할 수 있는 최상위 관리자 권한입니다.
realm-management 영역 관리 role_manage-users 사용자 계정을 생성, 수정, 삭제하고 사용자별 역할 할당, 그룹 멤버십, 필수 조치 등을 관리할 수 있는 권한입니다.
       
realm-management 조회 권한 role_query-clients 시스템에 등록된 모든 클라이언트의 목록과 각 클라이언트의 설정 정보를 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_query-groups 시스템에 생성된 모든 그룹의 계층 구조, 멤버십, 할당된 역할 등을 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_query-realms 시스템에 구성된 모든 영역의 기본 설정과 정책을 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_query-users 사용자 목록을 검색하고 필터링할 수 있는 권한으로, 사용자명, 이메일, 속성 등 다양한 조건으로 사용자를 검색하고 결과를 확인할 수 있습니다.
realm-management 조회 권한 role_view-authorization 현재 설정된 모든 권한 부여 정책과 규칙을 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_view-clients 등록된 클라이언트의 기본 정보와 설정을 읽기 전용으로 확인할 수 있는 권한입니다.
realm-management 조회 권한 role_view-events 시스템에서 발생한 모든 이벤트 로그를 조회하고 필터링할 수 있는 권한입니다.
realm-management 조회 권한 role_view-identity-providers 구성된 모든 외부 신원 공급자의 설정과 연동 상태를 확인할 수 있는 권한입니다.
realm-management 조회 권한 role_view-realm 영역의 전반적인 설정과 정책을 읽기 전용으로 확인할 수 있는 권한입니다.
realm-management 조회 권한 role_view-users 사용자의 기본 프로필 정보만을 조회할 수 있는 제한된 권한으로, 고급 검색이나 필터링 기능은 제공되지 않습니다.
       
realm-management 최고 관리자 role_realm-admin 영역 내의 모든 관리 기능에 대한 완전한 접근 권한을 가지며, 모든 설정의 생성, 수정, 삭제가 가능한 최고 관리자 권한입니다.

 
 

2. 계정 관리 (Account) 권한 상세


💡 계정 관리 (Account) 권한 상세

- 사용자가 자신의 계정을 직접 관리하는데 필요한 권한들을 의미합니다.
- 예를 들어서, 사용자가 자신의 계정 삭제, 계정 설정 관리, 소셜 로그인 연동, 개인정보 동의 설정 등 사용자가 자신의 계정을 직접 관리할 수 있는 권한들입니다.

키워드 역할 분류 역할명 설명 상세 설명
account 계정 관리 role_delete-account 계정 삭제 권한 사용자가 자신의 계정을 영구적으로 삭제할 수 있는 권한. 계정 삭제 시 모든 개인 정보와 설정이 제거되며 복구가 불가능합니다.
account 계정 관리 role_manage-account 계정 설정 관리 권한 사용자가 자신의 프로필 정보, 비밀번호, 이메일 등 계정 관련 모든 설정을 변경하고 관리할 수 있는 권한입니다.
account 계정 관리 role_manage-account-links 계정 연동 관리 권한 사용자가 소셜 미디어 계정(Google, Facebook 등)과 Keycloak 계정을 연동하거나 해제할 수 있는 권한입니다.
account 계정 관리 role_manage-consent 개인정보 동의 관리 권한 사용자가 애플리케이션별 개인정보 수집 및 이용 동의 내역을 관리하고, 동의를 철회하거나 새로운 동의를 할 수 있는 권한입니다.

 
 
 
 
 

3. 계정 조회 (Account View) 권한 상세


💡 계정 조회 (Account View) 권한 상세

- 사용자가 자신의 계정과 관련된 다양한 정보를 조회할 수 있는 권한들입니다.
- 이 권한들은 수정 권한 없이 조회만 가능한 읽기 전용 권한입니다.
- 사용자의 개인정보 보호와 투명성을 위해 중요한 권한들입니다.

키워드 역할 분류 역할 설명 상세 설명
account 계정 조회 role_view-applications 애플리케이션 조회 권한 사용자가 자신의 계정과 연결된 모든 애플리케이션의 목록을 확인하고, 각 애플리케이션에 부여된 권한 범위를 볼 수 있는 권한입니다.
account 계정 조회 role_view-consent 동의 내역 조회 권한 사용자가 각 애플리케이션에 제공한 개인정보 동의 내역과 동의 일시, 동의 범위 등을 조회할 수 있는 권한입니다.
account 계정 조회 role_view-groups 그룹 정보 조회 권한 사용자가 자신이 속한 모든 그룹의 목록과 각 그룹의 역할, 권한 등의 상세 정보를 확인할 수 있는 권한입니다.
account 계정 조회 role_view-profile 프로필 조회 권한 사용자가 자신의 기본 프로필 정보(이름, 이메일, 전화번호 등)를 조회할 수 있는 권한입니다.

 

4. 토큰 관리 (Broker) 권한 상세


💡 토큰 관리 (Broker) 권한 상세

- 토큰 관리 권한은 Keycloak의 보안에서 매우 중요한 역할을 하는 권한입니다. 주로 인증 토큰의 읽기와 관리에 관련된 권한들을 포함합니다.

 

키워드 역할 분류 역할 명 역할 설명 상세 설명
broker 토큰 관리 role_read-token 토큰 읽기 권한 사용자의 인증 토큰 정보를 읽을 수 있는 권한으로, 토큰의 만료 시간, 범위, 발급자 등의 정보를 확인할 수 있습니다.

 

5. 영역 관리 (Realm Management) 권한 상세


💡 영역 관리 (Realm Management) 권한 상세

- Keycloak 시스템에서 가장 중요하고 강력한 관리자 권한 집합입니다. 이 권한들은 시스템의 핵심 기능을 제어하고 관리하는데 사용됩니다.

 
 

5.1. 관리자 권한 카테고리


키워드 역할 분류 역할 명 설명 상세 설명
realm-management 영역관리 role_create-client 클라이언트 관리 새로운 클라이언트 애플리케이션을 등록하고 초기 설정을 구성할 수 있는 관리자 권한입니다. 클라이언트 ID, 시크릿, 리다이렉트 URI 등을 설정할 수 있습니다.
realm-management 영역관리 role_impersonation 사용자 관리 관리자가 특정 사용자의 계정으로 로그인하여 해당 사용자의 관점에서 시스템을 확인하고 문제를 진단할 수 있는 권한입니다.
realm-management 영역관리 role_manage-authorization 이벤트 관리 시스템의 전반적인 권한 정책을 설정하고 관리할 수 있는 권한으로, 역할 기반 접근 제어(RBAC) 정책을 수립하고 수정할 수 있습니다.
realm-management 영역관리 role_manage-clients ID 제공자 관리 등록된 클라이언트의 설정을 변경하고, 클라이언트별 접근 정책, 프로토콜 매퍼, 서비스 계정 등을 관리할 수 있는 권한입니다.

 

5.2. 조회 권한 카테고리


키워드 역할 분류 역할명 설명 상세 설명
realm-management 영역관리 role_manage-events 클라이언트 조회 시스템에서 발생하는 모든 이벤트(로그인, 로그아웃, 권한 변경 등)의 로깅 설정을 관리하고 이벤트 히스토리를 관리할 수 있는 권한입니다.
realm-management 영역관리 role_manage-identity-providers 사용자 조회 외부 신원 공급자(소셜 로그인 등)를 추가, 수정, 삭제하고 각 공급자의 인증 설정을 구성할 수 있는 권한입니다.
realm-management 영역관리 role_manage-realm 영역 조회 영역의 기본 설정(세션 정책, 토큰 정책, 암호화 설정 등)을 관리하고 변경할 수 있는 최상위 관리자 권한입니다.
realm-management 영역관리 role_manage-users 권한 조회 사용자 계정을 생성, 수정, 삭제하고 사용자별 역할 할당, 그룹 멤버십, 필수 조치 등을 관리할 수 있는 권한입니다.

 
 

6. 조회 권한 (Query/View) 상세


💡 조회 권한 (Query/View) 상세

- 조회 권한은 Query와 View로 구분되며, 각각의 권한 범위와 기능이 다릅니다. 단순한 조회를 하거나 특정 조건에 따르는 조회를 하는 경우를 말합니다.
- Query 권한: 검색, 필터링, 상세 조회 등 포괄적인 조회 기능
- View 권한: 기본 정보에 대한 단순 조회 기능

키워드 역할 분류 역할 명 설명 상세 설명
realm-management 조회 권한 role_query-clients 클라이언트 조회 시스템에 등록된 모든 클라이언트의 목록과 각 클라이언트의 설정 정보를 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_query-groups 그룹 조회 시스템에 생성된 모든 그룹의 계층 구조, 멤버십, 할당된 역할 등을 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_query-realms 영역 조회 시스템에 구성된 모든 영역의 기본 설정과 정책을 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_query-users 사용자 조회 사용자 목록을 검색하고 필터링할 수 있는 권한으로, 사용자명, 이메일, 속성 등 다양한 조건으로 사용자를 검색하고 결과를 확인할 수 있습니다.
         
realm-management 조회 권한 role_view-authorization 권한 정책 조회 현재 설정된 모든 권한 부여 정책과 규칙을 조회할 수 있는 권한입니다.
realm-management 조회 권한 role_view-clients 클라이언트 설정 조회 등록된 클라이언트의 기본 정보와 설정을 읽기 전용으로 확인할 수 있는 권한입니다.
realm-management 조회 권한 role_view-events 이벤트 조회 시스템에서 발생한 모든 이벤트 로그를 조회하고 필터링할 수 있는 권한입니다.
realm-management 조회 권한 role_view-identity-providers ID 제공자 조회 구성된 모든 외부 신원 공급자의 설정과 연동 상태를 확인할 수 있는 권한입니다.
realm-management 조회 권한 role_view-realm 영역 설정 조회 영역의 전반적인 설정과 정책을 읽기 전용으로 확인할 수 있는 권한입니다.
realm-management 조회 권한 role_view-users 사용자 기본 조회 사용자의 기본 프로필 정보만을 조회할 수 있는 제한된 권한으로, 고급 검색이나 필터링 기능은 제공되지 않습니다.

 

7. 최고 관리자 권한 (realm-admin) 상세


💡 최고 관리자 권한 (realm-admin) 상세

- Keycloak에서 가장 강력한 권한으로, 해당 영역(Realm) 내의 모든 리소스와 기능에 대한 완전한 접근 권한을 가집니다.

 

💡 최고 관리자 권한의 범위

- 최고 관리자 권한을 적용하였을때에 관리가 가능한 권한의 범위에 대해 알아봅니다.
관리 영역 주요 기능 상세 설명
사용자 관리 전체 사용자 관리 사용자 계정의 생성, 수정, 삭제 및 권한 부여 등 모든 사용자 관련 작업 수행
클라이언트 관리 클라이언트 전체 관리 클라이언트 애플리케이션의 등록, 구성 설정, 삭제 등 모든 클라이언트 관련 작업
영역 설정 시스템 설정 관리 보안 정책, 인증 설정, 토큰 설정 등 영역의 모든 시스템 설정 구성
그룹/역할 관리 조직 구조 관리 그룹 생성/관리, 역할 정의/할당, 권한 체계 설정 등 전체 조직 구조 관리
감사/로그 관리 시스템 모니터링 모든 시스템 이벤트 추적, 감사 로그 관리, 보안 감사 수행

 

키워드 역할 분류 역할 명 설명 상세 설명
realm-management 최고 관리자 role_realm-admin 최고 관리자 권한 영역 내의 모든 관리 기능에 대한 완전한 접근 권한을 가지며, 모든 설정의 생성, 수정, 삭제가 가능한 최고 관리자 권한입니다.

 
 
 
오늘도 감사합니다 😀

 

그리드형