[신청서 및 서류 (certification/)] 02_프로그램등록/GS인증_신청서.md - 신청자/제품 정보 모두 기입 - 시험 요청 항목 8개 품질특성 전체 선택 - 제출 서류 체크리스트 + 수수료 안내 04_기술문서/제품_기능_명세서.md - 기능 코드별 전체 목록 (SR-001~008, INC-001~005, DEP-001~006 등) - 시스템 아키텍처 개요 - 성능 기준 및 측정값 - 제한 사항 명시 04_기술문서/사용자_매뉴얼_개요.md - 설치/최초로그인/주요화면/관리자기능/제거 설명 - GS인증 사용성 요구사항 충족 04_기술문서/보안_설계서.md - 인증/인가 설계 (JWT+RBAC+MFA) - 암호화 설계 (AES-256-GCM, bcrypt, TLS) - 보안 정책 (금지사항, 입력값검증, Rate Limiting) - 개인정보보호법 준수 항목 01_사전준비/제품개요서.md - 저작권 등록용 제품 설명 - 기술 특허, 수상 현황 06_제출서류/저작권등록_신청서_가이드.md - 한국저작권위원회 제출 항목 입력값 완성 - 저작물 설명서 (제출 그대로 사용 가능) 07_심사대응/예상_질문_답변.md - TTA 심사관 예상 9개 질문 + 완성된 답변 - 기능적합성/보안성/사용성/이식성/신뢰성별 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
110 lines
2.8 KiB
Markdown
110 lines
2.8 KiB
Markdown
# 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.*
|