운영 및 보안 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) |
버전 관리 | 테스트 → 스테이징 → 운영 롤링업데이트 + 보안 알림 구독 |
마지막 수정일자