Repository navigation
GnuBoard7 Custom Module — Initial Public Release
Glitter Policy Engine v0.2.0은 GnuBoard7 환경에서
정책을 정의하고, 검증하고, 게시하고, 평가할 수 있는 정책 관리 및 실행 모듈의 최초 공개 릴리스입니다.
정책 초안(Draft), 불변 게시 리비전(Revision), JSON 기반 정책 DSL, 평가 시뮬레이터, 평가 이력, 리비전 변경 비교 및 무결성 검증을 제공합니다.
주요 기능
1. 정책 관리 및 Draft
- 정책 생성 및 관리
- 정책별 Draft 저장 및 수정
- JSON 기반 정책 DSL 작성
- 게시 전 DSL 유효성 검증
- 규칙 수, 조건 수, 최대 중첩 깊이 등의 검증 지표 제공
lock_version기반 Optimistic Locking으로 동시 수정 충돌 감지
2. 정책 게시 및 Revision 관리
- 검증된 Draft를 Published Revision으로 게시
- 정책별 Revision 버전 관리
- 게시된 Revision의 수정·삭제 방지
(policy_id, version)유일성 보장- Revision 생성과
published_version갱신의 트랜잭션 일관성 유지 - Repository 직접 호출 경로에서도 엄격한 DSL 검증 적용
3. Revision 무결성 검증
- SHA-256 기반 정책 정의 해시
- Definition Hash v1/v2 지원
- JSON 객체 키 정규화 및 해시 버전별 처리
- Hash 불일치 및 지원하지 않는 버전 감지
- 게시 Revision 무결성 실패 시 정책 평가 차단
4. 정책 평가 엔진
- JSON DSL 기반 규칙 평가
ALLOW,DENY,INDETERMINATE판정- 규칙 일치 여부 및 평가 사유 제공
- 평가 결과의 Revision 버전 추적
- 비정상 정의, 무결성 실패 및 평가 예외에 대한 Fail-closed 처리
- 평가 시뮬레이터 제공
5. JSON 입력 계약 강화
정책 평가 요청의 subject, resource, context 입력 검증을 강화했습니다.
subject,resource: 필수 JSON 객체- 빈 객체
{}허용 - JSON 배열
[]및 비어 있지 않은 배열 거부 - 문자열, 숫자, 불리언 등 비객체 입력 거부
context: 생략 및null허용context에 값이 제공되면 JSON 객체만 허용- 잘못된 JSON 및 필수 필드 누락 검증
- 비 JSON 요청의 리스트 배열 우회 방지
6. Revision Diff
- 현재 게시 Revision과 Draft의 변경 사항 비교
- 규칙 ID 기반 변경 식별
- 필드 단위 변경 경로 제공
- 변경 전후 값 비교
- Revision 무결성 확인 후 Diff 수행
- 응답 크기 제한 적용
7. 평가 이력
- 정책 평가 결과 및 판정 사유 기록
- 정책과 Revision 버전 추적
- 일치한 규칙 및 평가 소요 시간 확인
- 평가 이력 조회용 관리자 UI 제공
- 원본 Subject/Resource JSON을 평가 이력에 저장하지 않는 구조
8. 관리자 UI 및 권한 통합
GnuBoard7 관리자 환경과 통합되는 정책 관리 인터페이스를 제공합니다.
- 정책 목록 및 관리
- Draft 편집 및 검증
- 정책 게시
- Revision Diff
- 평가 시뮬레이터
- 평가 이력 조회
API는 G7 인증 및 관리자 권한 체계와 통합됩니다.
주요 권한:
policies.readpolicies.createpolicies.updatepolicies.publishevaluations.readevaluations.simulate
9. 운영 진단
PolicyProductionDiagnosticService를 통해 다음 항목을 진단할 수 있습니다.
- 정책 테이블 및 스키마 상태
- Migration 적용 상태
- Definition Hash 버전
- 게시 Revision 무결성
- 누락된 게시 Revision
- 진단 대상 및 실행 시간 제한
- 읽기 전용 운영 진단
기본 진단은 not_run 상태를 반환하며, 명시적으로 실행한 경우에만 운영 데이터 조회를 수행합니다.
검증 결과
v0.2.0은 실제 GnuBoard7 운영 환경에서 다음 항목을 검증했습니다.
| 검증 항목 | 결과 |
|---|---|
| 공식 G7 Module Lifecycle 설치·업데이트 | PASS |
| 모듈 활성화 및 API Route 등록 | PASS |
| 정책 생성 및 Draft 검증 | PASS |
| Revision v1/v2 게시 | PASS |
| Revision Diff | PASS |
| ALLOW / DENY 정책 평가 | PASS |
| 평가 이력 기록 및 조회 | PASS |
| JSON 객체 입력 계약 | PASS |
| Active/Bundled 전체 파일 정합성 | PASS |
| 게시 Revision Hash 무결성 진단 | PASS |
| PHP 회귀 테스트 164 assertions | PASS |
| PHP 구문 검사 | PASS |
운영 진단에서 현재 게시된 Revision의 Hash 무결성 검증이 성공했으며, 확인된 무결성 실패는 없었습니다.
알려진 검증 제한
다음 항목은 이번 릴리스에서 코드 수준 또는 제한된 운영 검증만 완료했으며, 추가적인 외부 HTTP·경쟁 조건 검증이 필요합니다.
- 외부 HTTP 환경의 인증·인가 상태 코드(401/403)
- 외부 HTTP 입력 검증 응답(422)
- 권한별 실제 데이터 접근 격리
- 동시 Publish 상황의 실제 MariaDB Lock 경쟁
- 다양한 배포 환경에서의 호환성 검증
따라서 초기 운영 적용 시 관리자 접근 범위를 제한하고, 서비스 공개 범위에 맞는 추가 인증·인가 검증을 권장합니다.
호환 환경
- GnuBoard7
- PHP 8.3 이상
- Laravel 12 기반 G7 Runtime
- MariaDB 10.11 계열 검증
- G7 Custom Module Lifecycle
배포 정보
- Module:
glitter-policy_engine - Version:
v0.2.0 - Release Type: Initial Public Release
- Repository: https://github.com/glitter-node/glitter-policy_engine
- Tag: https://github.com/glitter-node/glitter-policy_engine/releases/tag/v0.2.0
- License: 저장소의
LICENSE파일 참조
Glitter Policy Engine v0.2.0은 정책의 작성, 검증, 게시, 평가, 이력 관리 및
무결성 검증을 하나의 GnuBoard7 Custom Module로 통합한 최초 공개 버전입니다.