관리자 콘솔
보안 모니터링, 통합 정책 관리(Policy Center), 통합 접근 관리(Access Center), Zero Trust 운영, AI 보조 정책 작성 흐름을 제공하는 웹 기반 관리 콘솔입니다.
메뉴 구조
이 페이지는 OSS contexa-iam 관리자 표면을 설명합니다. 현재 기본 메뉴 트리는 AdminMenuService가 구성하며, 최상위 그룹은 Dashboard, Policy, Access, IAM, Security 다섯 개입니다. Zero Trust 운영 화면은 별도 최상위 그룹이 아니라 Security 그룹 아래에 노출됩니다.
| 메뉴 그룹 | 페이지 | 목적 | 조건 |
|---|---|---|---|
| Dashboard | /admin, /admin/, /admin/dashboard | 보안 지표, Zero Trust 판정 분포, 위협 이벤트 | 항상 |
| Policy | /admin/policy-center (생성, 목록, 시뮬레이터, 매트릭스) | 리소스 검토, 정책 작성, 시뮬레이션, 매트릭스 확인을 포함한 통합 정책 작업 | 항상 |
| Access | /admin/access-center (사용자, 그룹, 역할, 개요) | 사용자, 그룹, 역할, 유효 권한 검토를 위한 통합 접근 관리 | 항상 |
| IAM | Users, Groups, Roles, Permissions, Role Hierarchies, Password Policy, System Settings, Menu Management | 식별 엔티티, 역할 계층, 비밀번호 규칙, 관리자 메뉴/시스템 설정 | 항상 |
| Security | Security Monitor, Blocked Users, Session Management, IP Management | Zero Trust 운영, 사건 후속 조치, 세션 제어, IP 규칙 관리 | 항상 |
컨트롤러
대부분의 관리자 컨트롤러는 /admin 기본 경로 아래에서 동작하며 Thymeleaf 템플릿 뷰를 반환합니다. 일부 컨트롤러(예: PasswordChangeController)는 다른 기본 경로를 사용합니다.
| 컨트롤러 | 기본 경로 | 목적 |
|---|---|---|
DashboardController | /admin, /admin/, /admin/dashboard | Zero Trust 판정 분포, 인증 통계, 위협 이벤트를 포함한 보안 개요 |
PolicyCenterController | /admin/policy-center | 리소스, 빠른/수동/AI 작성, 목록, 시뮬레이터, 매트릭스를 다루는 통합 정책 관리 |
PolicyController | /admin/policies | 서버 측 정책 CRUD 경로. 상세/편집 흐름은 policydetails.html을 사용하고, 현재 목록 경험은 Policy Center가 중심입니다. |
PolicyBuilderController | /admin/policy-builder | 레거시 builder 컨트롤러입니다. 현재 OSS 트리에는 독립 admin/policy-builder.html 템플릿이 없고, 일상적인 작성 흐름은 Policy Center가 중심입니다. |
ResourceAdminController | /admin/workbench/resources | 레거시 resource-workbench 경로입니다. 컨트롤러는 남아 있지만 현재 OSS 리소스 검토 UI의 중심은 Policy Center이고 독립 admin/resource-workbench.html 템플릿은 없습니다. |
AccessCenterController | /admin/access-center | 사용자, 그룹, 역할, CRUD 세부 배정, 개요 분석을 위한 통합 접근 관리 |
SecurityMonitorController | /admin/security-monitor | 대시보드 드릴다운 필터를 지원하는 실시간 보안 이벤트 뷰어 |
UserManagementController | /admin/users | 그룹 배정을 포함한 사용자 CRUD |
GroupController | /admin/groups | 역할 배정을 포함한 그룹 CRUD |
RoleController | /admin/roles | 권한 배정을 포함한 역할 CRUD |
PermissionController | /admin/permissions | 관리 리소스 연결을 포함한 권한 CRUD |
RoleHierarchyController | /admin/role-hierarchies | 권한 상속을 위한 역할 계층 관리 |
PasswordPolicyController | /admin/password-policy | 비밀번호 정책 설정(길이, 복잡도, 특수문자) |
SystemSettingsController | /admin/system-settings | 현재 OSS 관리자 표면에서 노출되는 시스템 설정 |
AdminMenuController | /admin/menu-management | 현재 관리자 메뉴 트리 관리 |
BlacklistController | /admin/blacklist | 해제 워크플로우를 포함한 차단 사용자 관리 |
IpManagementController | /admin/ip-management | CIDR 지원과 만료 기능을 포함한 IP 접근 규칙(ALLOW/DENY) |
SessionManagementController | /admin/session-management | 강제 세션 무효화 및 CSV 내보내기를 포함한 활성 세션 추적 |
PasswordChangeController | /password-change | 정책 검증을 포함한 비밀번호 변경 폼 |
정책 센터
접근: /admin/policy-center
정책 센터는 현재 OSS 정책 작업의 통합 허브입니다. 현재 OSS 템플릿은 생성, 목록, 시뮬레이터, 매트릭스 네 가지 운영 표면을 노출합니다. 리소스 검토와 권한 정의는 생성 표면에 통합되어 있으며, 예전의 /admin/workbench/resources 및 /admin/policy-builder 경로는 코드에 남아 있어도 기본 OSS UI는 policy-center.html입니다.
생성 표면 (리소스 + 정책 작성)
생성 표면은 리소스 검토/정의와 현재 정책 작성 모드를 함께 제공합니다.
- 리소스 영역: 탐지된 리소스를 검토하고, 권한을 정의하고, 리소스를 제외 또는 복원하며, 선택한 리소스 맥락에서 정책 작성을 시작합니다.
- 빠른 모드: 역할-권한 매핑 기반의 빠른 생성 흐름입니다. 기본 ALLOW 정책을 만듭니다.
- 수동 모드: 동적 Target(URL/METHOD), Rule, Condition(SpEL)을 직접 편집하는 전체 정책 폼입니다.
Policy,PolicyTarget,PolicyRule,PolicyCondition엔티티를 직접 만듭니다. - AI 모드: 현재 역할, 권한, 조건, 기존 정책 맥락을 활용해 초안을 생성합니다. 생성된 초안도 일반 저장/승인/활성화 규칙을 그대로 따릅니다.
목록 표면
키워드 검색을 포함한 서버 측 페이지네이션 정책 목록입니다. 수정과 삭제는 POST 기반 폼 흐름과 상세 페이지를 통해 연결됩니다.
시뮬레이터 표면
PolicyCenterController가 노출하는 시뮬레이터 API를 통해 사용자, 권한, 조건 조합에 대한 가상 평가를 수행합니다.
매트릭스 표면
PolicyCenterController와 PolicyMatrixService가 노출하는 매트릭스 API를 통해 정책 매트릭스 화면을 구성합니다.
실시간 보안 현황
접근: /admin/security-monitor
audit_log 테이블 기반의 실시간 보안 이벤트 뷰어입니다. 모든 쿼리는 대규모 데이터셋을 처리할 수 있도록 DB 레벨 페이지네이션을 사용합니다.
대시보드 드릴다운
대시보드 링크는 사전 적용된 필터와 함께 보안 모니터로 이동합니다. 현재 대시보드는 Zero Trust 판정 카드와 보안 지표 카드를 모두 노출합니다.
| 대시보드 지표 | 필터 | 쿼리 |
|---|---|---|
| ZT Allow | ZT_ALLOW | eventCategory = 'SECURITY_DECISION' and decision = 'ALLOW' |
| ZT Challenge | ZT_CHALLENGE | eventCategory = 'SECURITY_DECISION' and decision = 'CHALLENGE' |
| ZT Block | ZT_BLOCK | eventCategory = 'SECURITY_DECISION' and decision = 'BLOCK' |
| ZT Escalate | ZT_ESCALATE | eventCategory = 'SECURITY_DECISION' and decision = 'ESCALATE' |
| 근무 외 접근 | AFTER_HOURS | 09:00-18:00 외 시간 또는 주말 이벤트 |
| AI 보안 분석 | SECURITY_DECISION | eventCategory = 'SECURITY_DECISION' |
| 관리자 오버라이드 | ADMIN_OVERRIDE | eventCategory = 'ADMIN_OVERRIDE' |
| 고유 IP 수 | DISTINCT_IP | 선택한 시간 구간의 클라이언트 IP distinct grouping |
| 평균 위험도 | HIGH_RISK | 현재 구현은 riskScore >= 0.4인 레코드로 드릴다운합니다. |
| 보안 오류 | SECURITY_ERROR | eventCategory = 'SECURITY_ERROR' |
대시보드
대시보드(/admin, /admin/, /admin/dashboard)는 최근 24시간 동안의 audit_log 집계를 바탕으로 종합 보안 개요를 제공합니다.
구성 요소
- 정책 현황: 전체 정책 수, 활성 리소스 수, 보호 범위
- Zero Trust 판정: ALLOW/CHALLENGE/BLOCK/ESCALATE/DENY 분포 도넛 차트와 ALLOW/CHALLENGE/BLOCK/ESCALATE 드릴다운 카드
- 인증 통계: 성공/실패 비율을 보여주는 반원형 게이지
- 보안 지표: 근무 외 접근, 보안 판정 이벤트, 관리자 오버라이드, 고유 IP, 고위험 레코드, 보안 오류로 이동하는 드릴다운 링크
- 위협 이벤트: 최근 고위험 이벤트와 보안 모니터 상세 링크
- 차단된 사용자: Zero Trust 엔진이 최근 차단한 사용자
접근 센터
접근: /admin/access-center
사용자 -> 그룹 -> 역할 -> 권한 전체 체인을 단일 탭 UI에서 관리합니다. 현재 템플릿은 Users, Groups, Roles, Overview 네 개의 탭을 제공합니다.
Users 탭
사용자를 검색하고 그룹 및 직접 역할 배정을 관리합니다. 사용자 상세에는 그룹, 직접 역할, 그룹 상속 역할, 유효 권한이 함께 표시됩니다. 현재 클라이언트는 직접 역할 배정 시 UserRolePermission을 통해 역할별 CRUD 하위셋도 저장할 수 있습니다.
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/admin/access-center/api/users | GET | 키워드 기반 사용자 검색 |
/admin/access-center/api/users/{userId}/detail | GET | 그룹, 직접 역할, 그룹 역할, 유효 권한을 포함한 사용자 상세 |
/admin/access-center/api/users/{userId}/groups | POST | 사용자 그룹 배정 업데이트 |
/admin/access-center/api/users/{userId}/roles | POST | 직접 역할 배정 및 해당 역할의 CRUD 하위셋 업데이트 |
Groups 탭
배정된 역할과 현재 멤버를 포함한 모든 그룹을 조회합니다. 그룹-역할 쌍별 CRUD 하위셋은 현재 클라이언트가 GroupRolePermission으로 저장할 수 있습니다.
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/admin/access-center/api/groups | GET | 전체 그룹 목록 |
/admin/access-center/api/groups/{groupId}/detail | GET | 역할과 멤버를 포함한 그룹 상세 |
/admin/access-center/api/groups/{groupId}/roles | POST | 그룹 역할 배정 및 해당 역할의 CRUD 하위셋 업데이트 |
Roles 탭
권한과 직접 배정된 사용자를 포함한 모든 역할을 조회합니다. 이 탭에서 역할의 권한 집합을 갱신합니다.
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/admin/access-center/api/roles | GET | 전체 역할 목록 |
/admin/access-center/api/roles/{roleId}/detail | GET | 권한과 직접 배정된 사용자를 포함한 역할 상세 |
/admin/access-center/api/roles/{roleId}/permissions | POST | 역할 권한 배정 업데이트 |
Overview 탭
사용자, 그룹, 역할, 권한 수와 함께 사용자 -> 그룹 -> 역할 -> 권한 구조를 설명하는 요약 다이어그램을 보여줍니다.
ID 및 접근 관리
사용자(/admin/users), 그룹(/admin/groups), 역할(/admin/roles), 권한(/admin/permissions)에 대한 표준 CRUD 작업입니다.
접근 체인은 사용자 -> 그룹 -> 역할 -> 권한입니다. 사용자는 그룹 멤버십과 직접 역할 배정을 통해 권한을 상속받습니다.
역할 계층
접근: /admin/role-hierarchies
상위 역할은 하위 역할의 모든 권한을 자동 상속합니다. 계층은 Spring Security의 RoleHierarchy가 해석하며, CustomDynamicAuthorizationManager의 런타임 평가에서도 고려됩니다.
비밀번호 정책
접근: /admin/password-policy
등록과 비밀번호 변경 흐름에서 사용하는 비밀번호 규칙을 설정합니다.
시스템 설정
접근: /admin/system-settings
현재 OSS 관리자 표면에 노출된 시스템 전역 IAM 설정입니다.
메뉴 관리
접근: /admin/menu-management
현재 관리자 내비게이션 구조를 관리합니다.
Zero Trust 운영
실시간 보안 현황
접근: /admin/security-monitor
시간 범위 필터(1h/6h/24h/3d), 카테고리 필터, 대용량 데이터를 위한 DB 페이지네이션을 포함한 실시간 감사 로그 뷰어입니다.
차단된 사용자
접근: /admin/blacklist
Zero Trust 엔진이 차단한 사용자를 관리합니다. 상태(BLOCKED, UNBLOCK_REQUESTED, RESOLVED, TIMEOUT_RESPONDED)별 필터와 관리자 해제 워크플로우를 지원합니다.
보안 관리
IP 관리
접근: /admin/ip-management
ALLOW/DENY 유형의 IP 기반 접근 규칙을 관리합니다. IPv4/IPv6와 CIDR 표기법을 지원하며, 선택적 만료일과 on/off 토글, CSV 내보내기를 제공합니다.
세션 관리
접근: /admin/session-management
페이지네이션과 검색을 포함해 활성 사용자 세션을 모니터링합니다. 세션 ID, 사용자명, 클라이언트 IP, User Agent, 로그인 시간, 마지막 활동을 표시하며, 단일 세션 또는 사용자 전체 세션 강제 무효화를 지원합니다. CSV 내보내기도 가능합니다.
비밀번호 정책
접근: /admin/password-policy
최소/최대 길이, 대문자, 소문자, 숫자, 특수문자 규칙을 설정합니다. 등록 및 비밀번호 변경 시 동일한 정책이 적용됩니다.
관리자 콘솔 아키텍처
현재 OSS 관리자 표면은 탐색 그룹과 운영 영역을 함께 제공합니다. 아래 박스는 현재 메뉴 트리와 주요 통합 작업 공간을 반영합니다.
시작 흐름
배포부터 완전한 동적 인가까지의 기본 흐름입니다.
| 단계 | 작업 | 세부 내용 |
|---|---|---|
| 1 | 애플리케이션 배포 | 리소스 스캐너가 모든 엔드포인트를 자동 탐색합니다. |
| 2 | Policy Center 열기 (생성 표면의 통합 리소스 영역) | 탐색된 리소스를 인라인 편집과 함께 검토합니다. |
| 3 | 권한 정의 | 인가가 필요한 리소스에서 "Define & Setup Policy"를 실행합니다. |
| 4 | 정책 생성 | 빠른 모드(역할-권한 매핑), 수동 모드(Target/Rule/Condition), AI 모드(자연어) 중 하나를 사용합니다. |
| 5 | 검증 | 핫 리로드로 정책이 즉시 반영됩니다. 서로 다른 사용자 역할로 테스트합니다. |
| 6 | 모니터링 | Dashboard와 Security Monitor에서 실시간 보안 가시성을 확인합니다. |
설정 속성
contexa:
iam:
admin:
rest-docs-path: /docs/index.html # REST API 문서 경로