GS인증 획득을 위한 파트별 필수 요건 체크리스트

odada·2025년 8월 12일

GS인증은 소프트웨어의 품질을 국가가 공인하는 제도로, 단순히 기능 구현을 넘어 '체계적인 프로세스와 증명'을 요구합니다. 각 파트별로 아래의 필수 요건들을 충족하고, 모든 과정을 문서화해야 합니다.


1. 기획 (Planning)

기획 단계에서는 관리의 용이성, 이력 추적, 법적 고지사항을 중심으로 모든 기능과 페이지를 빠짐없이 정의해야 합니다.

필수 페이지

  • 개인정보처리방침: 법규에 맞는 최신 내용 상세 기재
  • 이용약관: 서비스 규칙, 사용자 권리/의무 명시
  • 사이트맵: 전체 메뉴 구조를 보여주는 페이지
  • 관리자 접속 페이지: 별도의 경로로 분리된 로그인 페이지

관리자 영역 필수 기능

  • 대시보드: 시스템 주요 현황 (방문자, 회원, 게시물, 시스템 리소스 등) 요약
  • 회원 관리:
    • 목록 조회 (검색, 정렬, 필터링)
    • 정보 수정 및 등급(권한) 변경
    • 강제 탈퇴 및 접속 차단
    • 개인별 로그인 이력 (시간, IP) 조회
  • 콘텐츠 관리:
    • 모든 게시판의 게시물 생성, 조회, 수정, 삭제 (CRUD)
    • 공지사항 및 팝업 관리
    • 금지어 설정 및 관리
  • 통계 및 로그 관리:
    • 접속 통계 (일/주/월별 방문자, PV, 유입 경로)
    • 관리자 활동 로그 (가장 중요): 모든 관리자의 생성/수정/삭제 행위에 대한 기록 (누가, 언제, 어떤 데이터를, 어떻게 변경했는지)
    • 오류 로그 조회 및 관리
  • 시스템 설정:
    • 웹사이트 기본 정보(명칭, 이메일 등) 관리
    • 메뉴 구조 관리
    • 시스템 백업 및 복원

사용자 영역 필수 기능

  • 회원 기능: 회원가입, 아이디/비밀번호 찾기, 정보 수정, 회원 탈퇴
  • 게시판 기능: 게시물 CRUD (본인 글에 한함), 파일 첨부, 댓글
  • 검색 기능: 웹사이트 내 전체 콘텐츠 대상 검색

2. 디자인 (UI/UX)

디자인은 사용성과 접근성에 초점을 맞추어 모든 사용자가 불편 없이 이용할 수 있도록 설계해야 합니다.

  • 사용 편의성 및 일관성:
    • 모든 페이지에 일관된 레이아웃과 네비게이션 적용
    • 사용자가 자신의 위치를 명확히 알 수 있는 LNB, 브레드크럼(Breadcrumb) 제공
    • 모든 버튼과 링크는 기능과 목적을 명확히 인지할 수 있도록 디자인
  • 웹 접근성 (Web Accessibility):
    • WCAG 2.1 (AA 등급) 기준 준수 설계
    • 명확한 명도 대비
    • 이미지에 대한 대체 텍스트(Alt Text) 기입 공간 설계
    • 키보드만으로 조작 시, 포커스의 이동이 논리적이고 명확하게 보이도록 디자인 (Focus-visible)
  • 사용자 피드백 설계:
    • 모든 사용자 액션(클릭, 저장, 삭제 등)에 대한 명확한 피드백(성공, 실패, 오류 메시지) 제공
    • 오류 발생 시, 원인과 해결 방법을 안내하는 메시지 설계
  • 크로스 브라우징 대응:
    • 지정된 지원 브라우저(IE 포함 가능) 환경에서 UI가 깨지지 않도록 디자인

3. 프론트엔드 (Frontend)

개발 표준과 보안, 접근성 준수를 코드로 증명해야 합니다.

  • 시큐어 코딩 (Secure Coding):
    • 행정안전부 '소프트웨어 개발보안 가이드' 준수
    • XSS (Cross-site Scripting) 방지: innerHTML 대신 textContent 사용, DOM 기반 XSS 취약점 제거
    • CSRF (Cross-site Request Forgery) 방지: 요청 시 토큰 사용
    • eval(), setTimeout(string), new Function(string) 등 보안에 취약한 함수 사용 금지
  • 웹 접근성 구현:
    • 모든 콘텐츠에 키보드로 접근 및 실행 가능하도록 구현
    • WAI-ARIA 속성을 사용하여 동적 콘텐츠 및 컨트롤의 접근성 보장
    • 이미지에 의미 있는 alt 속성 제공
  • 크로스 브라우징:
    • 인증 신청 시 명시한 모든 브라우저 및 버전에서 완벽하게 동일한 기능과 UI를 제공해야 함
  • 성능:
    • Lighthouse 등을 이용한 성능 측정 시 심각한 문제 없음
    • 이미지 최적화, 코드 스플리팅 등 기본적인 성능 최적화 적용
  • 유효성 검사:
    • W3C Markup Validation, CSS Validation 통과
    • 모든 사용자 입력 값에 대한 프론트엔드 단의 1차 유효성 검사(타입, 길이, 필수값 등) 필수

4. 백엔드 (Backend)

