POSA_LEAKSMS/docs/superpowers/specs/2026-05-20-operational-security-completion-design.md
유창욱 90f121e14c chore: import codebase with security hardening
SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트).
전체 코드리뷰에서 도출된 보안 하드닝 10건 반영:
- 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시)
- 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php)
- 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점)
- CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php)
- 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화

_backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
2026-06-20 09:37:40 +09:00

9.2 KiB

누수감지 시스템 운영·보안 완성형 개선 요구사항

참고: 이 문서는 누수감지 시절의 기록(레거시)이며, 현재 시스템은 SHT30 온습도 전용으로 전환되었습니다.

작성일: 2026-05-20
상태: 사용자 승인 방향 기반 초안
대상 프로젝트: leak_sms_v2 v2605

1. 배경

현재 프로젝트는 누수 감지, Raspberry Pi 전송, Cafe24 PHP API, MySQL 저장, SMS 알림, 사진 업로드, 대시보드, 사고 대응, 월간 보고서까지 기본 운영 흐름을 갖췄다.

다음 개선의 목표는 기능을 무작정 확장하는 것이 아니라, 제출 가능한 보안대책서와 현장 운영 가능한 시스템으로 완성도를 올리는 것이다. 화재 감지, 전원 이상, 다중 지점 같은 확장은 지금 바로 구현하지 않고 향후 확장 범위로 분리한다.

2. 목표

  1. 보안성 검토 또는 기관 보안검토에 대응할 수 있는 제출 패키지를 만든다.
  2. 실제 현장 운영 중 실패할 수 있는 지점(API, SMS, 카메라, Pi, DB)을 더 잘 드러내고 대응 가능하게 만든다.
  3. 운영자가 대시보드와 보고서에서 현재 위험, 미확인 사고, 사진, SMS 실패, 장비 상태를 빠르게 판단하게 한다.
  4. 설치·운영·보안 증적을 수동 설명이 아니라 시스템과 문서에서 뽑을 수 있게 한다.
  5. 향후 화재/전원/다중 Pi 확장을 위해 문서상 경계와 재검토 조건을 정리한다.

3. 비목표

  • 이번 단계에서 화재 감지 센서를 실제 구현하지 않는다.
  • 이번 단계에서 전원 이상 감지 회로를 실제 구현하지 않는다.
  • 이번 단계에서 다중 기관/다중 고객용 제품 구조로 전환하지 않는다.
  • 이번 단계에서 Cafe24 외 별도 클라우드, 앱, 푸시 알림을 추가하지 않는다.
  • 이번 단계에서 HWP 파일을 직접 자동 편집하지 않는다. HWP에 붙일 문구, 표, 이미지, 첨부자료를 준비한다.

4. 사용자와 이해관계자

사용자 필요한 것
운영 담당자 누수, 장비 오프라인, SMS 실패, 사진 상태를 빠르게 확인하고 조치 기록
보안 담당자 보안통제, 구현 근거, 증적, 잔여위험을 확인
사업/관리 담당자 제출 가능한 보안대책서와 설치·운영 산출물
현장 점검자 Pi, 센서, 카메라, 네트워크 상태 점검 절차

5. 개선 접근

선택한 접근은 운영·보안 완성형이다.

5.1 Phase 1: 심사 대응 패키지

보안대책서와 실제 구현 사이의 간극을 줄인다.

요구사항:

  • 보안대책서에 넣을 보안통제 매트릭스를 완성한다.
  • 소스코드 기반 보안근거 문서를 유지한다.
  • 사용자가 제공해야 할 자료와 코드에서 이미 설명 가능한 자료를 분리한다.
  • HTTPS, API 서명, 사진 업로드 검증, 관리자 인증, 비밀값 분리, 로그관리, 백업, 물리보안을 각각 증적과 연결한다.
  • 최종 제출 전 “첨부자료 체크리스트”를 운영자가 따라갈 수 있게 한다.

성공 기준:

  • 보안대책서 본문에 넣을 표와 문구가 준비되어 있다.
  • 제출용 첨부자료 목록이 명확하다.
  • API/HTTPS/인증/사진정보 관련 질문에 코드 근거로 답할 수 있다.
  • 사용자가 제공해야 하는 자료가 10개 내외의 실무 항목으로 정리되어 있다.

5.2 Phase 2: 현장 운영 안정성

실패 상황을 숨기지 않고 운영자가 볼 수 있게 한다.

요구사항:

  • Pi 오프라인 상태가 대시보드에서 명확히 보여야 한다.
  • SMS 발송 실패가 대시보드와 월간 보고서에 드러나야 한다.
  • 카메라 촬영 실패 또는 사진 업로드 실패가 Pi 로그에만 묻히지 않도록 운영 점검 항목에 포함해야 한다.
  • API 실패, DB 실패, SMS 실패, 사진 실패를 장애 유형별 대응 절차와 연결한다.
  • 백업·복구 점검 기준을 문서와 운영 체크리스트에 반영한다.

성공 기준:

  • 운영자가 “지금 감시가 정상인지” 1분 안에 판단할 수 있다.
  • 장애 유형별로 확인 위치와 조치가 문서화되어 있다.
  • 월간 보고서에서 SMS 실패와 사고 처리 상태를 확인할 수 있다.

5.3 Phase 3: 관리자 UX와 보고서 품질

대시보드와 보고서를 심사자·운영자 관점에서 읽기 쉽게 만든다.

