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:
parent
caa70a608b
commit
3b12791da7
74
.claude/agents/cmdb-autodiscovery-dev.md
Normal file
74
.claude/agents/cmdb-autodiscovery-dev.md
Normal 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와 발견 데이터 포맷 공유
|
||||||
|
- **보고**: 완료 후 자동 발견 커버리지 지표 보고
|
||||||
90
.claude/agents/config-drift-dev.md
Normal file
90
.claude/agents/config-drift-dev.md
Normal 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 준수 항목 제공
|
||||||
|
- **보고**: 드리프트 커버리지 % + 자동 교정 성공률 보고
|
||||||
92
.claude/agents/multicloud-dev.md
Normal file
92
.claude/agents/multicloud-dev.md
Normal 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 제공
|
||||||
|
- **보고**: 통합 클라우드 리소스 수 + 비용 절감 권고 건수 보고
|
||||||
74
.claude/agents/nlquery-dev.md
Normal file
74
.claude/agents/nlquery-dev.md
Normal 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 정확도 벤치마크 결과 보고
|
||||||
102
.claude/agents/public-sector-dev.md
Normal file
102
.claude/agents/public-sector-dev.md
Normal 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 지원 기관 수 보고
|
||||||
194
.claude/skills/guardia-advanced-orchestrator/SKILL.md
Normal file
194
.claude/skills/guardia-advanced-orchestrator/SKILL.md
Normal 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
|
||||||
@ -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개 엔드포인트**
|
||||||
24
CLAUDE.md
24
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 플랫폼 확장
|
||||||
|
|
||||||
**목표:** GUARDiA ITSM 81개 라우터에서 25개 신규 라우터 추가. 클라우드/컨테이너·AI 고도화·멀티테넌트 SaaS·엔터프라이즈 통합·BI 5개 영역 확장.
|
**목표:** GUARDiA ITSM 81개 라우터에서 25개 신규 라우터 추가. 클라우드/컨테이너·AI 고도화·멀티테넌트 SaaS·엔터프라이즈 통합·BI 5개 영역 확장.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user