zioinfo-mail/.claude/agents/config-drift-dev.md
DESKTOP-TKLFCPR\ython 3b12791da7 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>
2026-06-02 06:35:22 +09:00

3.5 KiB

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 경유 에이전트리스)

핵심 구현

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가 있으면 승인 후 자동 교정
   - 메신저 알림

자동 교정 안전장치

# 자동 교정은 반드시 승인 후 실행 (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 준수 항목 제공
  • 보고: 드리프트 커버리지 % + 자동 교정 성공률 보고