요구사항:

  • 대시보드 첫 화면은 위험 상태, 미확인 사고, 오프라인 장비, 최근 사진을 우선 보여준다.
  • 설치 점검 화면은 통과/경고/실패를 명확히 구분한다.
  • 월간 보고서는 출력물로 제출해도 의미가 있도록 요약, 사고 내역, SMS/사진 현황을 정리한다.
  • 사진 타임라인은 사고별로 묶어 누수 상황을 이해하기 쉽게 표시한다.
  • 모바일에서도 운영자가 핵심 상태를 확인할 수 있어야 한다.

성공 기준:

  • 대시보드만 보고도 현재 위험 우선순위를 알 수 있다.
  • 월간 보고서 출력물이 보안대책서 증적 또는 운영 보고 자료로 쓸 수 있다.
  • 설치 점검 결과를 캡처하면 보안 증적으로 이해 가능하다.

5.4 Phase 4: 자동 증적 생성

운영자가 보안대책서 첨부자료를 반복 수작업으로 만들지 않게 한다.

요구사항:

  • 설치 점검 결과를 HTML 또는 CSV로 저장할 수 있게 한다.
  • API 연결 테스트 결과를 문서에 붙일 수 있는 형태로 출력한다.
  • SMS 테스트 결과와 최근 SMS 실패 현황을 확인 가능하게 한다.
  • Pi 상태 확인 명령과 결과 양식을 문서화한다.
  • 보안통제 매트릭스의 각 항목이 어떤 증적으로 확인되는지 연결한다.

성공 기준:

  • 보안대책서 첨부자료를 준비할 때 “무엇을 캡처해야 하는지”가 명확하다.
  • 운영자는 실제 비밀번호/API 키를 노출하지 않고 증적을 만들 수 있다.
  • 최소 증적 5개만으로도 시스템 보안구조를 설명할 수 있다.

5.5 Phase 5: 확장 준비

확장은 설계상 가능하게 두되, 현 단계 심사 범위를 늘리지 않는다.

요구사항:

  • 화재 감지, 전원 이상, 다중 Pi, 다중 위치는 “향후 확장”으로 분리한다.
  • 확장 시 보안성 재검토 조건을 명확히 한다.
  • 현재 HWP에는 1차 구축 범위를 누수/오프라인 중심으로 제한한다.
  • 센서 추가 시 필요한 보안통제 항목을 별도 표로 남긴다.

성공 기준:

  • 현재 제출 범위가 과대 기재되지 않는다.
  • 확장 요구가 생겨도 보안대책서에서 어떤 절차를 따라야 하는지 설명 가능하다.

6. 우선순위

순위 개선 항목 이유
1 보안대책서/증적 패키지 승인·심사 리스크가 가장 큼
2 운영 실패 가시화 실제 누수 상황에서 신뢰성에 직결
3 대시보드/보고서 품질 운영자와 심사자 모두에게 중요
4 자동 증적 생성 반복 작업과 제출 준비 부담 감소
5 확장 준비 범위를 늘리지 않고 향후 대응력 확보

7. 산출물

이미 존재하거나 보완할 산출물:

  • docs/SECURITY_PLAN_HWP_REVIEW.md
  • docs/SECURITY_PLAN_PASS_READINESS.md
  • docs/SECURITY_PLAN_ATTACHMENT_GUIDE.md
  • docs/SOURCE_SECURITY_EVIDENCE.md
  • docs/INSTALL_PI_SERVER.md
  • docs/assets/security_plan/generated/*.png

추가로 만들 산출물:

  • 운영 점검 체크리스트
  • 보안대책서 최종 첨부자료 패키지 목차
  • 설치 점검 결과 저장 기능
  • API/사진 업로드 테스트 결과 저장 양식
  • 월간 보고서 제출용 출력 개선안
  • 장애 대응 절차표

8. 주요 위험과 대응

위험 대응
HWP 사업 범위가 실제 구현보다 넓음 1차 범위를 누수/오프라인 중심으로 정정
HTTPS 적용이 코드만으로 증명되지 않음 실제 도메인 인증서/SSL 설정 화면을 증적으로 요구
API 키 원문 노출 위험 문서에는 원문 미기재, 일치 여부만 증명
외부 웹호스팅에 대한 심사 질문 업무망 분리, 아웃바운드 HTTPS, 최소정보 저장 원칙 명시
사진정보가 민감 시설정보로 해석될 위험 목적 제한, 접근 제한, 보관기간, 삭제 기준 명시
기능 확장이 심사 범위를 키움 화재/전원/다중 Pi는 향후 확장으로 분리

9. 성공 상태

이 개선이 끝났다고 볼 수 있는 상태는 다음과 같다.

  • HWP 보안대책서에 넣을 문구, 표, 이미지, 첨부자료가 준비되어 있다.
  • 사용자는 어떤 자료를 직접 제공해야 하는지 알고 있다.
  • 코드 기반 보안대책은 문서화되어 있다.
  • 대시보드와 보고서는 운영·심사 증적으로 쓸 수 있다.
  • 현장 장애 상황별 대응 절차가 문서화되어 있다.
  • 확장 기능은 현재 범위와 분리되어 보안성 검토 리스크를 키우지 않는다.

10. 다음 단계

다음 단계에서는 이 요구사항을 아래 순서의 구현 계획으로 분해한다.

  1. 보안대책서 제출 패키지 정리
  2. 운영 실패 가시화 개선
  3. 대시보드/보고서 증적 품질 개선
  4. 자동 증적 생성 기능
  5. 확장 범위 문서화