# GUARDiA ITSM v2.0 — 보안 설계서 > **GS인증 보안성 심사 제출용 공식 문서** --- ## 1. 인증/인가 설계 ### 1.1 JWT 기반 인증 ``` 로그인 요청 ↓ 비밀번호 bcrypt 검증 + 실패 횟수 확인 ↓ 5회 실패 시 30분 계정 잠금 ↓ JWT 토큰 발급 (유효기간: 120분) ↓ 모든 API: Authorization: Bearer {token} ``` ### 1.2 RBAC 권한 체계 | 역할 | 권한 | |------|------| | ADMIN | 전체 | | PM | 승인, 프로젝트, 보고서 | | ENGINEER | SR 처리, 배포, CMDB | | CUSTOMER | SR 접수·조회만 | ### 1.3 MFA/OTP - TOTP (Time-based One-Time Password) - RFC 6238 표준 준수 - Google Authenticator 호환 --- ## 2. 암호화 설계 ### 2.1 데이터 암호화 | 대상 | 알고리즘 | 비고 | |------|---------|------| | 서버 SSH 비밀번호 | AES-256-GCM | IV 12B + Tag 16B | | 사용자 비밀번호 | bcrypt (cost=12) | Rainbow table 방지 | | 라이선스 키 | AES-256-GCM + HMAC-SHA256 | | | 전송 데이터 | TLS 1.2+ (HTTPS) | Nginx 설정 | ### 2.2 감사 로그 무결성 ``` log_hash = SHA-256(prev_hash + actor + action + detail + timestamp) ``` 해시체인 방식으로 로그 위변조 즉시 탐지. --- ## 3. 보안 정책 ### 3.1 금지 사항 (하드코딩 원칙) | 항목 | 정책 | |------|------| | 외부 AI API | 완전 금지 (Ollama localhost만 허용) | | root SSH | 직접 접속 금지 (opsagent 전용) | | 자격증명 노출 | API 응답/로그에 IP·비밀번호 포함 금지 | | 스택트레이스 | 클라이언트 응답에서 완전 제거 | ### 3.2 입력값 검증 - SQL 인젝션: SQLAlchemy ORM 파라미터 바인딩 100% - XSS: 모든 출력값 HTML 이스케이프 - 경로 조작: Path.resolve().relative_to() 검증 - 파일 업로드: 확장자 화이트리스트 (.pdf/.docx/.xlsx/.png/.jpg/.zip) ### 3.3 Rate Limiting - 로그인 API: 분당 5회 제한 - 일반 API: slowapi 적용 - Fail2ban: SSH 5회 실패 시 1시간 차단 --- ## 4. 개인정보보호법 준수 항목 | 조항 | 준수 내용 | |------|---------| | 제28조 | 개인정보 암호화 저장 (비밀번호 bcrypt) | | 제29조 | 접근 통제 (RBAC, MFA) | | 제30조 | 개인정보처리방침 게시 | | 제31조 | 개인정보영향평가 검토 | --- ## 5. 시큐어코딩 자동 점검 ```bash # GUARDiA 내장 점검 도구 POST /api/compliance/scan # 점검 규칙 (21개) - SC-8개: SQL인젝션, XSS, 하드코딩자격증명, OS인젝션, 경로조작, 정보노출, CSRF, 취약암호화 - WA-7개: 대체텍스트, 색상대비, 키보드접근성, 폼레이블, 언어속성, 포커스표시, ARIA역할 - PI-6개: 주민번호, 신용카드, 이메일수집, 비밀번호평문, 전화번호, 로그개인정보 ``` *Copyright © 2026 (주)지오정보기술 All Rights Reserved.*