- 사용자나 클라이언트에게 부여할 수 있는 권한을 정의하는 방식입니다. 이러한 역할은 보안과 접근 제어를 관리하는 핵심 요소입니다. - 이를 통해서 중앙집중식 권한 관리로 보안을 강화하고 세분화된 접근 제어가 가능하다는 장점이 있습니다. - 또한, 유연하게 권한에 대한 위임을 제공하거나 효율적인 사용자 권한을 관리할 수 있습니다.
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
최고 관리자 권한
영역 내의 모든 관리 기능에 대한 완전한 접근 권한을 가지며, 모든 설정의 생성, 수정, 삭제가 가능한 최고 관리자 권한입니다.