폐쇄망 현장 — 방산·국방 도메인 · 감사에 낼 자료를 미리 만들어 두기 · 실습
요구 한 줄과 파일 한 곳을 잇는 표 만들기
목표
요구사항마다 어떤 파일이 근거인지를 묶은 증거 색인을 만들고, 해시로 봉인하고, 검증기로 끊어진 곳을 세고, 반출 심사를 거친 사본으로 감사 대응 꾸러미를 닫습니다.
왜 중요한가
감사에서 떨어지는 항목은 대개 하지 않은 일이 아니라 보이지 못한 일입니다. 요구 한 줄과 파일 한 곳 사이에 길이 놓여 있지 않으면 그 자리에서 답할 수 없고, 답하지 못한 항목은 하지 않은 것과 같게 기록됩니다. 그 길은 감사 전날 놓을 수 없습니다 — 근거 파일은 시간이 지나면 덮이고 사라지기 때문입니다. 그래서 색인에는 경로만이 아니라 그때 그 파일의 해시가 들어가고, 내보낼 때 값을 가리면 해시도 함께 바뀝니다. 이 실습에서 어려운 부분은 규칙이 아니라 이 일관성입니다.
단계
1. python3 로 /root/audit/data 에 요구사항·근거 파일 14개·정책·지난 색인을 만듭니다. 생성 스크립트를 그대로 쓰세요.
2. 근거 파일의 머리말을 읽어 요구별 근거 목록을 /root/audit/index.json 에 적습니다.
3. 근거마다 SHA-256 을 붙여 /root/audit/index-sealed.json 으로 봉인합니다.
4. 지난 점검 때 낸 /root/audit/data/snapshot.json 을 검증해 결과를 /root/audit/verify.json 에 적습니다.
5. 근거를 설계와 운영으로 나눠 요구별 판정을 /root/audit/strength.csv 에 적습니다.
6. 같은 수집을 다시 돌려 /root/audit/index-rerun.json 을 만들고 결정성을 /root/audit/determinism.json 에 적습니다.
7. 반출 심사 규칙으로 가린 사본을 /root/audit/submit/evidence/ 에 만들고 /root/audit/redaction.csv 를 남깁니다.
8. 가린 사본의 해시로 /root/audit/submit/index.json 을 봉인하고 /root/audit/submit/verify.json 과 /root/audit/submit/INDEX.md 로 꾸러미를 닫습니다.
참고
- 기준일은
/root/audit/data/asof.txt에 있습니다.date로 오늘을 쓰면 같은 자료에서 날마다 다른 답이 나옵니다. - 근거 파일의 머리말은 두 가지 형식입니다.
.json은 최상위 열쇠(evidence_id·covers·kind·collected_at)에, 나머지는 앞머리 주석 줄(# evidence-id:처럼)에 들어 있습니다. - 색인의
path는/root/audit기준 상대 경로입니다. 꾸러미 안 색인만/root/audit/submit기준입니다. - 근거 세기 구분과 반출 심사 규칙은
/root/audit/data/policy.json에 있습니다. 규칙을 코드에 박지 말고 그 파일에서 읽으세요. - 6단계의 표준형은 색인에서
generated_at을 뺀 뒤json.dumps(..., ensure_ascii=False, sort_keys=True, separators=(",", ":"))한 글자열의 SHA-256 입니다. - 흔한 실수 1: 7단계에서 원본 근거 파일을 고치는 것. 가린 것은 사본이어야 하고 원본은 그대로 남아 있어야 합니다.
- 흔한 실수 2: 8단계에서 원본 해시를 그대로 옮기는 것. 가린 사본에는 가린 사본의 해시를 붙여야 받는 쪽 검증이 통과합니다.
- 표준 문서: [NIST SP 800-171 Rev 3](https://csrc.nist.gov/pubs/sp/800/171/r3/final), [NIST SP 800-53 Rev 5](https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final), [NIST SP 800-92](https://csrc.nist.gov/pubs/sp/800/92/final). 이 실습의 REQ 번호와 RED 번호는 표준의 통제 번호가 아니라 자료 안에서만 쓰는 합성 번호입니다.
단계 8개
- 요구사항과 근거 파일 만들기
- 요구마다 근거를 잇는 색인 만들기
- 근거의 해시를 색인에 못박기
- 지난 점검 때 낸 색인을 검증기로 걸러 보기
- 근거의 세기를 나눠 부족한 자리 찾기
- 다시 수집해도 같은 색인이 나오는지 보기
- 반출 심사로 가린 사본 만들기
- 꾸러미를 닫고 검증기로 스스로 확인하기