메인 콘텐츠로 건너뛰기
Keycloak realm을 연결하면 Oliver (Security Professional)가 realm을 검사하고, 클라이언트를 감사하며, 사용자 및 역할을 검토하고, ID 및 접근 설정을 분석할 수 있습니다. Keycloak은 대상 realm에서 realm-management 역할을 보유한 기밀 서비스 어카운트 클라이언트로 인증합니다.

지원 플랫폼

플랫폼지원
자체 호스팅 Keycloak전체 버전
Phase Two관리형 Keycloak 서비스

사전 요구사항

  • CloudThinker가 검사할 Keycloak realm.
  • 기밀 클라이언트를 생성하고 서비스 어카운트 역할을 할당할 관리자 접근kcadm.sh (자체 호스팅) 또는 realm 콘솔 (Phase Two).
  • realm의 기본 URLrealm 이름.
연결은 cloudthinker-svc 서비스 어카운트에 부여한 역할로 범위가 제한됩니다. CloudThinker에 필요한 최소 권한의 realm-management 역할을 할당하세요.

설정

두 방법 모두 동일한 결과물을 생성합니다: 서비스 어카운트에 realm-management 역할이 있는 cloudthinker-svc 기밀 클라이언트. 자체 호스팅은 kcadm.sh를 사용하고, Phase Two는 realm 콘솔을 사용합니다.
Keycloak의 관리 CLI인 kcadm.sh로 클라이언트를 프로비저닝합니다. kcadm.sh가 사용 가능한 셸에서 실행하세요.
1

인증

kcadm.sh config credentials \
  --server http://localhost:8080 --realm master \
  --user admin --password '<admin-password>'
2

클라이언트 생성

kcadm.sh create clients -r <your-realm> \
  -s clientId=cloudthinker-svc \
  -s publicClient=false \
  -s serviceAccountsEnabled=true \
  -s standardFlowEnabled=false \
  -s directAccessGrantsEnabled=false \
  -s 'redirectUris=[]'
3

realm-management 역할 할당

kcadm.sh add-roles -r <your-realm> \
  --uusername service-account-cloudthinker-svc \
  --cclientid realm-management \
  --rolename realm-admin
최소 권한을 원한다면 더 좁은 역할(예: view-realm, view-users)을 사용하세요.
4

클라이언트 시크릿 가져오기

CID=$(kcadm.sh get clients -r <your-realm> \
  -q clientId=cloudthinker-svc --fields id --format csv --noquotes | tail -n1)

kcadm.sh get clients/$CID/client-secret -r <your-realm> \
  --fields value --format csv --noquotes | tail -n1
5

CloudThinker에 연결 추가

Connections → Keycloak으로 이동하여 다음을 입력하세요:
  • KEYCLOAK_URL: http://<host-ip>:8080
  • KEYCLOAK_REALM: realm 이름
  • KEYCLOAK_CLIENT_ID: cloudthinker-svc
  • KEYCLOAK_CLIENT_SECRET: 이전 단계의 시크릿
Connect를 클릭하세요. 성공하면 CloudThinker가 Connected 상태를 표시합니다.

연결 세부 정보

필드설명예시
KEYCLOAK_URLKeycloak 기본 URLhttp://<host-ip>:8080
KEYCLOAK_REALM대상 realm 이름my-realm
KEYCLOAK_CLIENT_ID서비스 어카운트 클라이언트 IDcloudthinker-svc
KEYCLOAK_CLIENT_SECRET자격증명 단계의 클라이언트 시크릿

필요 권한

cloudthinker-svc 서비스 어카운트는 대상 realm에서 realm-management 역할이 필요합니다. 주요 역할:
역할용도
view-realmRealm 설정 읽기
view-users사용자 목록 조회 및 검사
view-clients클라이언트 목록 조회 및 검사
query-users, query-clients, query-groups조회 쿼리 실행
manage-users, manage-clients, manage-realm변경 수행 (필요한 경우에만 할당)
읽기 전용 분석에는 view-*query-* 역할만 할당하세요. Oliver가 변경을 수행해야 하는 경우에만 manage-* 역할을 추가하세요.

에이전트 기능

연결이 완료되면 Oliver가 할 수 있는 작업:
기능설명
Realm 검사Realm 설정 및 구성 검토
클라이언트 감사클라이언트 목록 조회, 플로우 및 인가 설정 검토
사용자 관리사용자, 세션, 자격증명 상태 조회
역할 및 그룹 검토역할, 복합 역할, 그룹 계층 구조 검사
접근 분석과도하게 권한이 부여된 서비스 어카운트 및 오래된 클라이언트 식별

연결 확인

@oliver #report list all clients in the realm to verify the Keycloak connection

예시 프롬프트

@oliver #report list all clients in the realm and flag any with direct access grants enabled
@oliver #report show service accounts with realm-admin and review whether each is needed
@oliver #recommend audit users without 2FA enabled

문제 해결

  • 클라이언트 시크릿이 올바르게 복사되었는지 확인하세요
  • 클라이언트에서 Client authentication이 활성화되어 있는지 확인하세요
  • 서비스 어카운트에 realm-management 역할이 할당되어 있는지 확인하세요
  • 서비스 어카운트에 해당 작업에 필요한 realm-management 역할이 없음
  • 자체 호스팅: 누락된 역할로 add-roles를 재실행하세요
  • Phase Two: 역할 할당 목록의 두 페이지를 모두 다시 확인하세요
  • 자체 호스팅: 기본 URL이 Keycloak 호스트명과 일치하는지 확인하세요
  • Phase Two: realm Details → Host 필드에서 URL을 정확히 복사하세요
  • 클라이언트가 기밀이어야 합니다 — publicClient=false (자체 호스팅) 또는 Client authentication 활성화 (Phase Two)
  • 공개 클라이언트에는 시크릿이 없습니다

보안

  • 최소 권한 — 에이전트가 사용 사례에 필요한 권한만 부여하세요. 읽기 전용으로 시작한 후 필요에 따라 확장하세요.
  • 기본 읽기 전용 — 에이전트가 이 연결을 통해 변경 작업을 수행하게 할 것이 아니라면 읽기 전용 자격증명을 사용하세요.
  • 자격증명 교체 — 정기 일정에 따라 키와 토큰을 교체하세요. 연결을 업데이트하면 CloudThinker가 새 값을 자동으로 반영합니다.
  • 오프보딩 시 취소 — 연결을 삭제하거나 팀원이 퇴사할 때 프로바이더에서 자격증명을 제거하세요.
  • 전용 클라이언트 — 공유 관리자 클라이언트가 아닌 전용 서비스 어카운트 클라이언트로 cloudthinker-svc를 사용하세요.
  • 시크릿 교체Credentials 탭을 통해 주기적으로 클라이언트 시크릿을 교체하세요.

관련 항목

Oliver 에이전트

보안 및 컴플라이언스 에이전트

연결 개요

사용 가능한 모든 연결