Keycloak 관리자 권한(Admin Permissions) — 렐름 접근 통제
Keycloak 관리자 권한(Admin Permissions) — 렐름 접근 통제
Keycloak에서 만들어진 각 렐름에는 그 렐름을 관리할 수 있는 전용 Admin Console이 있어요. master 렐름은 특별한 렐름으로, 관리자가 시스템에서 여러 렐름을 관리할 수 있게 해 줍니다. 또한 다른 렐름의 사용자에게 서버를 관리할 수 있는 세밀한(fine-grained) 접근 권한을 정의할 수 있어요. 이 장에서는 그 모든 시나리오를 다룹니다.
출처: Keycloak Server Administration Guide — "Managing access to realm resources" — 공식문서
본문
master 렐름 접근 통제
Keycloak의 master 렐름은 특별해서 다른 렐름과 다르게 취급됩니다. master 렐름의 사용자에게는 Keycloak 서버에 배포된 0개 이상의 렐름을 관리할 수 있는 권한을 부여할 수 있어요. 렐름이 만들어지면 Keycloak은 자동으로 그 새 렐름에 접근할 권한을 주는 여러 역할을 만듭니다. Admin Console과 Admin REST 엔드포인트에 대한 접근은 master 렐름의 사용자에게 이 역할들을 매핑해 통제할 수 있습니다. 여러 명의 슈퍼유저뿐 아니라 특정 렐름만 관리할 수 있는 사용자도 만들 수 있어요.
글로벌 역할(Global roles)
master 렐름에는 두 개의 렐름 수준 역할이 있습니다.
- admin — 슈퍼유저입니다. 서버의 어떤 렐름이든 관리할 수 있는 전체 접근 권한을 갖습니다.
- create-realm — 새 렐름을 만들 수 있습니다. 자신이 만든 새 렐름에 대해 전체 접근 권한을 부여받습니다.
참고로 admin 역할이 없는 create-realm 역할 관리자는 Admin Console에서 렐름을 만들고 목록을 보려면 렐름별 query-realms 역할도 필요해요.
렐름별 역할(Realm specific roles)
master 렐름의 관리자 사용자에게는 시스템의 하나 이상의 다른 렐름에 대한 관리 권한을 부여할 수 있습니다. Keycloak에서 각 렐름은 master 렐름의 클라이언트로 표현되는데, 클라이언트 이름이 <realm name>-realm 이에요. 이 클라이언트들은 각각 개별 렐름을 관리하는 다양한 수준의 접근을 정의하는 클라이언트 수준 역할을 갖습니다.
사용 가능한 역할은 create-client, impersonation, manage-authorization, manage-clients, manage-events, manage-identity-providers, manage-organizations, manage-realm, manage-users 등이며, 조회용 역할(view-users, view-clients 등)도 있습니다.
관리자 유형
Keycloak 관리자는 세 유형으로 나뉩니다.
- 서버 관리자(Server administrators) —
master렐름에서admin역할을 부여받은 사용자(또는 서비스 계정)예요. - 렐름 관리자(Realm administrators) — 특정 렐름에서
realm-admin역할을 부여받은 사용자(또는 서비스 계정)입니다. - 위임된 렐름 관리자(Delegated realm administrators) — 위 두 유형에 속하지 않지만 세밀한 관리자 권한(fine-grained admin permissions) 기능으로 렐름 관리 권한을 부여받은 사용자입니다.
서버 관리자와 렐름 관리자는 모든 리소스에 대한 전체 접근 권한으로 렐름을 관리할 수 있어요. 관리 역할은 Admin Console과 Admin REST API를 통해서 매핑되며, 역할 기반 접근 통제(RBAC)를 따라 운영 환경에서 관리 권한을 최소 권한 원칙에 맞게 부여하는 것이 안전합니다.