← 목록
엔터프라이즈 2026-06-15 3KB 읽기 3분

요청: 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 엔드포인트 추가