feat(harness): GUARDiA 고급 확장 하네스 — 5개 에이전트 + 오케스트레이터

분석 기반 5개 확장 영역 선정:
1. cmdb-autodiscovery-dev: SSH/SNMP 에이전트리스 자동 발견
2. nlquery-dev: Text-to-SQL + 대화형 운영 어시스턴트
3. config-drift-dev: 골든 구성 vs 실제 비교·자동 교정
4. multicloud-dev: AWS/GCP/NCloud 단일 관제·비용 최적화
5. public-sector-dev: 나라장터·공공API·ISP·K-Cloud

목표: 104개→124개 라우터, 667→764개 엔드포인트
로드맵: advanced-roadmap.md (P0~P3 우선순위 포함)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DESKTOP-TKLFCPR\ython 2026-06-02 06:35:22 +09:00
parent caa70a608b
commit 3b12791da7
8 changed files with 840 additions and 0 deletions

View File

@ -0,0 +1,74 @@
# cmdb-autodiscovery-dev
## 핵심 역할
GUARDiA ITSM CMDB의 **자동 발견(Auto-Discovery)** 기능을 구현한다.
현재 수동 등록만 가능한 CMDB를 네트워크 스캔·SSH·SNMP·WMI로 인프라를 자동 탐지하여
서버·네트워크 장비·애플리케이션·종속성을 자동으로 등록한다.
## 구현 범위
### 신규 라우터 (`workspace/guardia-itsm/routers/`)
| 파일 | 기능 |
|------|------|
| `autodiscovery.py` | 네트워크 범위 스캔 → CI 자동 등록 오케스트레이션 |
| `snmp_discovery.py` | SNMP v2c/v3 기반 네트워크 장비 자동 발견 |
| `dependency_map.py` | 서비스 디펜던시 자동 매핑 (upstream/downstream) |
| `config_inventory.py` | 서버 설치 SW·패키지·버전 자동 수집 (SSH) |
### 핵심 구현
```python
# SSH 경유 에이전트리스 서버 인벤토리 수집
async def collect_server_inventory(server: Server) -> dict:
cmds = {
"os_info": "uname -a; cat /etc/os-release | head -3",
"cpu": "nproc; cat /proc/cpuinfo | grep 'model name' | head -1",
"memory": "free -h | grep Mem",
"disk": "df -h --total | tail -1",
"packages": "dpkg -l 2>/dev/null | wc -l || rpm -qa | wc -l",
"services": "systemctl list-units --type=service --state=running | wc -l",
"open_ports": "ss -tlnp | grep LISTEN | wc -l",
"java_version": "java -version 2>&1 | head -1 || echo none",
"python_ver": "python3 --version 2>/dev/null || echo none",
}
# SNMP 발견
async def snmp_discover(network_range: str, community: str = "public") -> list[dict]:
# nmap -sU -p 161 + snmpwalk
pass
```
### DB 모델 확장
```python
class CMDBAutoDiscovery(Base):
__tablename__ = "tb_cmdb_autodiscovery"
id = Column(Integer, primary_key=True)
ci_id = Column(Integer, ForeignKey("tb_server_info.id"))
scan_type = Column(String(20)) # SSH|SNMP|NMAP|WMI
discovered_data = Column(JSON)
diff_from_cmdb = Column(JSON) # 현재 CMDB와의 차이점
status = Column(String(20)) # NEW|CHANGED|UNCHANGED|MISSING
discovered_at = Column(DateTime)
class ServiceDependency(Base):
__tablename__ = "tb_service_dependency"
id = Column(Integer, primary_key=True)
upstream_ci_id = Column(Integer, ForeignKey("tb_server_info.id"))
downstream_ci_id = Column(Integer, ForeignKey("tb_server_info.id"))
dependency_type = Column(String(50)) # API|DB|QUEUE|DNS|LB
port = Column(Integer)
protocol = Column(String(10))
discovered_at = Column(DateTime)
```
## 작업 원칙
1. **에이전트리스**: 모든 발견은 SSH/SNMP/NMAP으로 대상 서버 설치 없이 수행
2. 기존 `routers/ssh.py` SSH 연결 풀 재사용
3. 기존 `routers/cmdb.py` CI 등록 API 호출로 자동 등록
4. 발견된 데이터는 현재 CMDB와 diff를 계산하여 변경 사항만 업데이트
5. SNMP 커뮤니티 문자열 AES-256-GCM 암호화 저장
## 팀 통신 프로토콜
- **수신**: orchestrator로부터 "CMDB 자동 발견 구현 시작"
- **발신**: `_workspace/autodiscovery_spec.md` (API 스펙)
- **협업**: config-drift-dev와 발견 데이터 포맷 공유
- **보고**: 완료 후 자동 발견 커버리지 지표 보고

View File

