🛡️ 보안포털 구축기
EPISODE 05
정보자산 관리
전면 고도화
전면 고도화
엑셀 업로드부터 EOS 자동감지, 정렬/필터/페이지네이션까지
보안포털의 정보자산 관리가 한 단계 더 진화했다
보안포털의 정보자산 관리가 한 단계 더 진화했다
01
이번 5편에서 구현한 것
4편 이후 추가된 핵심 기능 목록
정보자산관리대장 엑셀 파서 완전 재작성
서버/클라우드/네트워크/DBMS/정보보호시스템/WebWas/PC/응용시스템 등 시트별 컬럼 구조가 모두 달라 각각 정확한 인덱스 매핑 처리
EOS(기술지원 종료) 자동 감지
CentOS 7, Windows Server 2012, Oracle 11g 등 28개 기준으로 OS/버전에서 EOS 날짜 자동 판별 및 팝업 알림
누적/덮어쓰기 선택 업로드
자산번호+자산명+IP 기반 MD5 해시 ID로 중복 방지. 같은 자산은 업데이트, 새 자산은 추가
관리자·일반포탈 UI 완전 동기화
탭 필터, 담당자/부서 검색, 컬럼 정렬, 15개씩 페이지네이션을 양쪽 동일하게 적용
02
시트별 컬럼 매핑 설계
각 시트마다 다른 컬럼 구조를 SHEET_CONFIG로 통합 관리
# 시트별 정확한 컬럼 인덱스 매핑 (0-based) SHEET_CONFIG = { "서버": { "asset_type": "서버", "no_col": 1, # No 컬럼 위치 "cols": { "자산명": 5, "IP": 8, "담당자": 14, "EOS": 23, "진단여부": 25 ... } }, "DBMS": { # 컬럼 수가 달라 별도 정의 "cols": { "IP": 8, "운영체제": 9, "EOS": 20, "진단여부": 22 ... } }, "클라우드": { ... } # 서버와 동일 구조 }
💡 핵심 포인트
셀 병합(Merge Cell) 때문에 openpyxl로 읽으면 헤더 행이 2개(대분류/소분류)로 나뉘어 실제 데이터 시작 행이 달라짐. No 컬럼이 숫자인지
isinstance(no_val, (int, float))로 판별해 데이터 행만 파싱.03
EOS 자동 감지 기능
28개 OS/SW 기준으로 기술지원 종료 자동 판별
| OS / SW | EOS 날짜 | 등급 |
|---|---|---|
| CentOS 7 | 2024-06-30 | 가 |
| Windows Server 2012 | 2023-10-10 | 가 |
| Oracle 11g | 2020-12-31 | 가 |
| IIS 6.0 | 2015-07-14 | 가 |
| Ubuntu 18 | 2023-04-30 | 나 |
| MySQL 5.7 | 2023-10-31 | 나 |
| Windows 10 | 2025-10-14 | 다 |
⚠️ EOS 알림 동작 방식
로그인 후 2초 뒤 EOS 대상 자산이 있으면 자동 팝업 표시. 헤더에 빨간 배지(⚠️ EOS 대상 N건)로 항시 표시. 담당자가 즉시 인지할 수 있도록 설계.
04
누적 / 덮어쓰기 선택 업로드
중복 없이 안전하게 자산 데이터 관리
🔄 덮어쓰기 모드
📌 기존 전체 데이터 삭제
📌 새 파일로 완전 교체
📌 연간 자산 전수조사 시
📋 누적 모드
✅ 기존 데이터 유지
✅ 신규 자산만 추가
✅ 수시 자산 추가 시
# 중복 방지 ID 생성 (자산번호+자산명+IP 기반) def make_id(asset_type, asset_no, asset_name, ip): key = f"{asset_type}|{asset_no}|{asset_name}|{ip}" return int(hashlib.md5( key.encode(), usedforsecurity=False # bandit B324 ).hexdigest()[:12], 16) # ON CONFLICT: 같은 자산이면 업데이트 INSERT INTO excel_data ... ON CONFLICT(category, item_id) DO UPDATE SET data=:data
05
관리자 ↔ 일반포탈 UI 동기화
한 곳에서 업로드하면 양쪽에 동시 반영
170+
자산 관리
15개
페이지당 표시
8종
자산 분류
탭 필터
전체 / 서버 / 네트워크 / 보안장비 / DBMS / WEB·WAS / PC / 클라우드 / 응용시스템
다중 필터 + 컬럼 정렬
담당자·부서·진단여부·키워드 검색. 헤더 클릭으로 오름차순↑/내림차순↓ 정렬. 보안등급은 가→나→다 순 정렬
06
CI/CD — 코드 품질 자동 검사
GitHub Actions로 lint → test → deploy 자동화
📤
git push origin main
코드 변경사항 GitHub에 업로드
↓
🔍
flake8 — 코드 스타일 검사
E225(공백), E305(빈줄), E303(초과빈줄) 등 PEP8 준수 확인
↓
🛡️
bandit — 보안 취약점 검사
B324(MD5 보안), B608(SQL인젝션) 등 코드 보안 자동 점검
↓
🧪
pytest — 자동 테스트
API 엔드포인트 동작 검증
↓
🚀
VPS 자동 배포
Docker 컨테이너 재시작 및 Nginx 서빙
💡 MD5 보안 이슈 해결법
ID 생성용 MD5는 보안 목적이 아니므로
usedforsecurity=False 파라미터를 추가해 bandit B324 경고를 정상적으로 처리. 보안 코드 리뷰 통과!5편 완료!
다음 편 예고
다음 편 예고
정보자산 관리의 기반이 완성됐습니다.
이제 취약점 진단 결과와 정보자산을 연동해
자산별 취약점 현황을 자동으로 보여주는
대시보드 고도화로 이어집니다.
이제 취약점 진단 결과와 정보자산을 연동해
자산별 취약점 현황을 자동으로 보여주는
대시보드 고도화로 이어집니다.
'01. AI 테크 & 트렌드 (Main) > Claude & Anthropic' 카테고리의 다른 글
| [보안포털 구축기 6편] 자산 모달 & 권한관리 고도화 (0) | 2026.05.19 |
|---|---|
| [보안포털 구축기 4편]도메인 연동 &보안이슈관리 고도화 (0) | 2026.04.27 |
| [보안포털 구축기 3편] systemd → Docker 전환 — 기존 데이터 무손실 이전 (1) | 2026.04.18 |
| [보안포털 구축기 2편]보안포털 코드 보안 강화 — 7가지 취약점 수정기 (2) | 2026.04.18 |
| [보안포털 구축기 1편]보안포털 테스트 하네스 구축기 — CI/CD 자동화 완성 (0) | 2026.04.17 |