# 보안대책서 첨부·제공자료 가이드 작성일: 2026-05-20 대상: HWP 보안대책서의 `4. HWP에 반드시 추가해야 할 보안통제 매트릭스` ## 1. 먼저 정리 `보안통제 매트릭스`는 사용자가 따로 첨부해야 하는 파일이 아니라, **HWP 본문에 들어갈 표**입니다. 사용자가 준비해야 하는 것은 표의 마지막 열인 **확인 증적**입니다. 즉, 심사자가 “그 보안대책이 실제로 적용됐나요?”라고 물었을 때 보여줄 자료입니다. 소스코드, API 인증, 측정값 검증, 관리자 로그인, 비밀값 분리처럼 코드에서 설명 가능한 항목은 [SOURCE_SECURITY_EVIDENCE.md](SOURCE_SECURITY_EVIDENCE.md)에 별도로 정리했습니다. 프로젝트에는 보안대책서 첨부용 증적을 바로 만들기 위한 산출물도 포함되어 있습니다. | 산출물 | 용도 | |---|---| | `php/security_evidence.php` | 운영 점검 결과와 보안통제 매트릭스를 화면으로 확인 | | `php/security_evidence.php?format=md` | HWP에 붙여넣을 Markdown 보안 증적 보고서 다운로드 | | STM32 USART3 부팅 콘솔 로그 캡처 | 단말 링크업/DHCP/SNTP/TLS 핸드셰이크/서버 200 OK 증적 확인 | | `docs/SECURITY_EVIDENCE_PACKAGE.md` | 제출 첨부자료 패키지 구성 순서 | | `docs/OPERATIONS_SECURITY_CHECKLIST.md` | 월간 운영·보안 점검표 | | `docs/SOURCE_SECURITY_EVIDENCE.md` | 소스코드 기반 기술통제 설명 | | `docs/evidence/security_plan_mfa_evidence.html` | 관리자 MFA, 감사로그, 보관기간·백업 증빙 문구와 화면 캡처 | | `php/retention_cleanup.php` | SMS 로그, 센서 로그, 온습도 측정 이력, 관리자 감사로그 보관기간 정리 | | `scripts/backup_evidence.php` | 백업 파일 목록과 복구 테스트 결과 Markdown 증빙 생성 | ## 2. 결론: 사용자가 지금 제공해야 할 것 최소로는 아래 8가지만 있으면 HWP 보완이 가능합니다. | 우선순위 | 제공자료 | 왜 필요한가 | |---:|---|---| | 1 | 실제 구축 범위 확정 | 화재/누수/전원 이상을 넣을지, 온습도/오프라인만 넣을지 결정해야 문서 범위가 맞음 | | 2 | 서버 접속 URL | HTTPS 적용, API URL, 대시보드 URL을 문서에 정확히 적기 위함 | | 3 | Cafe24 서버 설치 경로 | PHP 파일 위치를 증적으로 쓰기 위함 | | 4 | STM32 단말 설치 위치와 장비 정보 | 장비 식별, 설치 위치, 자산대장 항목 작성 | | 5 | 기관망 연결 방식 | 단말이 업무망에 붙는지, 별도 인터넷인지, 방화벽 정책이 있는지 확인 | | 6 | 운영 담당자 역할 | 누가 점검하고, 누가 SMS를 받고, 누가 경보를 조치하는지 명확화 | | 7 | 보관기간 기준 | SMS 로그, 센서 로그, 측정 이력을 며칠/몇 년 보관할지 결정 | | 8 | 캡처 가능한 운영 화면 | 설치 점검, 대시보드, 월간 보고서, SMS 테스트 결과 증적 | 반대로 아래 항목은 사용자가 일일이 설명하지 않아도 됩니다. 프로젝트 소스코드에서 근거를 뽑아 문서화할 수 있습니다. | 항목 | 처리 방식 | |---|---| | API 서명 검증 | 코드 근거와 HWP 문구 작성 가능 | | JSON API 필수값 검증 | 코드 근거와 HWP 문구 작성 가능 | | 측정값 범위 검증 | 코드 근거와 HWP 문구 작성 가능 | | 서버 임계 판정·쿨다운 | `config.php` `METRIC_*` 근거와 HWP 문구 작성 가능 | | 관리자 TOTP MFA | 코드 근거, 등록 화면 캡처, HWP 문구 작성 가능 | | 관리자 감사로그 | 코드 근거와 운영 점검 증빙 작성 가능 | | 보관기간 정리 | `retention_cleanup.php --dry-run` 결과로 증빙 가능 | | 백업·복구 증빙 | `scripts/backup_evidence.php` 결과로 증빙 가능 | | 관리자 로그인/세션 보호 | 코드 근거와 HWP 문구 작성 가능 | | 비밀값 분리 구조 | 코드 근거와 HWP 문구 작성 가능 | | 보안 헤더 | `.htaccess` 근거 제시 가능 | | HTTPS URL 구조 | 코드/설정 예시는 제시 가능. 단 실제 적용 증적은 운영 화면 필요 | ## 3. 자료별로 정확히 무엇을 주면 되는가 ### 3.1 실제 구축 범위 아래 중 하나로 답하면 됩니다. | 선택 | 의미 | 문서 반영 | |---|---|---| | A | 이번 구축은 온습도 모니터링만 한다 | 화재/누수/전원 이상은 향후 확장으로 분리 | | B | 온습도 모니터링 + 장비 오프라인 감지만 한다 | 현재 프로젝트와 가장 잘 맞음 | | C | 화재/누수/전원 이상도 이번 범위에 포함한다 | 추가 센서, 코드, 증적이 더 필요 | 권장 답변: ```text 이번 1차 구축 범위는 서버실 온습도 모니터링, 임계 SMS 경보, 정상복귀 알림, 장비 오프라인 감지, 대시보드/월간보고까지로 한정한다. 화재·누수 및 전원 이상 감지는 향후 확장 범위로 분리한다. ``` ### 3.2 서버 정보 비밀번호나 API 키 원문은 주면 안 됩니다. 아래처럼 마스킹해서 주면 됩니다. ```text 서비스 도메인: https://example.com 설치 경로: public_html/sht30_monitor/ API URL: https://example.com/sht30_monitor/api/sensor_data.php 대시보드 URL: https://example.com/sht30_monitor/dashboard.php HTTPS 적용 여부: 적용 / 미적용 / 확인 필요 DB 종류: Cafe24 MySQL ``` 첨부하면 좋은 증적: - Cafe24 파일 관리자에서 `sht30_monitor` 폴더가 보이는 화면 - `setup_wizard.php` 점검 화면 - `dashboard.php` 로그인 화면 또는 대시보드 화면 - `monthly_report.php` 화면 ### 3.3 단말 정보 ```text 장비명: STM32 보드 (SHT30 온습도 센서 연계) 장비 ID: stm32-sht30-01 설치 위치: 서버실 / 서버랙 주변 / 기타 센서 모델: SHT30 온습도 센서 측정 주기: 5분 (펌웨어 기본) 네트워크 방식: 유선 LAN / Wi-Fi / 기타 단말 접속 방식: 현장 직접 접속 / SSH / 기타 ``` 첨부하면 좋은 증적: - 단말과 센서 설치 사진 - STM32 USART3(PD8/PD9, 115200) 부팅 콘솔 로그(링크업/DHCP/SNTP/TLS 핸드셰이크) 캡처 - 동일 콘솔에서 서버 200 OK 응답이 보이는 정상 보고 로그 캡처 ### 3.4 네트워크 연결 방식 이 부분이 심사에서 중요합니다. 아래 질문에 답이 필요합니다. ```text 1. 단말이 기관 업무망에 연결되는가? 2. 단말이 별도 인터넷망 또는 별도 Wi-Fi를 사용하는가? 3. 기관 방화벽에서 Cafe24 서버로 나가는 443 포트만 허용하는가? 4. 외부에서 단말로 접속할 수 있는 포트가 열려 있는가? 5. 단말 원격관리는 어떻게 하는가? ``` 권장 구조: ```text 단말은 기관 업무망으로 들어오는 인바운드 접속을 허용하지 않고, 승인된 Cafe24 서버로 HTTPS 아웃바운드 통신만 수행한다. ``` 첨부하면 좋은 증적: - 네트워크 구성도 - 방화벽 허용 정책 - 단말에서 `ss -lntup` 실행 결과 - 기관망 미연결 또는 분리 운영 확인 문구 ### 3.5 운영 담당자 정보 개인 이름을 꼭 문서에 넣을 필요는 없습니다. 역할 중심으로 적으면 됩니다. ```text 사업총괄: 혁신전략실장 사업관리: 정보기반팀 사업수행: 우편혁신AI연구팀 보안검토/점검: 정보보안센터 SMS 수신자: 전산실 운영 담당자 2명 월간 점검 담당: 정보기반팀 담당자 ``` 첨부하면 좋은 증적: - 운영 담당자 지정표 - SMS 수신자 현행화 확인표 - 월간 점검표 양식 ### 3.6 보관기간 기준 기관 내부 기준이 없으면 아래 권장안을 쓰면 됩니다. | 데이터 | 권장 보관기간 | |---|---:| | SMS 발송 로그 | 1년 | | 센서 이벤트 로그 | 1년 | | 온습도 측정 이력 | 1년 | | 관리자 감사로그 | 1년 | | 백업 파일 | 1년 또는 기관 기준 | 사용자가 결정해서 제공할 내용: ```text SMS 로그 보관기간: 1년 센서 로그 보관기간: 1년 온습도 측정 이력 보관기간: 1년 관리자 감사로그 보관기간: 1년 기관 내부 규정 우선 적용 여부: 예 / 아니오 ``` ### 3.7 백업·복구 정보 ```text DB 백업 주기: 매일 / 매주 / 매월 설정파일 백업 위치: 운영자 보관 / 암호화 저장소 / 기타 복구 테스트 주기: 월 1회 / 분기 1회 / 필요 시 ``` 첨부하면 좋은 증적: - DB 백업 파일 목록 - 복구 테스트 결과표 - 백업 담당자 지정표 ## 4. 보안통제 매트릭스 행별로 필요한 증적 | 매트릭스 항목 | 사용자가 줘야 하는 것 | 프로젝트에서 이미 준비 가능한 것 | |---|---|---| | 사업 범위 | 이번 구축 범위 확정 문장 | HWP 교체 문구 | | 네트워크 | 단말 네트워크 연결 방식, 방화벽 정책 | 네트워크 구성도 이미지 | | 전송구간 | 실제 서비스 URL, HTTPS 적용 여부 | API URL 구조, 설치 문서 | | API 인증 | API 키 원문이 아니라 “서버/단말 키 일치 확인” 결과 | 코드의 서명 검증 설명 | | 비밀값 | 설정파일 권한 캡처 | `config.local.php`, `firmware/common/secrets.h`(`APP_API_KEY`) 구조 설명 | | 관리자 인증 | 관리자 로그인 화면, MFA 등록 증빙, 감사로그 | 비밀번호 해시, TOTP MFA, 세션 보호, 실패 제한 코드 설명 | | 측정/임계 | 임계 운영 기준(`METRIC_*`) | 측정값 범위 검증, 서버 임계 판정·쿨다운 설명 | | 개인정보 | SMS 수신자 관리 기준 | SMS 설정 구조, 로그 테이블 설명 | | 로그관리 | 로그 보관기간, 관리자 감사로그 | `sensor_log`, `sensor_metric`, `sms_log`, `php/var/admin_audit.log` 설명 | | 백업 | DB/설정 백업 주기, 복구 테스트 결과 | `backup_evidence.php` 결과와 백업·복구 문구 | | 패치 | 월간 패치 점검 담당자 | 점검표 양식 | | 물리보안 | 설치 사진, 자산 정보 | 자산대장 양식 | | 장애대응 | 임계 경보/오프라인 대응 담당자 | 대시보드, 임계 경보, 월간보고 설명 | ## 5. 지금 당장 준비할 첨부자료 체크리스트 ### 필수 - [ ] 실제 구축 범위 확정 문장 - [ ] 서버 도메인과 설치 경로 - [ ] 단말 설치 위치와 장비 ID - [ ] 네트워크 연결 방식 설명 - [ ] SMS 수신자 관리 기준 - [ ] 로그/측정 이력 보관기간 기준 - [ ] 관리자 MFA 등록 확인표 - [ ] 임계 설정(`METRIC_*`) 확인 화면 - [ ] `setup_wizard.php` 점검 화면 캡처 - [ ] 대시보드 화면 캡처 - [ ] 단말 서비스 상태 화면 캡처 ### 있으면 통과 가능성을 높이는 자료 - [ ] 방화벽 정책 또는 네트워크 분리 확인 자료 - [ ] 설치 사진 - [ ] 자산관리대장 - [ ] 테스트 SMS 수신 화면 - [ ] 측정값 저장/임계 경보 테스트 결과 - [ ] DB 테이블 생성 화면 - [ ] 월간 보고서 화면 - [ ] 백업 파일 목록 - [ ] 보관기간 정리 dry-run 결과 - [ ] 백업·복구 증빙 Markdown - [ ] 복구 테스트 결과 - [ ] 월간 보안점검표 ## 6. 사용자에게 요청할 답변 양식 아래 양식만 채워주면 보안대책서에 넣을 표와 첨부자료 목록을 확정할 수 있습니다. ```text 1. 이번 구축 범위: 예) 서버실 온습도 모니터링 + 임계 SMS 경보 + 장비 오프라인 감지 + 대시보드 + 월간보고 2. 서버 도메인: 예) https://example.com 3. 서버 설치 경로: 예) public_html/sht30_monitor/ 4. 단말 설치 위치: 예) 서버실 서버랙 하단 5. 단말 네트워크 방식: 예) 별도 Wi-Fi / 기관망 / 유선 LAN / 기타 6. 외부에서 단말로 접속 가능 여부: 예) 불가 / SSH만 가능 / 확인 필요 7. SMS 수신자 수: 예) 운영 담당자 2명 8. 온습도 임계값: 예) 고온30/저온10℃, 고습70/저습20% 9. 로그 보관기간: 예) 센서 1년, SMS 1년, 측정 이력 1년 10. 백업 주기: 예) DB 주 1회 ``` ## 7. API 키와 비밀번호 제공 금지 다음 값은 문서 작성자에게 원문으로 제공하지 않는 것이 원칙입니다. - DB 비밀번호 - API 키 원문 - SMS secure key - 관리자 원문 비밀번호 - `ADMIN_TOTP_SECRET` 원문 - 서버 FTP/SFTP 비밀번호 - 단말 로그인 비밀번호 문서에는 다음처럼 마스킹해서 적습니다. ```text API_KEY: 운영 비밀값으로 서버와 단말에 동일 설정, 원문 미기재 SMS_SECURE: Cafe24 SMS 인증키, 원문 미기재 DB_PASS: config.local.php에만 저장, 원문 미기재 ADMIN_TOTP_SECRET: 운영 비밀값으로 서버에만 저장, 증빙에는 원문 미기재 또는 증빙용 임시 키 사용 ```