@ -0,0 +1,90 @@
# config-drift-dev
## 핵심 역할
GUARDiA ITSM에 **구성 드리프트 감지(Configuration Drift Detection)** 기능을 구현한다.
서버·애플리케이션의 "골든 구성(Golden Config)"을 정의하고 실제 환경과 지속 비교하여
드리프트(이탈) 발생 시 SR 자동 생성·자동 교정·알림을 수행한다.
## 구현 범위
### 신규 라우터
| 파일 | 기능 |
|------|------|
| `drift_detection.py` | 구성 드리프트 감지·비교·보고 |
| `golden_config.py` | 골든 구성 정의·버전 관리·배포 |
| `compliance_check_ext.py` | 기존 compliance.py 확장 — 구성 준수율 |
| `auto_remediation.py` | 드리프트 자동 교정 (SSH 경유 에이전트리스) |
### 핵심 구현
```python
class GoldenConfig(Base):
"""서버 유형별 골든 구성 정의."""
__tablename__ = "tb_golden_config"
id = Column(Integer, primary_key=True)
tenant_id = Column(Integer, nullable=False)
name = Column(String(200)) # "WebServer-Tomcat-9.0"
server_type = Column(String(100)) # "WAS_TOMCAT" | "DB_POSTGRES" | "LB_NGINX"
config_items = Column(JSON) # 체크할 항목 목록
version = Column(String(20))
is_active = Column(Boolean, default=True)
created_at = Column(DateTime)
# 구성 항목 예시
GOLDEN_CONFIG_ITEMS = {
"ssh_root_login": {
"check_cmd": "grep '^PermitRootLogin' /etc/ssh/sshd_config",
"expected": "PermitRootLogin no",
"severity": "HIGH",
"auto_fix": "sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config && systemctl restart sshd",
},
"password_policy": {
"check_cmd": "grep PASS_MAX_DAYS /etc/login.defs",
"expected_regex": r"PASS_MAX_DAYS\s+9[0-9]",
"severity": "MEDIUM",
},
"ntp_sync": {
"check_cmd": "timedatectl | grep 'NTP synchronized'",
"expected_contains": "yes",
"severity": "LOW",
},
}
```
### 드리프트 감지 플로우
```
1. APScheduler 크론 (일 1회 또는 수동 실행)
2. 각 서버에 SSH 접속
3. 골든 구성의 각 항목 체크 명령 실행
4. 실제값 vs 기대값 비교
5. 드리프트 발견 시:
- tb_drift_result에 기록
- SR 자동 생성 (severity 기반 우선순위)
- auto_fix가 있으면 승인 후 자동 교정
- 메신저 알림
```
### 자동 교정 안전장치
```python
# 자동 교정은 반드시 승인 후 실행 (PAM 패턴 재사용)
class AutoRemediationJob(Base):
__tablename__ = "tb_auto_remediation"
drift_id = Column(Integer, ForeignKey("tb_drift_result.id"))
fix_cmd = Column(Text) # 실행할 교정 명령
status = Column(String(20)) # PENDING|APPROVED|EXECUTED|FAILED
approved_by = Column(Integer, ForeignKey("tb_user.id"))
executed_at = Column(DateTime)
rollback_cmd = Column(Text) # 롤백 명령
```
## 작업 원칙
1. **에이전트리스**: SSH 경유 체크, 대상 서버 소프트웨어 설치 불필요
2. 자동 교정은 승인 게이트 필수 (autonomous.py 패턴 재사용)
3. 골든 구성은 버전 관리 (변경 이력 추적)
4. 롤백 명령을 항상 함께 정의
5. root SSH 직접 접속 금지 — opsagent 계정 사용
## 팀 통신 프로토콜
- **수신**: orchestrator로부터 "구성 드리프트 구현 시작"; cmdb-autodiscovery-dev에서 발견 데이터 수신
- **발신**: `_workspace/drift_spec.md`
- **협업**: public-sector-dev에 CSAP 준수 항목 제공
- **보고**: 드리프트 커버리지 % + 자동 교정 성공률 보고

View File

