요청: enterprise-p3-위임-abac-캐시
- 날짜: 2026-06-15 20:11:12
- 작업 경로: /Users/ef/CrownyOS/crownyc
요청 본문
크라우니 엔터프라이즈 P3 — 역할 시간제한 위임 + ABAC 컨텍스트 + API 캐싱 구현
관련 산출
(클로드가 작업 결과를 이어 기록)
완료 결과
P3-1 역할 시간제한 위임
modules/보안.한선:_위임DB테이블 추가 (위임자/수임자/역할/모듈/만료시각/회사코드/상태)- 함수:
역할위임(),위임취소(),위임유효확인(),위임포함권한확인() - 만료시각 = 현재시간() + 만료초 → 조회 시 지금 <= 만료시각 조건 검사
- 회사코드 멀티테넌시 격리 적용
- 서버.한선 API:
POST /api/security/delegate,POST /api/security/delegate/cancel,GET /api/security/delegate/check
P3-2 ABAC 컨텍스트 속성
_사용자역할DB스키마에 "부서코드"/"데이터등급접근"(1~4)/"허용지역" 슬롯 추가- 함수:
사용자ABAC속성등록(),사용자ABAC조회(),고위험모듈등급요구(),ABAC권한확인(),ABAC접근검증() - 4상균형3진 결과: T=1허용/O=0조건부/A=-1완전거부
- 재무/인사 등급3+, 보안/시스템 등급4+, 나머지 등급1+ 정책
- 서버.한선 API:
POST /api/security/abac/attr,GET /api/security/abac
P3-3 API 응답 캐싱
_캐시DB맵 (복합키=회사코드+":"+쿼리키 → JSON값, TTL 만료시각)- 함수:
캐시조회(),캐시저장(),캐시무효화_회사(),캐시상태() - 적용 엔드포인트:
/api/dashboard,/api/finance(TTL 60초) - POST처리 진입 시 해당 회사 캐시 자동 무효화
- 맵 729 상한 방어: 캐시키최대=300, 초과 시 저장 스킵
- 서버.한선 API:
GET /api/security/cache/status
검증 결과
- 컴파일: OK (13MB .toau)
- 시나리오 (a) 위임→만료전 허용: PASS (1)
- 시나리오 (a) 만료된 위임 거부: PASS (0)
- 시나리오 (b) 등급2 재무거부: PASS (0)
- 시나리오 (b) 등급3 재무허용: PASS (1)
- 시나리오 (b) 뷰어+등급3 쓰기거부: PASS (-1)
- 시나리오 (c) 캐시 2회 조회 히트: PASS
- 시나리오 (c) 무효화 후 MISS: PASS
- 멀티테넌시 격리: PASS (COMPANY_A=1, COMPANY_B=0)
변경 파일
/Users/ef/crowny-enterprise/modules/보안.한선— P3 함수 추가 (~280줄)/Users/ef/crowny-enterprise/modules/보안.rpn.한선— RPN 정본 추가/Users/ef/crowny-enterprise/서버.한선— 캐시 적용 + 위임/ABAC API 엔드포인트 추가