운영 및 보안 Best Practices

운영 및 보안 Best Practices

1️⃣ Token 수명 전략 및 보안 설정

1. Token 종류 요약

Keycloak에서 사용하는 주요 토큰:

토큰 종류 설명 기본 수명
Access Token 리소스 접근용 5분
Refresh Token Access 토큰 재발급 30분
ID Token 사용자 정보 포함 5분

2. 토큰 수명 설정 방법

📌 경로:
Realm > Clients > [클라이언트 선택] > Settings > Advanced Settings

예시 설정:

Access Token Lifespan: 300 (초)
Refresh Token Lifespan: 1800 (초)
SSO Session Idle: 1800 (초)
SSO Session Max: 3600 (초)

📌 CLI 기반 설정:

kcadm.sh update clients/<client-id> \
  -r <realm> \
  -s 'attributes.access.token.lifespan=300'

3. 전략적 토큰 수명 설계

  • 보안 우선: Access Token은 짧게 (5분 이내)
  • UX 고려: Refresh Token은 길게 (30분 이상)
  • Mobile 앱: Refresh Token 수명을 길게, Rotation 방식 고려

4. 토큰 흐름 아키텍처

+-------------+       +------------+       +-------------+
|   Client    | <---> |  Keycloak  | <---> |  Resource   |
+-------------+       +------------+       +-------------+

[1] 로그인 후 Access/Refresh Token 발급
[2] Access Token 만료 → Refresh Token으로 재발급

2️⃣ 감사 로그 설정 및 로깅 전략

1. 감사 로그란?

Keycloak의 Event Logging 기능을 통해 사용자 로그인, 실패, 관리자 작업 등을 추적할 수 있습니다.


2. 설정 방법

📌 경로:
Realm > Events > Config

  • Enable Events: ✅
  • Event Types: LOGIN, LOGOUT, UPDATE_PROFILE, ADMIN_EVENT, …
  • Save to DB: ✅
  • Expiration: 30 days

📌 Event 로그 예시 (관리자 로그인)

{
  "type": "LOGIN",
  "realmId": "myrealm",
  "userId": "abc-123",
  "ipAddress": "192.168.1.10",
  "clientId": "admin-cli",
  "details": {
    "auth_method": "password",
    "redirect_uri": "...",
    ...
  }
}

3. 로그 파일 연동 (JSON, Syslog 등)

📌 standalone.conf 환경변수 설정:

-Dkeycloak.events.store.file.enabled=true
-Dkeycloak.events.store.file.dir=/var/log/keycloak

또는 Loki, ELK(Elasticsearch + Kibana)와 연동하여 중앙집중 로깅 구성 가능!


4. 감사 로그 흐름 다이어그램

[사용자/관리자 액션]
        ↓
[Keycloak Event Listener]
        ↓
[DB 또는 파일/로그 수집기]

3️⃣ 관리자 역할 최소 권한 설정 (RBAC for Admin)

1. 기본 Admin 권한 문제점

기본 admin 계정은 모든 Realm, 사용자, 클라이언트, 설정에 접근 가능 → 보안 사고 위험


2. 최소 권한 원칙 (Principle of Least Privilege)

관리자가 자신의 역할에 필요한 리소스만 접근할 수 있도록 제한


3. Keycloak 관리자 RBAC 구성

📌 Keycloak Admin Console → Realm Roles 생성

예: user-manager, client-admin, audit-viewer

📌 관리자 사용자에게 Role Mapping 적용:

User > Role Mappings > Assign Role

예시:

역할 권한
user-manager 사용자 생성/삭제
realm-auditor 감사 로그 열람만 가능
client-admin 특정 클라이언트 설정만 접근 가능

4. RBAC 아키텍처 예시

[관리자 A] → 사용자 관리만 가능 (user-manager)
[관리자 B] → 감사 로그만 조회 가능 (audit-viewer)
[슈퍼관리자] → 전체 접근 (admin)

4️⃣ 보안 업데이트 및 버전 관리 전략

1. Keycloak 보안 업데이트 방식

  • Keycloak는 보안 패치를 자주 릴리스함 (보통 Minor 버전 포함)
  • CVE 대응이 중요한 경우 Long-Term Support (LTS) 버전 사용 권장

2. 보안 업데이트 체크 리스트

항목 설명
취약점 알림 구독 Keycloak Security Advisories
자동화 Helm Chart 또는 GitOps 기반 배포로 CI 연동
테스트 환경 dev/staging에 먼저 배포 후 운영 반영
백업 전략 배포 전 Realm/DB 전체 백업 필수

3. 버전 관리 전략 (실전 예시)

[prod]     → 21.1.1 (LTS)
[staging]  → 22.0.3 (테스트 중)
[dev]      → 최신버전 항상 적용
docker pull quay.io/keycloak/keycloak:21.1.1

4. GitOps 기반 운영 아키텍처 예시

[Git Repository]
[ArgoCD / Flux]
[Kubernetes 환경에 Keycloak 자동 배포]
[CI로 취약점 점검 & 알림 자동화]

✅ 마무리 요약

주제 핵심 요약
Token 전략 Access는 짧게, Refresh는 길게. Rotation 고려
감사 로그 이벤트 활성화 + 중앙 로그 연동
관리자 권한 최소 권한만 할당 (Custom Realm Role)
버전 관리 테스트 → 스테이징 → 운영 롤링업데이트 + 보안 알림 구독

RSS Feed
마지막 수정일자