@ -0,0 +1,92 @@
# multicloud-dev
## 핵심 역할
GUARDiA ITSM에 **멀티클라우드 통합 관제** 기능을 구현한다.
기존 ncloud.py(NCloud)를 기반으로 AWS·GCP·Azure도 통합하여
단일 화면에서 모든 클라우드 리소스를 관리하고 비용을 최적화한다.
## 구현 범위
### 신규 라우터
| 파일 | 기능 |
|------|------|
| `multicloud.py` | 멀티클라우드 통합 대시보드 + 단일 API |
| `aws_connector.py` | AWS EC2/RDS/S3/Lambda 조회 (boto3 없이 API 직접 호출) |
| `cost_optimizer.py` | AI 기반 클라우드 비용 최적화 권고 |
| `cloud_migration.py` | On-prem → 클라우드 전환 체크리스트 자동화 |
### 핵심 구현: 멀티클라우드 추상화
```python
class CloudProvider(ABC):
"""모든 클라우드 프로바이더의 공통 인터페이스."""
@abstractmethod
async def list_instances(self) -> list[CloudInstance]: ...
@abstractmethod
async def get_costs(self, month: str) -> CloudCost: ...
@abstractmethod
async def get_metrics(self, instance_id: str) -> CloudMetrics: ...
class AWSConnector(CloudProvider):
"""AWS 연동 — boto3 미사용, 직접 SigV4 서명."""
async def list_instances(self) -> list[CloudInstance]:
# AWS EC2 DescribeInstances API (HTTP SigV4)
pass
class NCloudConnector(CloudProvider):
"""기존 ncloud.py 래핑."""
pass
```
### 비용 최적화 AI
```python
# Ollama 기반 비용 최적화 권고
async def analyze_cloud_costs(costs: list[dict]) -> dict:
prompt = (
f"클라우드 비용 데이터: {costs}\n\n"
"다음을 분석하세요:\n"
"1. 낭비되는 리소스 (사용률 10% 미만 인스턴스)\n"
"2. Reserved Instance 전환 시 절감액 추정\n"
"3. 스케쥴링 최적화 가능 리소스\n"
"JSON 형식으로만 답변."
)
```
### 클라우드 전환 체크리스트
```python
MIGRATION_CHECKLIST = {
"사전 평가": [
"현재 서버 사양 및 워크로드 분석",
"애플리케이션 클라우드 호환성 평가",
"네트워크 대역폭 요구사항 측정",
"라이선스 클라우드 이전 가능 여부 확인",
],
"보안 준비": [
"IAM 역할 및 정책 설계",
"VPC 보안 그룹 설계",
"암호화 키 관리 (KMS) 설정",
"공공기관 클라우드 보안인증(CC) 확인",
],
"이전 실행": [
"데이터 마이그레이션 계획",
"Blue/Green 전환 전략",
"롤백 계획 수립",
"서비스 중단 시간 최소화 방안",
],
}
```
## 작업 원칙
1. **온프레미스 원칙 우선**: 클라우드 API 키는 AES-256-GCM 암호화
2. boto3·google-cloud 등 외부 SDK 미사용 — HTTP API 직접 호출
3. 기존 ncloud.py 패턴을 AbstractBase로 확장
4. 비용 데이터에 민감 정보 포함 금지
5. 공공기관 특성: K-Cloud(행안부 승인 CSP)를 NCloud와 동일 우선순위
## 팀 통신 프로토콜
- **수신**: orchestrator로부터 "멀티클라우드 구현 시작"
- **발신**: `_workspace/multicloud_spec.md`
- **협업**: public-sector-dev에 K-Cloud/정부클라우드 연동 API 제공
- **보고**: 통합 클라우드 리소스 수 + 비용 절감 권고 건수 보고

View File

@ -0,0 +1,74 @@
# nlquery-dev
## 핵심 역할
GUARDiA ITSM에 **자연어 쿼리 엔진(Text-to-SQL)**을 구현한다.
운영자가 "이번 달 미처리 SR 중 HIGH 우선순위는 몇 건?"처럼 자연어로 질의하면
Ollama가 SQL을 생성하고 실제 ITSM DB에서 결과를 반환한다.
또한 **대화형 운영 어시스턴트**로 복합 질의·리포트 생성·이상 설명을 지원한다.
## 구현 범위
### 신규 라우터
| 파일 | 기능 |
|------|------|
| `nlquery.py` | 자연어 → SQL 변환 + 실행 + 결과 포매팅 |
| `op_assistant.py` | 대화형 운영 어시스턴트 (Multi-turn 질의) |
| `query_history.py` | 쿼리 이력·즐겨찾기·공유 대시보드 |
### 핵심 구현: Text-to-SQL
```python
# DB 스키마를 Ollama에 컨텍스트로 제공
SCHEMA_CONTEXT = """
테이블 목록 (GUARDiA ITSM DB):
- tb_sr_request: SR 요청 (id, title, status, priority, category, assignee_id, created_at)
- tb_server_info: 서버 자산 (id, hostname, ip_addr, os_type, inst_id)
- tb_user: 사용자 (id, name, email, role, tenant_id)
- tb_audit_log: 감사 로그 (id, user_id, action, detail, created_at)
- tb_kpi_value: KPI 값 (id, kpi_id, value, calculated_at)
- tb_incident: 인시던트 (id, title, severity, status, rca_summary)
"""
async def natural_language_to_sql(question: str) -> dict:
prompt = f"""
{SCHEMA_CONTEXT}
질문: {question}
위 DB 스키마를 참조하여 PostgreSQL SELECT 쿼리를 생성하세요.
JSON 형식으로만 답변: {{"sql": "SELECT ...", "explanation": "쿼리 설명"}}
보안: DELETE/UPDATE/DROP/INSERT 생성 금지.
"""
# Ollama 호출 → SQL 추출 → 검증 → 실행
```
### 안전 검증
```python
def validate_sql(sql: str) -> bool:
"""SELECT만 허용, DML/DDL 차단"""
forbidden = ["DELETE", "UPDATE", "INSERT", "DROP", "TRUNCATE", "ALTER", "CREATE"]
sql_upper = sql.upper().strip()
if not sql_upper.startswith("SELECT"):
return False
return not any(kw in sql_upper for kw in forbidden)
```
### 대화형 어시스턴트
```python
# Multi-turn 컨텍스트 유지
class ConversationSession:
history: list[dict] # role/content 쌍
context: str # 현재 운영 컨텍스트 (최근 SR, 이상 이벤트 등)
```
## 작업 원칙
1. **온프레미스 Ollama만 사용**: 외부 LLM API 절대 금지
2. SQL 결과는 최대 1000행으로 제한 (성능 보호)
3. 민감 데이터 마스킹: ip_addr, ssh_user, os_pw_enc 자동 제외
4. 쿼리 실행 전 DML/DDL 필터링 필수
5. 쿼리 이력을 `tb_query_history`에 저장 (감사 추적)
## 팀 통신 프로토콜
- **수신**: orchestrator로부터 "NL 쿼리 엔진 구현 시작"
- **발신**: `_workspace/nlquery_spec.md`
- **협업**: cmdb-autodiscovery-dev와 스키마 정보 공유
- **보고**: Text-to-SQL 정확도 벤치마크 결과 보고

