From 3b12791da7bf242de35bea991da430835c578cde Mon Sep 17 00:00:00 2001 From: "DESKTOP-TKLFCPR\\ython" Date: Tue, 2 Jun 2026 06:35:22 +0900 Subject: [PATCH] =?UTF-8?q?feat(harness):=20GUARDiA=20=EA=B3=A0=EA=B8=89?= =?UTF-8?q?=20=ED=99=95=EC=9E=A5=20=ED=95=98=EB=84=A4=EC=8A=A4=20=E2=80=94?= =?UTF-8?q?=205=EA=B0=9C=20=EC=97=90=EC=9D=B4=EC=A0=84=ED=8A=B8=20+=20?= =?UTF-8?q?=EC=98=A4=EC=BC=80=EC=8A=A4=ED=8A=B8=EB=A0=88=EC=9D=B4=ED=84=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 분석 기반 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 --- .claude/agents/cmdb-autodiscovery-dev.md | 74 +++++++ .claude/agents/config-drift-dev.md | 90 ++++++++ .claude/agents/multicloud-dev.md | 92 +++++++++ .claude/agents/nlquery-dev.md | 74 +++++++ .claude/agents/public-sector-dev.md | 102 +++++++++ .../guardia-advanced-orchestrator/SKILL.md | 194 ++++++++++++++++++ .../references/advanced-roadmap.md | 190 +++++++++++++++++ CLAUDE.md | 24 +++ 8 files changed, 840 insertions(+) create mode 100644 .claude/agents/cmdb-autodiscovery-dev.md create mode 100644 .claude/agents/config-drift-dev.md create mode 100644 .claude/agents/multicloud-dev.md create mode 100644 .claude/agents/nlquery-dev.md create mode 100644 .claude/agents/public-sector-dev.md create mode 100644 .claude/skills/guardia-advanced-orchestrator/SKILL.md create mode 100644 .claude/skills/guardia-advanced-orchestrator/references/advanced-roadmap.md diff --git a/.claude/agents/cmdb-autodiscovery-dev.md b/.claude/agents/cmdb-autodiscovery-dev.md new file mode 100644 index 00000000..68ecd560 --- /dev/null +++ b/.claude/agents/cmdb-autodiscovery-dev.md @@ -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와 발견 데이터 포맷 공유 +- **보고**: 완료 후 자동 발견 커버리지 지표 보고 diff --git a/.claude/agents/config-drift-dev.md b/.claude/agents/config-drift-dev.md new file mode 100644 index 00000000..980798ea --- /dev/null +++ b/.claude/agents/config-drift-dev.md @@ -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 준수 항목 제공 +- **보고**: 드리프트 커버리지 % + 자동 교정 성공률 보고 diff --git a/.claude/agents/multicloud-dev.md b/.claude/agents/multicloud-dev.md new file mode 100644 index 00000000..e9db4be7 --- /dev/null +++ b/.claude/agents/multicloud-dev.md @@ -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 제공 +- **보고**: 통합 클라우드 리소스 수 + 비용 절감 권고 건수 보고 diff --git a/.claude/agents/nlquery-dev.md b/.claude/agents/nlquery-dev.md new file mode 100644 index 00000000..22af5ffd --- /dev/null +++ b/.claude/agents/nlquery-dev.md @@ -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 정확도 벤치마크 결과 보고 diff --git a/.claude/agents/public-sector-dev.md b/.claude/agents/public-sector-dev.md new file mode 100644 index 00000000..88fc0682 --- /dev/null +++ b/.claude/agents/public-sector-dev.md @@ -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 지원 기관 수 보고 diff --git a/.claude/skills/guardia-advanced-orchestrator/SKILL.md b/.claude/skills/guardia-advanced-orchestrator/SKILL.md new file mode 100644 index 00000000..44bef120 --- /dev/null +++ b/.claude/skills/guardia-advanced-orchestrator/SKILL.md @@ -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 diff --git a/.claude/skills/guardia-advanced-orchestrator/references/advanced-roadmap.md b/.claude/skills/guardia-advanced-orchestrator/references/advanced-roadmap.md new file mode 100644 index 00000000..c47347c2 --- /dev/null +++ b/.claude/skills/guardia-advanced-orchestrator/references/advanced-roadmap.md @@ -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개 엔드포인트** diff --git a/CLAUDE.md b/CLAUDE.md index 1f8e22dd..8be9fb66 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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개 영역 확장.