2025.10.31 (Day 5) 파이썬 예외 처리·로깅 및 보안 감사 로그 설계
목차
2025.10.31 (Day 5) 예외 처리, 로깅, 파일 입출력 활용 #
1. 주요 개념 요약 #
- 예외 처리 (try-except): 시스템의 비정상 종료를 방지하고 잘못된 입력이나 리소스 접근 실패 상황에서 시스템을 견고하게 유지한다.
- 로깅 (Logging): 예외 발생 시 상황 정보를 기록하여 디버깅 및 보안 관제(접근 실패, 탐지 상황 기록)에 활용한다.
- 파일 입출력: 데이터 분석을 위한 로그 및 데이터 파일을 처리하며,
with구문을 사용하여 리소스 누수와 예외 발생을 방지한다.
2. 실습 코드 및 응용 #
A. 로깅 및 데이터 마스킹 #
- 접근 기록을 파일에 남길 때 사용자 이름 등 민감 정보를 마스킹 처리하여 보안성을 강화한다.
import logging
import json
def mask_username(username):
if not isinstance(username, str) or len(username) < 2: return "Unknown"
return username[:2] + '*' * (len(username) - 2)
# 접근 성공/실패 시 로그를 JSON 형식으로 파일에 저장
log_data = {"level": "INFO", "status": "SUCCESS", "message": "접근 성공"}
with open('userAccess.log', 'a', encoding='utf-8') as f:
json.dump(log_data, f, ensure_ascii=False); f.write('\n')
B. 예외 처리 기반의 권한 제어 #
- 인증되지 않은 접근 시 발생한 예외를 포착하여 에러 정보를 외부에 노출하지 않고 내부 로그로만 관리한다.
3. 보안 관점 분석 #
- 시스템 가용성 확보:
try-except구문을 통해 예외 상황에서도 서비스가 중단되지 않도록 관리하며 정상적인 흐름을 유지한다. - 정보 유출 방지: 에러 발생 시 구체적인 시스템 정보나 스택 트레이스를 외부에 노출하지 않고 내부 로깅 시스템에만 기록한다.
- 보안 감사 증거 확보: 중요 이벤트 발생 시 시간 정보와 로깅 레벨을 적용해 별도 파일로 저장함으로써 사고 발생 시 분석 기초 데이터로 활용한다.
4. 요약 #
- 예외 처리는 시스템의 견고성을 결정하는 필수 요소로, 예상치 못한 입력을 보안 이벤트로 전환하여 처리할 수 있게 한다.
- 로깅과 파일 입출력은 마스킹된 정보를 안전하게 기록하여 보안 감사 및 침해 사고 탐지의 근거를 마련한다.
- 데코레이터와 결합한 로깅 구조는 공통 보안 정책을 일관성 있게 적용하는 효율적인 방법이다.