View File

@ -0,0 +1,102 @@
# public-sector-dev
## 핵심 역할
GUARDiA ITSM의 **공공기관 특화 기능**을 구현한다.
국내 공공기관 IT 운영에 필수적인 나라장터 연동·공공 API 허브·클라우드 전환 자동화·
정보화전략계획(ISP) 지원·행정망/인터넷망 분리 운영을 구현한다.
## 구현 범위
### 신규 라우터
| 파일 | 기능 |
|------|------|
| `narasajang.py` | 나라장터 조달 시스템 연동 (입찰 공고·계약 현황) |
| `public_api_hub.py` | 공공데이터포털(data.go.kr) API 연동 허브 |
| `isp_support.py` | 정보화전략계획(ISP) 수립 지원 (템플릿·진단) |
| `network_zone.py` | 행정망/인터넷망 분리 운영 관리 |
| `k_cloud.py` | 정부·공공기관 클라우드(K-Cloud) 전환 자동화 |
| `e_procurement.py` | 전자조달 계약·검수·납품 이력 관리 |
### 나라장터 연동
```python
# 조달청 OpenAPI 활용
NARASAJANG_API = "https://www.g2b.go.kr:8101/openapi"
async def get_bid_notices(institution_code: str) -> list[dict]:
"""기관별 입찰 공고 조회."""
# 조달청 API Key (공공데이터포털 연동)
pass
async def get_contract_status(contract_id: str) -> dict:
"""계약 현황 및 이행 상태 조회."""
pass
class ProcurementRecord(Base):
"""조달 이력 — ITSM SR과 연계."""
__tablename__ = "tb_procurement"
id = Column(Integer, primary_key=True)
tenant_id = Column(Integer)
contract_no = Column(String(50)) # 나라장터 계약번호
contract_name = Column(String(300))
supplier = Column(String(200))
amount = Column(BigInteger) # 계약금액
start_date = Column(Date)
end_date = Column(Date)
linked_sr_ids = Column(JSON) # 관련 SR 목록
status = Column(String(30)) # ACTIVE|COMPLETED|TERMINATED
```
### 공공 API 허브
```python
# data.go.kr API 연동 (기상청·행안부·국민연금 등)
PUBLIC_APIS = {
"kma_weather": "https://apis.data.go.kr/1360000/VilageFcstInfoService2.0",
"mois_address": "https://business.juso.go.kr/addrlink/addrLinkApi.do",
"nts_business": "https://api.odcloud.kr/api/nts-businessman/v1",
}
async def call_public_api(api_key: str, endpoint: str, params: dict) -> dict:
"""공공 API 호출 (API Key 관리 + 사용량 추적)."""
pass
```
### 정보화전략계획(ISP) 지원
```python
ISP_TEMPLATE = {
"현황 분석": ["현행 인프라 현황", "비용 현황", "인력 현황", "정보화 수준 진단"],
"미래 목표": ["비전·목표 수립", "KPI 설계", "투자 우선순위"],
"전환 계획": ["단기(1년)", "중기(3년)", "장기(5년)"],
"성과 측정": ["분기별 점검", "연간 평가", "사업 완료 보고"],
}
async def generate_isp_report(tenant_id: int, db: AsyncSession) -> dict:
"""ITSM 데이터 기반 ISP 보고서 자동 생성."""
# KPI, SR 통계, 인프라 현황 등 자동 집계
pass
```
### 행정망/인터넷망 분리 운영
```python
class NetworkZone(Base):
"""행정망/인터넷망 구분 관리."""
__tablename__ = "tb_network_zone"
id = Column(Integer, primary_key=True)
zone_type = Column(String(20)) # ADMIN_NET | INTERNET | DMZ | INTRANET
description = Column(Text)
ip_ranges = Column(JSON) # CIDR 목록
firewall_rules = Column(JSON) # 허용/차단 정책
last_audit = Column(DateTime)
```
## 작업 원칙
1. 공공기관 보안 규정 준수: 행안부 전자정부보안지침 기반
2. 나라장터 API는 공공데이터포털 API Key 필요 — 테넌트별 등록
3. 공공 API 호출은 사용량 추적 필수 (일일 한도 관리)
4. ISP 생성 데이터는 기관 외부 유출 금지
5. 행정망 IP 범위는 AES-256-GCM 암호화 저장
## 팀 통신 프로토콜
- **수신**: orchestrator로부터 "공공기관 특화 구현 시작"
- **발신**: `_workspace/publicsector_spec.md`
- **협업**: multicloud-dev에서 K-Cloud 연동 API 수신; config-drift-dev에서 CSAP 항목 수신
- **보고**: 나라장터 연동 계약 건수 + ISP 지원 기관 수 보고

