AA 역할 레거시 분석 smoke #2
5 changed files with 320 additions and 0 deletions
|
|
@ -0,0 +1,3 @@
|
||||||
|
# runtime-role-matrix-live-20260714112301-v11-aa-001-attempt-1-run-d4b5dec6eef9
|
||||||
|
|
||||||
|
Forge 이슈 작업 브랜치 `forge/runtime-role-matrix-live-20260714112301-v11-aa-001-attempt-1-run-d4b5dec6eef9`.
|
||||||
115
role-aa/audit/business-rules.json
Normal file
115
role-aa/audit/business-rules.json
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
{
|
||||||
|
"document_id": "role-aa-business-rules-v1",
|
||||||
|
"role": "AA",
|
||||||
|
"created_date": "2026-07-14",
|
||||||
|
"version": "v1",
|
||||||
|
"business_rules": [
|
||||||
|
{
|
||||||
|
"id": "BR-001",
|
||||||
|
"name": "역할 식별",
|
||||||
|
"description": "AA 역할은 고유 ID로 식별된다",
|
||||||
|
"validation_criteria": [
|
||||||
|
"ID != null",
|
||||||
|
"ID > 0",
|
||||||
|
"ID is unique"
|
||||||
|
],
|
||||||
|
"test_cases": [
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR001-01",
|
||||||
|
"input": "ID = null",
|
||||||
|
"expected": "ValidationError"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR001-02",
|
||||||
|
"input": "ID = 0",
|
||||||
|
"expected": "ValidationError"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR001-03",
|
||||||
|
"input": "ID = 1",
|
||||||
|
"expected": "Valid"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "BR-002",
|
||||||
|
"name": "권한 검증",
|
||||||
|
"description": "AA 역할은 인가된 작업만 수행한다",
|
||||||
|
"validation_criteria": [
|
||||||
|
"auth_token != null",
|
||||||
|
"auth_token is valid",
|
||||||
|
"auth_token not expired"
|
||||||
|
],
|
||||||
|
"test_cases": [
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR002-01",
|
||||||
|
"input": "auth_token = null",
|
||||||
|
"expected": "UnauthorizedError"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR002-02",
|
||||||
|
"input": "auth_token = expired_token",
|
||||||
|
"expected": "TokenExpiredError"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR002-03",
|
||||||
|
"input": "auth_token = valid_token",
|
||||||
|
"expected": "Authorized"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "BR-003",
|
||||||
|
"name": "상태 관리",
|
||||||
|
"description": "AA 역할은 유효한 상태만 가진다",
|
||||||
|
"validation_criteria": [
|
||||||
|
"state ∈ {ACTIVE, INACTIVE, SUSPENDED}"
|
||||||
|
],
|
||||||
|
"test_cases": [
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR003-01",
|
||||||
|
"input": "state = 'ACTIVE'",
|
||||||
|
"expected": "Valid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR003-02",
|
||||||
|
"input": "state = 'INACTIVE'",
|
||||||
|
"expected": "Valid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR003-03",
|
||||||
|
"input": "state = 'SUSPENDED'",
|
||||||
|
"expected": "Valid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR003-04",
|
||||||
|
"input": "state = 'UNKNOWN'",
|
||||||
|
"expected": "ValidationError"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "BR-004",
|
||||||
|
"name": "감사 로깅",
|
||||||
|
"description": "모든 작업은 감사 로그에 기록된다",
|
||||||
|
"validation_criteria": [
|
||||||
|
"log_entry != null",
|
||||||
|
"log_entry.timestamp != null",
|
||||||
|
"log_entry.action != null",
|
||||||
|
"log_entry.actor != null"
|
||||||
|
],
|
||||||
|
"test_cases": [
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR004-01",
|
||||||
|
"input": "action without log",
|
||||||
|
"expected": "AuditLogCreated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tc_id": "TC-BR004-02",
|
||||||
|
"input": "log_entry missing timestamp",
|
||||||
|
"expected": "ValidationError"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
48
role-aa/audit/evidence/evidence-inventory.json
Normal file
48
role-aa/audit/evidence/evidence-inventory.json
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
{
|
||||||
|
"document_id": "role-aa-evidence-inventory-v1",
|
||||||
|
"role": "AA",
|
||||||
|
"created_date": "2026-07-14",
|
||||||
|
"version": "v1",
|
||||||
|
"evidence_locations": [
|
||||||
|
{
|
||||||
|
"id": "EV-001",
|
||||||
|
"name": "감사 로그",
|
||||||
|
"path": "role-aa/audit/logs/",
|
||||||
|
"type": "audit_log",
|
||||||
|
"retention_years": 7,
|
||||||
|
"access_level": "admin",
|
||||||
|
"format": "JSON",
|
||||||
|
"compression": "gzip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "EV-002",
|
||||||
|
"name": "분석 보고서",
|
||||||
|
"path": "role-aa/audit/reports/",
|
||||||
|
"type": "report",
|
||||||
|
"retention_years": 5,
|
||||||
|
"access_level": "audit_team",
|
||||||
|
"format": "PDF/Markdown",
|
||||||
|
"compression": "none"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "EV-003",
|
||||||
|
"name": "원천 데이터",
|
||||||
|
"path": "role-aa/audit/evidence/",
|
||||||
|
"type": "source_data",
|
||||||
|
"retention_years": 10,
|
||||||
|
"access_level": "compliance_team",
|
||||||
|
"format": "JSON/CSV",
|
||||||
|
"compression": "gzip"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "EV-004",
|
||||||
|
"name": "설정 이력",
|
||||||
|
"path": "role-aa/audit/config/",
|
||||||
|
"type": "config_history",
|
||||||
|
"retention_years": null,
|
||||||
|
"access_level": "admin",
|
||||||
|
"format": "YAML",
|
||||||
|
"compression": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
74
role-aa/audit/legacy-analysis-smoke.md
Normal file
74
role-aa/audit/legacy-analysis-smoke.md
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
# AA 역할 레거시 전환 분석 Smoke 문서
|
||||||
|
|
||||||
|
**문서 ID**: `role-aa-audit-legacy-smoke-v1`
|
||||||
|
**역할**: AA
|
||||||
|
**작성일**: 2026-07-14
|
||||||
|
**버전**: v1
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 개요
|
||||||
|
|
||||||
|
본 문서는 AA 역할의 레거시 시스템 전환 분석을 위한 입력 소스, 업무 규칙, 위험 영역, 증적 위치를 정리한 감사 추적 문서이다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 입력 소스 (Input Sources)
|
||||||
|
|
||||||
|
| ID | 소스명 | 유형 | 위치 | 설명 |
|
||||||
|
|----|--------|------|------|------|
|
||||||
|
| IN-001 | role-aa 스펙 | 스펙 문서 | `role-aa/spec/` | AA 역할의 기능 명세 |
|
||||||
|
| IN-002 | role-aa 도메인 모델 | 설계 문서 | `role-aa/domain/` | 도메인 클래스 정의 |
|
||||||
|
| IN-003 | role-aa API 계약 | API 문서 | `role-aa/api/` | REST/gRPC 인터페이스 정의 |
|
||||||
|
| IN-004 | role-aa 설정 | 설정 파일 | `role-aa/config/` | 환경별 설정값 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. 업무 규칙 (Business Rules)
|
||||||
|
|
||||||
|
| ID | 규칙명 | 설명 | 검증 기준 |
|
||||||
|
|----|--------|------|----------|
|
||||||
|
| BR-001 | 역할 식별 | AA 역할은 고유 ID로 식별된다 | ID != null, ID > 0 |
|
||||||
|
| BR-002 | 권한 검증 | AA 역할은 인가된 작업만 수행한다 | auth_token != null |
|
||||||
|
| BR-003 | 상태 관리 | AA 역할은 유효한 상태만 가진다 | state ∈ {ACTIVE, INACTIVE, SUSPENDED} |
|
||||||
|
| BR-004 | 감사 로깅 | 모든 작업은 감사 로그에 기록된다 | log_entry != null |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 위험 영역 (Risk Areas)
|
||||||
|
|
||||||
|
| ID | 위험명 | 설명 | 영향도 | 발생 확률 | 대응 |
|
||||||
|
|----|--------|------|--------|----------|------|
|
||||||
|
| RA-001 | 데이터 무결성 손실 | 레거시 데이터 마이그레이션 중 손상 | 높음 | 중간 | 트랜잭션 롤백 |
|
||||||
|
| RA-002 | 인증 우회 | 레거시 인증 로직 우회 가능 | 높음 | 낮음 | MFA 강제 적용 |
|
||||||
|
| RA-003 | 성능 저하 | 대량 데이터 처리 시 타임아웃 | 중간 | 중간 | 배치 분할 처리 |
|
||||||
|
| RA-004 | 감사 추적 공백 | 로그 미기록 시점 발생 | 중간 | 낮음 | 이중 로깅 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 증적 위치 (Evidence Locations)
|
||||||
|
|
||||||
|
| ID | 위치 | 유형 | 보존 기간 | 접근 권한 |
|
||||||
|
|----|------|------|----------|----------|
|
||||||
|
| EV-001 | `role-aa/audit/logs/` | 감사 로그 | 7년 | 관리자 |
|
||||||
|
| EV-002 | `role-aa/audit/reports/` | 분석 보고서 | 5년 | 감사팀 |
|
||||||
|
| EV-003 | `role-aa/audit/evidence/` | 원천 데이터 | 10년 |合规팀 |
|
||||||
|
| EV-004 | `role-aa/audit/config/` | 설정 이력 | 영구 | 관리자 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 감사 추적 체크리스트
|
||||||
|
|
||||||
|
- [ ] 입력 소스 완전성 검증
|
||||||
|
- [ ] 업무 규칙 테스트 커버리지 100%
|
||||||
|
- [ ] 위험 영역 완화措施 구현 확인
|
||||||
|
- [ ] 증적 위치 접근 로그 감사
|
||||||
|
- [ ] 레거시 전환 후 데이터 무결성 검증
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. 변경 이력
|
||||||
|
|
||||||
|
| 버전 | 날짜 | 작성자 | 변경 내용 |
|
||||||
|
|------|------|--------|----------|
|
||||||
|
| v1 | 2026-07-14 | AA | 초기 작성 |
|
||||||
80
role-aa/audit/risk-register.json
Normal file
80
role-aa/audit/risk-register.json
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
{
|
||||||
|
"document_id": "role-aa-risk-register-v1",
|
||||||
|
"role": "AA",
|
||||||
|
"created_date": "2026-07-14",
|
||||||
|
"version": "v1",
|
||||||
|
"risks": [
|
||||||
|
{
|
||||||
|
"id": "RA-001",
|
||||||
|
"name": "데이터 무결성 손실",
|
||||||
|
"description": "레거시 데이터 마이그레이션 중 손상",
|
||||||
|
"impact": "high",
|
||||||
|
"probability": "medium",
|
||||||
|
"risk_score": 6,
|
||||||
|
"mitigation": {
|
||||||
|
"strategy": "트랜잭션 롤백",
|
||||||
|
"controls": [
|
||||||
|
"마이그레이션 전 백업",
|
||||||
|
"증분 마이그레이션",
|
||||||
|
"무결성 검증 체크섬"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"owner": "AA",
|
||||||
|
"status": "open"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "RA-002",
|
||||||
|
"name": "인증 우회",
|
||||||
|
"description": "레거시 인증 로직 우회 가능",
|
||||||
|
"impact": "high",
|
||||||
|
"probability": "low",
|
||||||
|
"risk_score": 4,
|
||||||
|
"mitigation": {
|
||||||
|
"strategy": "MFA 강제 적용",
|
||||||
|
"controls": [
|
||||||
|
"MFA 필수화",
|
||||||
|
"세션 타임아웃 강화",
|
||||||
|
"비정상 접근 탐지"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"owner": "AA",
|
||||||
|
"status": "open"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "RA-003",
|
||||||
|
"name": "성능 저하",
|
||||||
|
"description": "대량 데이터 처리 시 타임아웃",
|
||||||
|
"impact": "medium",
|
||||||
|
"probability": "medium",
|
||||||
|
"risk_score": 4,
|
||||||
|
"mitigation": {
|
||||||
|
"strategy": "배치 분할 처리",
|
||||||
|
"controls": [
|
||||||
|
"페이지네이션 적용",
|
||||||
|
"비동기 처리",
|
||||||
|
"캐싱 전략"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"owner": "AA",
|
||||||
|
"status": "open"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "RA-004",
|
||||||
|
"name": "감사 추적 공백",
|
||||||
|
"description": "로그 미기록 시점 발생",
|
||||||
|
"impact": "medium",
|
||||||
|
"probability": "low",
|
||||||
|
"risk_score": 2,
|
||||||
|
"mitigation": {
|
||||||
|
"strategy": "이중 로깅",
|
||||||
|
"controls": [
|
||||||
|
"메인 로그 + 백업 로그",
|
||||||
|
"로그shipper 적용",
|
||||||
|
"정기적 로그 무결성 검증"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"owner": "AA",
|
||||||
|
"status": "open"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue