- 프로젝트명: CloudShield (클라우드 하이브리드 위협 탐지·자동 대응 및 SecOps 파이프라인)
-
목표 대응 지표: 침해 공격 유입 시 10초 이내 자동 탐지·차단·상황 전파 완료를 목표로 설계 (Target SLA)
- 로그 수집 (<3s)
$\rightarrow$ 위험도 판정 (<5s)$\rightarrow$ 다중 계층 차단 (<2s)$\rightarrow$ 상황 전파
- 로그 수집 (<3s)
-
추진 배경:
- 수동 침해 분석의 한계: 클라우드 인프라 대상 무차별 대입, 비인가 디렉터리 스캐닝 등은 유입 후 수 분 내에 측면 이동으로 전이되므로 운영자의 수동 콘솔 조작만으로는 적시 대응 시간을 확보하기 어렵습니다.
- 파이프라인 중심 엔지니어링: 웹 UI 개발에 리소스를 분산하지 않고, 실제 인프라 라우팅, L4 패킷 플래그 분석, 정규식 ReDoS 방어 시그니처, IAM 세션 제어, DynamoDB 분산 슬라이딩 윈도우, 선언적 IaC 등 클라우드 보안 및 플랫폼 엔지니어링 핵심 과제에 집중했습니다.
발표 환경 및 네트워크 상태에 구애받지 않고 실제 패킷 단위의 차단과 알림 흐름을 증빙하기 위해 제작된 2분할 통합 실측 데모입니다. 좌측은 모의 공격 터미널의 실시간 TCP 연결 상태이며, 우측은 동일 사건 ID(incident_id)로 수신된 2단계 Slack 관제 알림 카드입니다.
(이미지를 클릭하면 3분 30초 2분할 전구간 데모 영상 원본이 재생됩니다)
- 데모 핵심 검증 포인트:
- 공격 유입 및 탐지: Hydra SSH 공격 유입 후 서버 인증 실패 로그 중앙 수집 및 오케스트레이터 트리거.
- 즉각적 인바운드 드롭: Boto3 격리 실행 직후 신규 TCP SYN 패킷에 대한 무응답 및 타임아웃 관측.
- 2단계 Slack 알림 전파: 1차 실시간 격리 알림 도착 후, 백그라운드 EventBridge를 거친 2차 분석 알림 연계.
- 원자적 인프라 롤백: 검증 완료 후 단일 명령으로 이전 보안 그룹 상태 원복 확인.
CloudShield는 가정이 아닌 실제 AWS 인프라(ap-southeast-2) 및 테스트베드에서 계측된 정량 데이터를 바탕으로 시스템을 평가했습니다.
| 핵심 검증 도메인 | 달성 지표 | 세부 관측 조건 및 환경 | 실측 근거 문서 |
|---|---|---|---|
| L4 인스턴스 격리 SLA | 5.48s |
서버 5회 실패 기록 후 첫 무응답 SYN 관측 (P3-3c 실측: 5.478s, P4-3 재실측: 4.51s-6.05s) |
P3-3c 실측 보고서 |
| L7 WAF IPSet 차단 SLA | 18.20s |
Lambda 시작부터 첫 403 응답 관측 (공격 시작 기준: 21.29s 전파 지연) |
WAF 실측 보고서 |
| 오케스트레이터 반환 지표 | 2.70s |
고정 로그 실환경 통합 실증 1건의 탐지 2.7042s, 전체 SLA와 구분) |
P5-2 패널 검증서 |
| 자동화 파이프라인 검증 | 1,907 tests | 계약 불변식, 네트워크 패킷 덤프, 모킹 인프라 전체 테스트 통과 | 단위 테스트 슈트 |
| 협업 거버넌스 안정성 | 137 PRs | 사전 검증 하네스를 통한 137건 PR 머지 무충돌 유지 (커밋 153건) | GitHub PR 히스토리 |
| 도메인 작업 분담률 | 30:26:23:21 | 승윤 30%, 동형 26%, 시훈 23%, 찬원 21% 균등 분담 | 노션 프로젝트 일정 DB |
본 프로젝트는 사전 인터페이스 계약과 로컬 테스트베드를 사전에 구축하고 단계적으로 인프라를 확장하는 마일스톤 방식을 준수하여 전 과정을 완결했습니다:
- Phase 1: 개발 하네스 및 가상 테스트베드 구축 (완료)
- Pydantic V2 기반 불변 데이터 계약 (
src/contracts/) 확정 및 Contract Drift Guard 검증 - Moto 기반 가상 AWS 리소스(EC2, SG, WAFv2, DynamoDB, IAM) 테스트베드 구축
- GitHub Actions 기반 품질 검사(Ruff, Pytest), PR 제목 린터, R&R 스코프 검증 게이트 구축
- GitHub Issue/PR과 노션 칸반 보드 간 상태 및 일정 자동 동기화 파이프라인 구축
- Pydantic V2 기반 불변 데이터 계약 (
- Phase 2: 도메인별 코어 비즈니스 로직 구현 (완료)
- L4 EC2 격리 및 L7 WAF IPSet 차단 Boto3 엔진 구현 (
src/remediation/remediation.py) - DynamoDB 원자적 카운터 기반 5분 슬라이딩 윈도우 집계 모듈 구현 (
src/remediation/auth_window.py) - 1차 시그니처 룰 및 결정론적 IncidentReport 매퍼 구현 (
src/detection/rules.py,src/detection/incident_mapper.py) - CloudWatch Logs 페이로드 디코더 및 Slack Block Kit 전파 모듈 구현 (
src/collector/,src/reporter/)
- L4 EC2 격리 및 L7 WAF IPSet 차단 Boto3 엔진 구현 (
- Phase 3: AWS 실인프라 프로비저닝 및 전구간 실측 (완료)
- VPC, EC2 타깃 서버, ALB, WAFv2, DynamoDB, Lambda Terraform 프로비저닝 완료
- Hydra SSH 무차별 대입 및 Nginx 웹 스캐닝 모의 공격 수행
- L4 SG 격리(5.48초) 및 L7 WAF 전파 지연(18.2초) 패킷 단위 실측 및 계층별 특성 규명
- Phase 4: 비동기 LLM 심층 분석 및 2단계 전파 파이프라인 구축 (완료)
- EventBridge 기반 사후 비동기 Bedrock Claude/Nova 분석 워커 파이프라인 분리
- 상사 보고용 3단 구조화 양식 프롬프트 엔지니어링 및 프롬프트 인젝션 방어 검증
- Slack Block Kit 1차 실시간 격리 카드 vs 2차 사후 분석 카드 분리 전파
- Phase 5: 무상태 관제 프로비저닝 및 최종 시연 (완료)
- Docker Compose 기반 무상태 Grafana as Code 프로비저닝 환경 구축 (
infra/grafana/) - CloudWatch Logs Insights 4사분면 관제 패널 쿼리 및 대시보드 검증
- 3분 30초 2분할 전구간 데모 영상 제작 및 캡스톤 최종 발표 완결
- Docker Compose 기반 무상태 Grafana as Code 프로비저닝 환경 구축 (
팀원 각자의 전문 영역에 따른 고유 엔지니어링 성과와 기술적 문제 해결 과정을 동등한 비중으로 상세 전개합니다.
5.1 클라우드 A (승윤 / @mmmphyun) — 플랫폼 엔지니어 & 테크 리드
전체 인프라 오케스트레이션과 분산 데이터 일관성, 원자적 차단·복구 엔진 및 팀 개발 하네스를 전담했습니다.
- 핵심 기술 과제 및 CS 메커니즘:
- 무상태 컨테이너 환경의 슬라이딩 윈도우 알고리즘 고도화:
- 문제 정의: Lambda는 무상태 컨테이너이므로 호출 간 공격 상태를 메모리에 유지할 수 없으며, 분 경계면(11:59 vs 12:01)에 걸쳐 유입되는 공격이 분할되어 탐지 임계치를 누락하는 결함 식별.
- 알고리즘 및 서버리스 트레이드오프: 상시 인스턴스 비용을 배제하고 유휴 비용 0원의 무상태 서버리스 구조를 유지하기 위해 DynamoDB 온디맨드를 채택. Cloudflare 가중 알고리즘의 저트래픽 오차를 극복하기 위해 분 단위 버킷 기반 **'타임스탬프 3-버킷 슬라이딩 윈도우'**를 설계하여 경계면 누락을 방어.
- 분산 일관성 모델 보장: 쓰기 직후 후속 배치가 즉시 읽어야 하는 파이프라인 특성상 DynamoDB의 최종 일관성으로 인한 카운트 누락을 방어하기 위해 **
ConsistentRead=True(Strongly Consistent Read)**를 강제 적용.
- Boto3 기반 원자적 차단 및 단일 명령 롤백 엔진:
- 단일 API 호출(
modify_instance_attribute)을 통해 침해 인스턴스의 보안 그룹을 격리 SG로 원자적 교체하고, ALB 전면 WAF IPSet에/32단위 차단을 등록하는 멱등성 엔진 구축. - 통합 실측 후 테스트베드를 즉시 정상화할 수 있는 L4/L7 통합 원자적 롤백 복구 모듈 개발.
- SQS 완충 큐에 따른 1-3초의 폴링 큐잉 지연을 배제하고 10초 SLA를 엄수하기 위해 Subscription Filter 동기 직접 트리거를 채택했으며, 프로덕션 동시성 고갈을 방어하는 Lambda 예약 동시성 설계를 병행.
- 단일 API 호출(
- 컴파일 타임 계약 검증 게이트 및 무상태 관제 프로비저닝:
- Pydantic V2 불변 모델을 수립하고, 4개 직무 간 모의 데이터 불일치를 선제 방어하는 5대 교차 계약 테스트 구축.
- Grafana 웹 UI 수동 조작을 배제하고 설정 파일(
cloudwatch.yaml,dashboards.yaml) 주입으로 일관된 동일 관제 환경을 재현하는 Grafana as Code 환경 구축.
- 무상태 컨테이너 환경의 슬라이딩 윈도우 알고리즘 고도화:
| 담당 영역 | 세부 구현 모듈 | 핵심 엔지니어링 원리 | 상세 기술 문서 |
|---|---|---|---|
| 분산 윈도우 | src/remediation/auth_window.py |
DynamoDB 원자적 카운터, 3-버킷 쿼리, Strongly Consistent Read | 윈도우 아키텍처 |
| 차단/복구 엔진 | src/remediation/remediation.py |
Boto3 다중 계층 원자적 차단, ClientError 정밀 처리, 멱등 롤백 | L4/L7 차단 명세 |
| 비동기 오케스트레이터 | src/remediation/orchestrator.py |
실시간 차단-사후 분석 분리, EventBridge 비동기 격리 파이프라인 | 오케스트레이터 분석 |
| 관제 프로비저닝 | infra/grafana/docker-compose.yml |
Zero-Click 무상태 프로비저닝, 불변 UID 바인딩, 최소 권한 IAM | Grafana 배포 보고서 |
클라우드 A 독립 기술 포트폴리오: docs/roles/cloud-a/README.md (총 14편의 아키텍처 및 실측 보고서 수록)
5.2 보안 (찬원 / @gkacksdnjs22-stack) — 침해 탐지 및 보안 인텔리전스 엔지니어
시그니처 기반 침해 탐지 룰, MITRE ATT&CK TTP 매핑, ReDoS 방어 및 사후 LLM 분석 인텔리전스를 전담했습니다.
-
핵심 기술 과제 및 CS 메커니즘:
-
정규식 시그니처 엔진의 ReDoS(Catastrophic Backtracking) 방어:
- 문제 정의: 대규모 로그 유입 시 악의적인 패턴이나 긴 문자열이 유입되면 정규식 엔진의 지수 시간 복잡도($O(2^n)$) 역추적으로 인해 Lambda CPU가 포화되는 취약점 식별.
-
해결책: 과도한 탐색을 유발하는 중첩 수량자(
(a+)+)를 전면 배제하고, 원자적 그룹 및 토큰화 기반의$O(n)$ 선형 시간 탐색 구조로 정규식을 설계하여 ReDoS 위협 방어.
-
10초 실시간 경로와 사후 비동기 LLM 파이프라인의 아키텍처적 분리:
- 설계 결단: 실시간 차단 경로에 외부 LLM API(Bedrock)를 동기 호출할 경우 네트워크 왕복 시간과 토큰 생성 지연으로 10초 SLA 달성이 불가능함을 식별.
- 분리 구조 및 역할 정의: 단순 침해 팩트 정형 요약은 로컬 매퍼(incident_mapper.py)가 1ms 내에 (1) 완결하고, 고비용 LLM은 웹 비인가 URI의 난독화 페이로드 의도 분석 및 권고 추론이라는 비정형 인텔리전스에 한정 투입하여 적시 차단 시간을 확보.
-
상사 보고용 3단 양식 프롬프트 엔지니어링 및 프롬프트 인젝션 방어:
- 관측된 공격 사실만을 엄격히 전달하기 위해
[1. 침해 개요],[2. 관측 로그 근거],[3. 영향도 및 침해 판정]및 3대 권고([즉시 조치],[설정 점검],[재발 방지]) 구조화 양식 설계. - 공격자가 SSH 계정명이나 Web URI에 시스템 명령이나 탈옥 구문을 삽입하더라도 보고서의 핵심 필드(IP, 타깃, 차단 액션)가 변조되지 않도록 보호 필드 불변성 검증 파서를 구축하고, Bedrock 호출 실패 시 원본 보고서를 보존하는 15건의 Fallback 고정 평가셋 회귀 검증 완료.
- 관측된 공격 사실만을 엄격히 전달하기 위해
-
정규식 시그니처 엔진의 ReDoS(Catastrophic Backtracking) 방어:
| 담당 영역 | 세부 구현 모듈 | 핵심 엔지니어링 원리 | 상세 기술 문서 |
|---|---|---|---|
| 탐지 룰 엔진 | src/detection/rules.py |
ReDoS |
ReDoS 설계서 |
| 침해사고 매퍼 | src/detection/incident_mapper.py |
결정론적 IncidentReport 생성, 외부 API 제로화, 필드 불변성 | 매퍼 아키텍처 |
| LLM 프롬프트/파서 | src/detection/llm_deep_analyzer.py |
3단 상사 보고 양식, 프롬프트 인젝션 방어, 비표시 제어문자 가시화 | 3단 프롬프트 설계서 |
| 장애 회귀 검증 | tests/unit/test_incident_mapper.py |
Bedrock 장애 시 Fallback 고정 평가셋 15건 불변성 검증 | LLM 검수 보고서 |
보안 독립 기술 포트폴리오: docs/roles/security/README.md (총 10편의 시그니처 및 LLM 분석 보고서 수록)
5.3 클라우드 B (시훈 / @wkdtlgns99-cell) — 클라우드 시스템 및 SRE 관제 엔지니어
타깃 서버 로깅 인프라, 이종 로그 스트림 라우팅, 2단계 Slack 관제 알림 및 Grafana 4사분면 모니터링을 전담했습니다.
-
핵심 기술 과제 및 CS 메커니즘:
-
CloudWatch Agent 중앙 로깅 튜닝 및 수집 버퍼 최적화:
- 문제 정의: CloudWatch Agent의 기본 로그 플러시 대기 시간으로 인해 공격 로그 전송이 수 분간 지연되어 실시간 파이프라인이 마비되는 현상 발생.
- 해결책 및 TCO 고려: 타깃 EC2 인스턴스의 수집 버퍼 플러시 주기를 2초로 정밀 튜닝하여 파이프라인의 이론적 최소 지연 한계를 실측. 대규모 프로덕션 확장 시 PutLogEvents API 비용 및 스로틀링을 완화하기 위한 Kinesis Firehose / Fluent Bit 버퍼링 연계 아키텍처 도출.
-
이종 로그 스트림 역직렬화 어댑터 및 인메모리 중복 제거:
- 단일 Lambda 오케스트레이터가 서로 다른 규격의 로그(Syslog vs Nginx Combined)를 처리할 수 있도록 Base64 디코딩 및 Gzip 압축 해제 파이프라인 구축.
- 로그 그룹 경로에 따라 이벤트를 분기하고, 이벤트 ID 해시 집합을 기반으로 배치 내 중복 로그를 인메모리에서 사전 필터링하는 정형화 어댑터 구현.
-
지시 조치와 엔진 반환값을 분리한 Slack Block Kit 2단계 알림:
- 운영자 혼선 방지: "차단 지시"와 실제 Boto3 엔진이 반환한 "실제 인프라 집행 상태(성공·실패·미완료·미대상)"를 엄격히 분리 표기하여 오판 방지.
-
2단계 전파: 1차 실시간 격리 알림 카드 발송 후, 심층 분석이 완료되면 동일한
incident_id를 갖는 2차 분석 카드를 연계 발송. - 장애 및 인젝션 격리: 제어 문자 이스케이프를 적용해 공격 문자열에 의한 의도치 않은 슬랙 멘션(@here, @channel) 공격을 방어하고, SaaS 네트워크 순단에 대비한 타임아웃 예외 처리 적용.
-
Grafana 4사분면 CloudWatch Logs Insights 관제 대시보드 설계:
- 공격 유입 건수, 고정 로그 실환경 통합 실증(매칭 1건) 기준 오케스트레이터 탐지
$\rightarrow$ 대응 반환 지표(max/p95 2.7042s, 전체 전구간 SLA와 구분), LLM 정상/Fallback 전환율, 8단계 사건 처리 타임라인을 코드로 시각화.
- 공격 유입 건수, 고정 로그 실환경 통합 실증(매칭 1건) 기준 오케스트레이터 탐지
-
CloudWatch Agent 중앙 로깅 튜닝 및 수집 버퍼 최적화:
| 담당 영역 | 세부 구현 모듈 | 핵심 엔지니어링 원리 | 상세 기술 문서 |
|---|---|---|---|
| 중앙 로깅 인프라 | amazon-cloudwatch-agent.json |
버퍼 플러시 2초 최적화, 다중 로그 스트림 수집 | 수집 레이턴시 보고서 |
| 로그 정형화 라우터 | src/collector/cw_processor.py |
Base64/Gzip 역직렬화, LogGroup 분기, 인메모리 중복 제거 | 스트림 라우터 명세 |
| 관제 알림 렌더러 | src/reporter/slack_notifier.py |
Block Kit 2단계 알림, 집행 상태 분리 표기, 멘션 인젝션 방어 | Slack 2단계 실측서 |
| SecOps 대시보드 | docs/roles/cloud-b/grafana/p5-2.json |
4사분면 Logs Insights 쿼리, 오케스트레이터 반환 2.7042s 관측(전체 SLA와 구분), 사건 타임라인 추적 | Grafana 쿼리 대조서 |
클라우드 B 독립 기술 포트폴리오: docs/roles/cloud-b/README.md (총 18편의 로깅 및 관제 보고서 수록)
5.4 네트워크 (동형 / @RockCandy444) — 모의 침투 및 네트워크 검증 엔지니어
모의 공격 시뮬레이션 환경 구축, Wireshark/tcpdump L4 패킷 플래그 분석, L4/L7 전파 지연 실측 및 한계 규명을 전담했습니다.
-
핵심 기술 과제 및 CS 메커니즘:
-
모의 공격 재현 환경 구축 및 매초 신규 TCP 연결 계측:
- 단순 기존 SSH 세션 유지 여부로 차단을 판정하는 결함을 배제하기 위해, 매초 새로운 TCP 3-Way Handshake를 능동 시도하는 계측기(
ec2_hydra_measurement.py) 구현. - Hydra SSH 무차별 대입 공격 및 curl 기반 웹 비인가 디렉터리 스캔 환경을 격리 노드에서 구성.
- 단순 기존 SSH 세션 유지 여부로 차단을 판정하는 결함을 배제하기 위해, 매초 새로운 TCP 3-Way Handshake를 능동 시도하는 계측기(
-
Wireshark/tcpdump L4 TCP 패킷 플래그 정밀 분석:
-
정상 구간: 공격 유입 초기 클라이언트 SYN
$\rightarrow$ 타깃 SYN-ACK$\rightarrow$ 클라이언트 ACK 정상 수립 관측. - 차단 구간: L4 보안 그룹 교체 집행 후, 36개 연속 신규 SYN 패킷에 대해 타깃 서버가 아무런 응답을 주지 않고(무응답) 클라이언트 타임아웃으로 드롭되는 패킷 흐름 입증.
-
정상 구간: 공격 유입 초기 클라이언트 SYN
-
제어 평면과 데이터 평면의 전파 지연 간극 실측 규명:
- 문제 발견: Lambda 차단 API(Boto3) 호출은 1.40초 만에 종료되었으나, 실제 데이터 평면에서는 이후에도 HTTP 200 통신이 지속되는 현상 관측.
- 원인 분석: API 반환(제어 평면)과 AWS WAF 글로벌/리전 배포망에 IP 차단 룰이 동기화되는 시점(데이터 평면) 간에 물리적 전파 지연이 존재함을 패킷으로 규명.
-
L4 SG vs L7 WAF 계층별 트레이드오프 및 솔직한 한계 공유:
- L4 Security Group: 서버 5회 실패 후 5.48초 만에 신규 SYN이 즉각 드롭되었으나, 인스턴스 전체 포트를 제한하여 정상 서비스에 영향을 미칠 수 있는 광범위 격리 특성을 가집니다.
- L7 AWS WAF: 공격자 IP만 선별 차단하지만 Lambda 시작부터 첫 403 응답까지 18.20초(첫 공격 기준 21.29초)가 소요되어 10초 SLA에는 미달함을 투명하게 규명했습니다.
- 상호 보완성 및 가용성 부수 효과 방어: L4 SG 격리는 정상 사용자 통신까지 중단되는 가용성 부수 효과가 따르므로, 대민 서비스는 L7 WAF IPSet 선별 차단을 1차 방어선으로 두고 L4 SG는 호스트 침해 시 인스턴스를 즉각 분리하는 최후의 비상 차단으로 역할을 분리하여 상호 보완하도록 설계.
-
모의 공격 재현 환경 구축 및 매초 신규 TCP 연결 계측:
| 담당 영역 | 세부 구현 모듈 | 핵심 엔지니어링 원리 | 상세 기술 문서 |
|---|---|---|---|
| 공격 시뮬레이션 | network/attack_simulation.sh |
Hydra 9.2 자동화, 합성 계정 오답 주입, 안전성 플래그 적용 | 모의 공격 가이드 |
| 패킷 계측기 | network/ec2_hydra_measurement.py |
매초 신규 TCP SYN 탐침, tcpdump 패킷 캡처, TShark 분석 | 타임라인 텔레메트리 |
| L4 패킷 분석 | tests/unit/test_network.py |
3-Way Handshake 수립 |
L4 패킷 분석서 |
| 전파 지연 규명 | network/waf_packet_measurement.py |
제어 API(1.4s) vs 실제 데이터 평면 차단(18.2s/21.29s) 분리 규명 | L4 vs L7 지연 분석 |
네트워크 독립 기술 포트폴리오: docs/roles/network/README.md (총 16편의 모의 침투 및 패킷 분석 보고서 수록)
CloudShield는 4인이 각자의 도메인 로직에 깊이 몰입할 수 있도록 공통 플랫폼 선행 구축 모델을 적용하여 팀을 운영했습니다.
flowchart LR
subgraph Local ["로컬 에이전트 작업 환경"]
direction TB
L1["1. 역할 잠금 (.agent-role)<br>- 직무 외 디렉토리 수정 차단"]
L2["2. 세션 스타터 (get_my_tasks.py)<br>- 노션 [시작 전] 티켓 자동 바인딩"]
L3["3. Moto 로컬 가상 AWS 테스트베드<br>- 격리 인프라 단위 검증"]
end
subgraph Remote ["원격 GitHub Actions 자동 검증"]
direction TB
R1["1. CI (Ruff / Pytest 1,907개 / Contract Drift)<br>- 스키마 무단 변경 즉시 차단"]
R2["2. PR Title Lint (Conventional Commits)<br>- 필수 직무 스코프 규격 검사"]
R3["3. 경로 기반 자동 라벨러 (labeler.yml)<br>- role:*, area:*, type:* 자동 부착"]
R4["4. 노션 칸반 수명주기 자동 동기화<br>- [진행 중] → [검토 중] → [완료]"]
end
Local ==>|Push / PR| Remote
- 도메인 엔지니어의 인지 부하 최소화:
- 네트워크, 보안, 클라우드 B 팀원이 환경 설정, 배포 파이프라인, Git 충돌, AWS 과금 등 인프라 부하 없이 고유 도메인 연구에만 집중할 수 있도록 플랫폼 엔지니어가 CI/CD 하네스, Pydantic V2 계약 인터페이스, Moto 모킹 테스트베드를 선제 구축했습니다.
- 커밋 단위의 직무별 특성:
- 도메인 팀원은 패킷 덤프 분석, 시그니처 룰 검증, Grafana 대시보드 등 장기간의 연구를 거친 대형 기능 단위 압축 커밋을 발행했습니다.
- 플랫폼 엔지니어는 GitHub Actions 러너 튜닝, 라벨러, 테스트베드 픽스처 확장 등 인프라 연계 기반을 세밀하게 분할 검증하는 원자적 커밋 빈도가 높았습니다.
- 파이프라인 안정성 확보를 위한 Fast-Track 핫픽스 단일화:
- 팀 헌법(
AGENTS.md4.5절)에 따라 4인 병렬 개발 환경에서 공통 배관 장애 발생 시 스키마 오염을 방지하기 위해hotfix권한을 테크 리드 단일 창구로 제한 운영했습니다.
- 팀 헌법(
- 실제 비즈니스 요구사항 분담 증빙:
- 공식 노션 프로젝트 일정 DB의 100개 작업 카드 기준 실질 분담률은 **승윤 30%, 동형 26%, 시훈 23%, 찬원 21%**로 4개 직무가 대등하게 마일스톤을 책임졌습니다.
| 구분 | [시나리오 1] SSH Brute Force (L4/L7 복합 대응) | [시나리오 2] Web L7 Directory Scanning (L7 대응) |
|---|---|---|
| 공격 도구 | Hydra 9.2 (network/attack_simulation.sh) |
Curl, Gobuster, Nikto |
| 유입 경로 | SSH 포트(TCP 22) 패스워드 무차별 대입 | Web HTTP/HTTPS(80/443) 비인가 디렉터리 경로 탐색 |
| 타깃 로그 | /var/log/auth.log (SyslogAuthEvent) |
/var/log/nginx/access.log (NginxAccessLogEvent) |
| 1차 탐지 룰 | 동일 IP 기준 5분 내 5회 이상 인증 실패 (SSH_BRUTE_FORCE) |
짧은 시간 내 비인가 디렉터리 경로 탐색 (WEB_DIRECTORY_SCANNING) |
| MITRE ATT&CK | T1110.001 (Brute Force: Password Guessing) |
T1595.003 (Active Scanning: Wordlist Scanning) |
| 차단 조치 | L4 Quarantine SG 교체 + L7 WAF IPSet /32 복합 차단 (BLOCK_AND_QUARANTINE) |
L7 AWS WAF IPSet /32 인바운드 차단 등록 (BLOCK_WAF) |
| 실측 소요 지연 | 5.48s (서버 5회 실패 후 첫 무응답 SYN) |
18.20s (Lambda 시작 후 첫 403 응답 / 전파 지연 관측) |
| 전파 채널 | Slack Block Kit (quarantine_applied: true, waf_blocked: true, T1110.001) |
Slack Block Kit (waf_blocked: true, 공격자 IP/32, T1595.003) |
| 복구 절차 | restore_baseline_sg.py (SG 원복) + unblock_waf_ip.py (WAF IP 해제) |
unblock_waf_ip.py (WAF IPSet 공격자 IP 삭제) |
모든 커밋과 PR은 단일 검증 스크립트를 통해 품질 게이트를 통과해야 합니다.
# R&R 도메인 경계선, Ruff Lint, Ruff Format, Pytest 1,907개 일괄 검증
powershell .\scripts\check.ps1# 1. 관리자 비밀번호 환경변수 설정
$env:GRAFANA_ADMIN_PASSWORD = "YourSecurePassword123!"
# 2. Docker Compose로 무상태 Grafana 기동 (127.0.0.1:3000 바인딩)
docker compose -f infra/grafana/docker-compose.yml up -d
# 3. 브라우저 접속: http://127.0.0.1:3000 (cloudshield-cloudwatch 데이터소스 자동 로드)| 구분 | 주요 문서 / 산출물 | 설명 및 바로가기 링크 |
|---|---|---|
| 공식 노션 워크스페이스 | 노션 칸반 보드 및 일일 스크럼 회의록 | 공식 노션 페이지 바로가기 ↗ |
| 최종 발표 슬라이드 | 독립형 로컬 구동 HTML 프레젠테이션 | 최종 발표 슬라이드덱 |
| 중간 발표 슬라이드 | 중간 주제 발표자료 HTML | 중간 발표 슬라이드덱 |
| 종합 보고서 | CloudShield 프로젝트 종합 상세 보고서 | 프로젝트 종합 보고서 |
| 데모 비디오 | 3분 30초 2분할 SSH 전구간 대응 및 복구 녹화본 | 3분 30초 데모 비디오 (MP4) |
| 플랫폼 포트폴리오 | 클라우드 A (승윤) 기술 포트폴리오 | 클라우드 A 기술 포트폴리오 |
| 보안 포트폴리오 | 보안 (찬원) 기술 포트폴리오 | 보안 기술 포트폴리오 |
| 관제 포트폴리오 | 클라우드 B (시훈) 기술 포트폴리오 | 클라우드 B 기술 포트폴리오 |
| 네트워크 포트폴리오 | 네트워크 (동형) 기술 포트폴리오 | 네트워크 기술 포트폴리오 |
| 팀 프로젝트 헌법 | AI 코딩 에이전트 작업 지침 | AGENTS.md |
| 기여 가이드 | 프로젝트 기여 및 Git 협업 컨벤션 | CONTRIBUTING.md |