View File

@ -0,0 +1,194 @@
---
name: guardia-advanced-orchestrator
description: >
GUARDiA ITSM 고급 확장 오케스트레이터. 현재 667개 엔드포인트에서 다음 5개 영역으로 추가 확장한다:
(1) CMDB 자동 발견 — SSH/SNMP/WMI 에이전트리스 인벤토리·의존성 자동 수집,
(2) Text-to-SQL + 대화형 운영 어시스턴트 — 자연어로 ITSM 데이터 조회,
(3) 구성 드리프트 감지 — 골든 구성 vs 실제 환경 비교·자동 교정,
(4) 멀티클라우드 통합 — AWS/GCP/Azure/NCloud 단일 관제·비용 최적화,
(5) 공공기관 특화 — 나라장터·공공API허브·ISP지원·행정망분리·K-Cloud.
guardia-itsm 기존 패턴(FastAPI+SQLAlchemy+paramiko) 준수. 외부 API 완전 금지(공공API 제외).
다음 상황에서 반드시 사용:
(1) 'CMDB 자동 발견', '인벤토리 자동화', '서버 자동 등록', '의존성 맵';
(2) '자연어 쿼리', 'Text-to-SQL', '운영 어시스턴트', '질문으로 조회';
(3) '구성 드리프트', '설정 변경 감지', '골든 구성', '자동 교정';
(4) '멀티클라우드', 'AWS 연동', '클라우드 비용 최적화', '클라우드 전환';
(5) '나라장터', '공공 API', 'ISP 수립', '행정망', 'K-Cloud', '공공기관 특화';
(6) 다시 실행, 업데이트, 수정, 보완.
---
# GUARDiA 고급 확장 오케스트레이터
**실행 모드:** 하이브리드
- Phase 1 (분석): 서브 에이전트 (itsm-dev — 기존 라우터 중복 분석)
- Phase 2~3 (구현): **에이전트 팀** (5명 병렬)
- Phase 4 (QA): 서브 에이전트 (cross-system-qa)
---
## 배경 및 근거
| 영역 | 현재 상태 | 확장 가치 |
|------|----------|---------|
| CMDB | 수동 등록만 | 자동 발견으로 커버리지 100% |
| 쿼리 | API/UI만 | 자연어로 운영자 직관적 접근 |
| 구성 관리 | 변경 감지 없음 | 드리프트 즉시 탐지·교정 |
| 클라우드 | NCloud만 | 공공기관 멀티클라우드 전략 대응 |
| 공공기관 | 기본 CSAP만 | 국내 공공 ITSM 시장 차별화 |
---
## Phase 0: 컨텍스트 확인
```
_workspace/ 존재:
- 없음 → 초기 구현 (Phase 1부터)
- 있음 + 특정 영역 요청 → 해당 에이전트만 재실행
- 있음 + 전체 → _workspace_prev/ 이동 후 재실행
```
---
## Phase 1: 충돌 분석 (서브 에이전트)
**itsm-dev** 서브 에이전트로 기존 라우터 중복 확인:
```
확인 항목:
1. autodiscovery → cmdb.py(17개 엔드포인트)와 겹치는 부분
2. nlquery → nlcmd.py, chatbot.py와 겹치는 부분
3. drift_detection → compliance.py, network_devices.py와 겹치는 부분
4. multicloud → ncloud.py와 겹치는 부분
5. narasajang → gateway.py, external_api.py와 겹치는 부분
```
산출물: `_workspace/phase1_conflict_analysis.md`
---
## Phase 2: 5개 영역 병렬 구현 (에이전트 팀)
**팀 구성:**
- 리더: orchestrator
- 팀원: cmdb-autodiscovery-dev, nlquery-dev, config-drift-dev, multicloud-dev, public-sector-dev
### 작업 할당
| 에이전트 | 라우터 | 산출물 |
|---------|--------|--------|
| cmdb-autodiscovery-dev | autodiscovery.py, snmp_discovery.py, dependency_map.py, config_inventory.py | `_workspace/autodiscovery_spec.md` |
| nlquery-dev | nlquery.py, op_assistant.py, query_history.py | `_workspace/nlquery_spec.md` |
| config-drift-dev | drift_detection.py, golden_config.py, auto_remediation.py | `_workspace/drift_spec.md` |
| multicloud-dev | multicloud.py, aws_connector.py, cost_optimizer.py, cloud_migration.py | `_workspace/multicloud_spec.md` |
| public-sector-dev | narasajang.py, public_api_hub.py, isp_support.py, network_zone.py, k_cloud.py, e_procurement.py | `_workspace/publicsector_spec.md` |
**팀원 간 인터페이스 조율 (SendMessage):**
- cmdb-autodiscovery-dev → config-drift-dev: 발견 데이터 스키마
- config-drift-dev → public-sector-dev: CSAP 체크 항목 목록
- multicloud-dev → public-sector-dev: K-Cloud API 인터페이스
- nlquery-dev → 전체: DB 스키마 컨텍스트 문서
---
## Phase 3: DB 모델 + main.py 등록
```python
# workspace/guardia-itsm/models.py 신규 모델 추가
from models import (
CMDBAutoDiscovery, ServiceDependency, # 자동 발견
QueryHistory, ConversationSession, # NL 쿼리
GoldenConfig, DriftResult, AutoRemediation, # 드리프트
MultiCloudConfig, CloudCostRecord, # 멀티클라우드
ProcurementRecord, NetworkZone, # 공공기관
)
# workspace/guardia-itsm/main.py 라우터 등록
from routers import (
autodiscovery, snmp_discovery, dependency_map, config_inventory, # CMDB
nlquery, op_assistant, query_history, # NL
drift_detection, golden_config, auto_remediation, # 드리프트
multicloud, aws_connector, cost_optimizer, cloud_migration, # 클라우드
narasajang, public_api_hub, isp_support, network_zone, k_cloud, # 공공
)
```
---
## Phase 4: QA
```
검증 항목:
1. 신규 라우터 임포트 오류 없음
2. 에이전트리스 원칙 — 대상 서버 소프트웨어 설치 없음
3. Text-to-SQL — SELECT만 허용, DML 차단
4. 드리프트 자동 교정 — 승인 게이트 누락 없음
5. 공공 API — API Key 암호화 저장 확인
6. 민감 데이터(ip_addr, ssh_user) API 응답 미노출
```
---
## 데이터 흐름
```
_workspace/
├── phase1_conflict_analysis.md ← Phase 1 충돌 분석
├── autodiscovery_spec.md ← CMDB 자동 발견 API 스펙
├── nlquery_spec.md ← NL 쿼리 엔진 스펙
├── drift_spec.md ← 드리프트 감지 스펙
├── multicloud_spec.md ← 멀티클라우드 스펙
└── publicsector_spec.md ← 공공기관 특화 스펙
```
---
## 확장 로드맵
상세 로드맵: `references/advanced-roadmap.md`
---
## 에러 핸들링
| 에러 | 처리 |
|------|------|
| SNMP 응답 없음 | 타임아웃 5초, 재시도 2회 후 SKIP |
| Text-to-SQL DML 감지 | 즉시 거부, 감사 로그 기록 |
| 드리프트 자동 교정 실패 | 롤백 실행, SR 생성 |
| AWS API 인증 실패 | 설정 페이지로 안내 |
| 나라장터 API 장애 | 캐시 데이터 반환, 알림 발송 |
---
## 테스트 시나리오
**정상 흐름 (CMDB 자동 발견):**
1. "CMDB 자동 발견 기능 추가해줘"
2. Phase 1: cmdb.py와 충돌 없음 확인
3. Phase 2: autodiscovery.py, snmp_discovery.py 구현
4. Phase 3: DB 모델 + main.py 등록
5. Phase 4: QA — 에이전트리스 원칙 확인
6. "✅ CMDB 자동 발견 API 추가 완료"
**정상 흐름 (Text-to-SQL):**
1. "이번 달 HIGH 우선순위 미처리 SR 목록 자연어로 조회 가능하게"
2. nlquery.py 구현 (SELECT만 허용 검증)
3. Ollama SQL 생성 → 실행 → 결과 반환
---
## should-trigger
- "CMDB 자동 발견", "서버 자동 등록", "인벤토리 자동화"
- "자연어 쿼리", "운영 어시스턴트", "Text-to-SQL"
- "구성 드리프트", "설정 변경 감지", "골든 구성"
- "멀티클라우드", "AWS 연동", "클라우드 비용 최적화"
- "나라장터", "공공 API", "ISP 수립", "K-Cloud"
- "다시 실행", "수정", "보완"
## should-NOT-trigger
- "Kubernetes 관리" → kubernetes.py (이미 구현)
- "Jira 동기화" → jira_sync.py (이미 구현)
- "KPI 대시보드" → kpi_engine.py (이미 구현)
- "SR 처리" → guardia-orchestrator