서버는 안정성, 데이터 무결성, 보안, 로그 기록의 네 가지 원칙을 중심으로 구축되어야 합니다.

  • API 및 데이터 처리:
    • 모든 API 요청에 대해 인증(Authentication) 및 인가(Authorization) 절차 적용
    • 서버로 유입되는 모든 데이터에 대해 2차 유효성 검사 (서버사이드 렌더링 포함)
    • SQL Injection, Path Traversal 등 주요 공격에 대한 방어 로직 구현
    • 파일 업로드 시 확장자 및 MIME 타입 검증, 용량 제한, 악성코드 스캔 로직 구현
  • 보안:
    • 비밀번호 등 민감 정보는 반드시 해시(BCrypt 등)하여 저장
    • 세션/토큰 관리의 안전성 확보 (HTTPS 필수, Secure/HttpOnly 플래그 사용)
  • 로깅 (Logging):
    • (가장 중요) 사용자 접속 로그, 관리자 활동 로그, 주요 데이터 변경 이력, 시스템 오류 로그 등 모든 유의미한 활동을 파일 또는 DB에 기록
    • 로그는 6하원칙(언제, 어디서, 누가, 무엇을, 어떻게, 왜)에 준하여 기록하여 추적성을 보장
  • 서버 관리 및 안정성:
    • 과부하 방지 및 예외 처리: 특정 기능 오류가 전체 시스템 장애로 이어지지 않도록 설계
    • 데이터베이스 백업 및 복구 스크립트 또는 기능 제공
    • 시스템 리소스(CPU, Memory, Disk) 모니터링 기능 또는 API 제공

5. 개발 스펙

네, 언어와 기술 스펙에 대한 궁금증은 당연합니다. 결론부터 말씀드리면 GS인증은 특정 언어나 기술 스펙을 강제하지 않습니다. PHP로 만들든, Python으로 만들든, Node.js로 만들든 상관없습니다.

하지만 '안정성, 보안성, 그리고 기술 지원의 용이성'을 증명하기 좋은, 사실상 공공 부문에서 선호하는 '국룰' 조합이 존재합니다. 최신 기술보다는 오랫동안 검증된 스택을 선택하는 것이 훨씬 유리합니다.


1. 언어 (Programming Language)

자바(Java)가 압도적인 표준입니다.

  • 왜 Java인가?

    • 전자정부 표준 프레임워크 (e-GovFrame): 정부 및 공공기관 사업의 기반이 되는 프레임워크가 바로 Spring Framework 기반의 자바입니다. 이 프레임워크를 사용하면 GS인증에서 요구하는 보안, 데이터 처리, 화면 처리 등의 요건을 상당 부분 충족하고 들어갑니다.
    • 안정성과 레퍼런스: 수많은 공공 시스템이 자바로 구축되어 있어 안정성이 검증되었고, 참고할 수 있는 사례가 많습니다.
    • 인력 수급: 유지보수를 위한 개발 인력을 구하기 용이하다는 점도 큰 장점입니다.
  • 다른 언어는?

    • PHP, Python, Node.js 등: 기술적으로 구현이 불가능한 것은 아닙니다. 하지만 왜 자바와 표준 프레임워크를 사용하지 않았는지, 우리가 선택한 기술 스택이 어떻게 안정성과 보안성을 보장하는지에 대해 더 많은 문서와 근거로 '증명'해야 하는 부담이 있습니다.

💡 추천: 특별한 이유가 없다면 Java를 선택하는 것이 가장 안전하고 효율적인 길입니다.


2. 기술 사양 (Tech Specs)

기술 스펙 역시 '최신'보다는 '검증된 안정성'과 '오픈소스'가 핵심 키워드입니다.

OS (운영체제)

  • 리눅스 (Linux): CentOS, Rocky Linux, Ubuntu Server 등 서버용 리눅스 배포판을 가장 선호합니다. 오픈소스라 비용 부담이 없고, 안정성이 높기 때문입니다.

웹/WAS (Web/Application Server)

  • 오픈소스: Apache Tomcat이 사실상 표준입니다. Nginx를 웹 서버로 앞단에 두는 구성도 많이 사용됩니다.
  • 상용: Jeus, WebtoB 등 국산 상용 WAS도 사용되지만, 특별한 성능 요건이 없다면 Tomcat으로 충분합니다.

DB (데이터베이스)

  • 오픈소스: MySQL/MariaDBPostgreSQL이 가장 널리 쓰입니다. 비용이 없고 기능적으로도 충분하기 때문입니다.
  • 상용: Oracle, Tibero, Altibase 등도 사용되지만, 라이선스 비용 문제가 있어 공공기관이 직접 요구하는 경우가 아니라면 잘 선택하지 않습니다.

프레임워크 및 라이브러리

  • 백엔드: 전자정부 표준 프레임워크 (e-GovFrame) 사용을 강력히 권장합니다.
  • 프론트엔드:
    • 과거: jQuery, JSP 기반의 순수 HTML/CSS/JS
    • 현재: Vue.js 또는 React를 사용하되, SSR(서버사이드 렌더링) 또는 SSG(정적 사이트 생성) 방식으로 초기 로딩 속도와 검색엔진 최적화(SEO)를 확보하는 것이 좋습니다. CSR(클라이언트 사이드 렌더링)만으로는 초기 로딩 성능에서 감점을 받을 수 있습니다.
    • 주의점: 라이브러리 사용 시 라이선스를 반드시 확인해야 합니다. 특히 라이선스 정책이 까다로운(GPL, LGPL 등) 라이브러리는 피하는 것이 좋습니다.

✅ 공공기관 '국룰' 추천 스펙 요약

이 조합으로 제안하면 최소한 기술 스펙 때문에 감점받을 일은 없습니다.

구분추천 기술비고
언어Java전자정부 표준 프레임워크 기반
OSLinux (Rocky / Ubuntu)안정적이고 비용 효율적인 오픈소스
WASApache Tomcat가장 널리 사용되는 검증된 WAS
DBMySQL / MariaDB안정적인 오픈소스 RDBMS
프론트엔드Vue.js / ReactSSR 또는 SSG 구성 권장

0개의 댓글