• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

키클락 권한 구성에 대해 조언 및 가이드 문의 입니다.

24.03.20 10:03 작성 조회수 92

0

안녕하세요. 인증관련 개발 진행중입니다.

저희는 사용자의 유형을 보면

1차 분류로 시스템을 관리하는 관리자와 서비스를 이용하는 사용자로 구분되며

사용자는 다시 같은 그룹의 사용자를 관리(생성,수정,삭제등)할 수 있는 관리사용자와 일반사용자 이렇게 나뉩니다.

이런 환경일때 realm과 role, group을 어떻게 나누는게 효율적일지 궁금하여 문의 드립니다.

1차 시스템 관리자와 서비스 이용 사용자는 서로 완전히 다른 유형이라 realm으로 나누는 게 좋을지 group 또는 Client나 role 등으로 나뉘어야 할지 고민입니다. 같은 서비스라서 같은 realm안에 두는게 맞을거 같기도 하고요.

그리고 서비스 이용자 중 그룹과 Role를 둘다 나뉘어야 할거 같아서 이렇게 권한 분류가 가능한지 궁금합니다

서비스 이용자중 그룹을 나누어 A, B, C 그룹이 있고

A그룹에 관리사용자 role, 일반사용자 role

B그룹에 관리사용자 role, 일반사용자 role

C그룹에 관리사용자 role, 일반사용자 role

각 그룹별로 권한을 나누어 각그룹의 관리사용자는 각그룹만 관리가능하고 다른 그룹에는 관리권한이 없게 구성하고자 하는데 이런게 키클락 옵션만으로 가능할지 궁금합니다.

 

아 그리고 키클락의 REST API를 통해 UI를 이용하지 않고 사용자 관리 옵션 설정등을 하려고 하는데요. 최고 관리자인 Admin으로 API 토큰을 받아 처리하는 방법까지는 확인을 하였습니다.

그런데 혹시 이 부분을 그룹 관리자에게 권한을 부여할 수 있을까요?

예를 들면 A그룹에 관리사용자로 인증 토큰을 받아서 이 토큰으로 REST API를 이용해서 사용자 관리를 할 수 있는지가 궁금합니다.

 

질문이 정리가 안되서 의도를 이해하실지 모르겠네요.

암튼 읽어 주셔서 감사합니다.

 

 

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.22

안녕하세요, 인프런 AI 인턴입니다.
aanicall님, 질문 주셔서 감사합니다.

Keycloak은 멀티 테넌시 지원을 위한 강력한 Identity and Access Management 솔루션입니다. 여기에서 멀티 테넌시는 여러 고객이나 사용자 그룹이 독립적인 환경을 유지하면서 하나의 인스턴스를 공유하는 것을 말합니다.

aanicall님의 요구사항에 대해 답변 드리겠습니다.

  1. 관리자와 일반 사용자를 구분하는 경우, 한 realm 내에서 다루는 것이 일반적입니다. 그 안에서 role을 통해 서로 다른 권한을 부여합니다. 만약 격리된 레벨의 보안이 필요하다면 서로 다른 realm으로 분리할 수도 있습니다.

  2. group과 role을 같이 사용하는 것도 가능합니다. 각 그룹에 대해 관리자 role과 일반 사용자 role을 만들어 할당함으로써 해당 그룹내에서의 접근 권한을 제어할 수 있습니다.

  3. 관리자 그룹에게 REST API를 통한 사용자 관리 권한을 부여하는 것도 가능합니다. 각 그룹의 관리자 role을 가진 사용자에게는 해당 그룹 관리에 필요한 특정 Keycloak 관리 API에 접근할 수 있는 권한을 부여할 수 있습니다.

Keycloak은 매우 유연하고 확장성이 뛰어나므로 aanicall님의 요구사항에 맞게 다양하게 구성할 수 있을 것입니다. 그룹별 관리자가 개별 그룹의 사용자를 관리하도록 설정하는 것이 키클락 옵션만으로도 충분히 구현 가능합니다.

관리자 권한을 가진 사용자가 REST API를 통해 사용자를 관리하도록 설정하고자 할 때에는 해당 역할에 적절한 Keycloak 클라이언트 및 런타임 권한을 설정하고, 이를 사용하여 API 토큰을 발급받을 수 있도록 할 수 있습니다. 이를 통해 사용자 관리, role 할당, 그룹 관리등을 효과적으로 실행할 수 있습니다.

Keycloak의 고급 구성이 필요하다면 공식 문서를 참조하거나, 관련 커뮤니티나 포럼에서 추가적인 도움을 받는 것도 좋은 방법입니다.

도움이 필요하시면 언제든지 추가 질문 주세요. 개발하시는데 좋은 결과가 있기를 바랍니다!