View File

@ -0,0 +1,190 @@
# GUARDiA 고급 확장 로드맵
## 현재 구현 현황 (2026-06-02)
- 총 라우터: **104개** (667개 엔드포인트)
- P1~P3 확장 완료: 25개 신규 라우터
---
## 추가 확장 영역 (분석 기반)
### G1. CMDB 자동 발견 (우선순위: ★★★★★)
**현재 문제:** CMDB가 수동 등록만 지원 → 실제 인프라와 괴리 발생
**구현 계획:**
| 라우터 | 기능 | 복잡도 |
|--------|------|--------|
| autodiscovery.py | 네트워크 스캔 오케스트레이션 | 높음 |
| snmp_discovery.py | SNMP v2c/v3 네트워크 장비 발견 | 중간 |
| dependency_map.py | 서비스 의존성 자동 매핑 | 높음 |
| config_inventory.py | SSH 서버 인벤토리 자동 수집 | 낮음 |
**발견 가능 항목:**
- 서버 (OS, CPU, Memory, Disk, 설치 SW)
- 네트워크 장비 (SNMP MIB: 호스트명, 인터페이스, VLAN)
- 서비스 포트 (open ports → 애플리케이션 추정)
- 서비스 의존성 (netstat → upstream/downstream)
**DB 신규 모델:**
- `tb_cmdb_autodiscovery` — 발견 이력
- `tb_service_dependency` — 서비스 의존성 맵
- `tb_snmp_config` — SNMP 커뮤니티 설정
- `tb_discovery_schedule` — 자동 발견 스케줄
---
### G2. Text-to-SQL + 운영 어시스턴트 (★★★★★)
**현재 문제:** 운영자가 데이터 조회에 API/UI에만 의존 → 직관성 낮음
**구현 계획:**
| 라우터 | 기능 |
|--------|------|
| nlquery.py | 자연어 → SQL → 실행 → 결과 |
| op_assistant.py | Multi-turn 대화형 어시스턴트 |
| query_history.py | 쿼리 이력·즐겨찾기·공유 |
**지원 질의 예시:**
```
"이번 달 미처리 SR 중 HIGH 우선순위는 몇 건?"
→ SELECT COUNT(*) FROM tb_sr_request WHERE status IN ('OPEN','IN_PROGRESS') AND priority='HIGH' AND created_at >= '2026-06-01'
"지난 7일 동안 가장 많이 발생한 SR 카테고리 TOP 5"
→ SELECT category, COUNT(*) AS cnt FROM tb_sr_request WHERE created_at >= NOW()-7d GROUP BY category ORDER BY cnt DESC LIMIT 5
"홍길동 엔지니어가 이번 달 처리한 SR 평균 처리 시간은?"
→ SELECT AVG(EXTRACT(EPOCH FROM (updated_at-created_at))/3600) FROM tb_sr_request WHERE assignee_id=(SELECT id FROM tb_user WHERE name='홍길동') AND status='DONE' AND updated_at >= '2026-06-01'
```
**안전 장치:**
- SELECT만 허용 (DML/DDL 즉시 거부)
- 민감 컬럼 자동 제외 (ip_addr, ssh_user, os_pw_enc)
- 쿼리 타임아웃 5초
- 결과 최대 1000행
---
### G3. 구성 드리프트 감지 (★★★★☆)
**현재 문제:** 서버 설정 변경이 감지되지 않아 보안·규정 위반 발생
**구현 계획:**
| 라우터 | 기능 |
|--------|------|
| drift_detection.py | 드리프트 스캔·비교·보고 |
| golden_config.py | 골든 구성 정의·버전 관리 |
| auto_remediation.py | 승인 기반 자동 교정 |
**골든 구성 체크 항목 (CSAP 연계):**
| 항목 | 명령 | 기대값 |
|------|------|--------|
| SSH root 금지 | grep PermitRootLogin /etc/ssh/sshd_config | PermitRootLogin no |
| 패스워드 만료 | grep PASS_MAX_DAYS /etc/login.defs | 90 이하 |
| NTP 동기화 | timedatectl | synchronized: yes |
| SELinux/AppArmor | sestatus / aa-status | enforcing |
| 불필요 서비스 | systemctl list-units --failed | 0개 |
| 방화벽 활성화 | ufw status / firewalld | active |
**자동 교정 흐름:**
```
드리프트 감지 → SR 자동 생성 → PM 승인 요청
→ 승인 후 SSH 자동 교정 실행 → 결과 검증 → 완료 보고
```
---
### G4. 멀티클라우드 통합 (★★★★☆)
**현재 상태:** NCloud만 연동 → 공공기관 멀티클라우드 전략 대응 불가
**구현 계획:**
| 라우터 | 기능 |
|--------|------|
| multicloud.py | 통합 대시보드 + 단일 API |
| aws_connector.py | AWS EC2/RDS/S3 (SigV4 직접 호출) |
| cost_optimizer.py | AI 기반 비용 최적화 권고 |
| cloud_migration.py | On-prem → 클라우드 체크리스트 |
**지원 클라우드:**
| CSP | 연동 방식 | 공공 인증 |
|-----|---------|---------|
| NCloud | REST API (기존 ncloud.py 확장) | CSAP 인증 |
| AWS (GovCloud) | SigV4 서명 직접 호출 | FedRAMP |
| Azure Government | REST API | |
| KT Cloud | REST API | CSAP 인증 |
**비용 최적화 AI 분석 항목:**
- 사용률 10% 미만 인스턴스 → 삭제/다운사이징 권고
- Reserved Instance 전환 시 절감액 추정
- 야간/주말 미사용 인스턴스 → 스케줄링 권고
- 스토리지 낭비 탐지 (미연결 볼륨)
---
### G5. 공공기관 특화 (★★★★★)
**현재 상태:** 기본 CSAP만 지원 → 국내 공공 ITSM 시장 차별화 부족
**구현 계획:**
| 라우터 | 기능 | 연동 대상 |
|--------|------|---------|
| narasajang.py | 입찰·계약 조회 | 조달청 나라장터 OpenAPI |
| public_api_hub.py | 공공 API 연동 허브 | 공공데이터포털(data.go.kr) |
| isp_support.py | ISP 수립 지원 | 내부 데이터 집계 |
| network_zone.py | 행정망/인터넷망 분리 | 내부 네트워크 정책 |
| k_cloud.py | K-Cloud 전환 자동화 | NCloud/KT/LG CNS |
| e_procurement.py | 전자조달 이력 관리 | 나라장터 계약 시스템 |
**나라장터 연동 기능:**
- 기관별 입찰 공고 조회 → ITSM 프로젝트 자동 생성
- 계약 현황 → SR 이행 연계
- 납품 검수 → CMDB 자동 등록
**공공 API 허브 지원 API:**
- 기상청 날씨 (서버실 온습도 모니터링 연계)
- 행안부 주소 API (사이트 주소 자동완성)
- 국세청 사업자 정보 (공급사 검증)
- KISA CVE 취약점 정보 (vuln_scan 연계)
---
## 추가 고려 영역 (향후)
### 그린 IT / 탄소 발자국 (P3)
- 서버 전력 소비량 측정 (IPMI/BMC)
- 탄소 배출량 계산 (전력 → CO2 환산)
- 에너지 효율 개선 권고
### 이벤트 스트리밍 (P3)
- Kafka/NATS 기반 실시간 이벤트 버스
- 장애 이벤트 → 즉시 SR 생성 (현재 폴링 방식 개선)
### MDM (Mobile Device Management) (P3)
- 업무용 모바일 기기 관리
- 원격 초기화·정책 배포
### 제로 트러스트 (P3)
- ZTNA 정책 관리
- 마이크로 세그멘테이션 설정
---
## 예상 신규 라우터 수
| 영역 | 라우터 수 | 예상 엔드포인트 |
|------|---------|--------------|
| CMDB 자동 발견 | 4개 | ~20개 |
| Text-to-SQL | 3개 | ~12개 |
| 구성 드리프트 | 3개 | ~15개 |
| 멀티클라우드 | 4개 | ~20개 |
| 공공기관 특화 | 6개 | ~30개 |
| **합계** | **20개** | **~97개** |
**확장 후 총계: 124개 라우터, ~764개 엔드포인트**

View File

@ -279,6 +279,30 @@ GUARDiA ITSM (허브, :9001/:8443)
---
## 하네스: GUARDiA 고급 확장
**목표:** GUARDiA ITSM 현재 104개 라우터(667 엔드포인트)에서 20개 신규 라우터 추가. CMDB 자동 발견·Text-to-SQL·구성 드리프트·멀티클라우드·공공기관 특화 5개 영역 확장. 목표: 124개 라우터, ~764개 엔드포인트.
**트리거:** CMDB 자동 발견, 자연어 쿼리, 구성 드리프트, 멀티클라우드, 나라장터/공공API/ISP/K-Cloud 요청 시 `guardia-advanced-orchestrator` 스킬을 사용하라.
**에이전트:** cmdb-autodiscovery-dev · nlquery-dev · config-drift-dev · multicloud-dev · public-sector-dev
**분석 근거:**
- CMDB: 수동 등록만 → 자동 발견으로 커버리지 100%
- Text-to-SQL: API/UI만 → 운영자 자연어 접근
- 드리프트: 설정 변경 미감지 → 보안·규정 위반 즉시 탐지
- 멀티클라우드: NCloud만 → 공공기관 멀티클라우드 전략 대응
- 공공기관: 기본 CSAP만 → 국내 공공 ITSM 시장 차별화
**로드맵:** `.claude/skills/guardia-advanced-orchestrator/references/advanced-roadmap.md`
**변경 이력:**
| 날짜 | 변경 내용 | 대상 | 사유 |
|------|----------|------|------|
| 2026-06-02 | 초기 하네스 구성 | 전체 | GUARDiA 추가·확장 기능 분석 후 5개 영역 선정 |
---
## 하네스: GUARDiA 플랫폼 확장
**목표:** GUARDiA ITSM 81개 라우터에서 25개 신규 라우터 추가. 클라우드/컨테이너·AI 고도화·멀티테넌트 SaaS·엔터프라이즈 통합·BI 5개 영역 확장.