Windows 게임 서버 Config 보안: 운영팀 및 개발사 가이드
📋 Windows 게임 서버 Config 보안: 운영팀 및 개발사 협업 가이드
앞선 포스팅에서 기술적인 해결책(ACL, EFS, 환경변수)을 다뤘다면, 이번에는 실제 현업에서 운영팀(Ops)과 외주 개발사(Dev)에게 어떻게 업무를 지시하고 가이드해야 하는지에 대한 커뮤니케이션 매뉴얼을 정리합니다.
기술적인 방법(How)보다 중요한 것은 각 담당자가 움직일 수 있는 명분과 기준(Why & Rule)을 제시하는 것입니다.
🏗️ 1. 운영팀(Infra/Ops) 가이드
운영팀은 소스 코드를 수정할 권한이 없는 경우가 많습니다. 따라서 “지금 돌아가고 있는 서버 환경에서 즉시 적용 가능한 조치”를 요청해야 합니다.
🎯 핵심 목표
- 소스 코드 수정 없이 OS 레벨에서 접근 통제 수행
- 사고 발생 시 피해 범위 최소화 (해커가 서버에 침투해도 config 파일을 못 읽게)
📨 전달 메일 템플릿 (예시)
제목: [긴급/보안] 게임 서버 설정 파일(config.json) 접근 권한 강화 조치 요청
안녕하세요, 보안팀입니다. 현재 운영 중인 게임 서버의 설정 파일에 민감 정보(DB PW 등)가 평문으로 저장되어 있어 보안 강화가 시급합니다. 개발사의 패치가 적용되기 전까지, OS 레벨에서의 접근 통제를 아래와 같이 요청합니다.
[필수 조치 사항]
- 서비스 계정 분리: 게임 서버 프로세스는
Administrator가 아닌 제한된 권한의 별도 계정(예: GameSvcUser)으로 구동해 주십시오.- 파일 권한(ACL) 축소:
config.json의 보안 속성에서Everyone,Users그룹을 제거하십시오.- 오직
SYSTEM,Administrators,GameSvcUser에게만 접근 권한을 부여하십시오.[확인 방법]
- 일반 계정으로 로그인 후 메모장으로 해당 파일을 열었을 때 “액세스 거부(Access Denied)” 메시지가 출력되어야 합니다.
✅ 운영팀 체크리스트
- 게임 서버가
System이나Administrator계정이 아닌 전용 계정으로 실행 중인가? config.json권한 설정에서 불필요한 사용자(Users)가 제거되었는가?- 원격 데스크톱(RDP) 접속 권한이 엄격하게 관리되고 있는가?
🤝 2. 외주(게임) 개발사 가이드
개발사에게는 단순 권고가 아닌 “납품 기준(Acceptance Criteria)”으로 접근해야 확실한 처리가 가능합니다.
🎯 핵심 목표
- 소스 코드 및 형상 관리 시스템에서 민감 정보 원천 제거
- 운영 환경 변화(환경 변수 사용 등)에 유연하게 대응 가능한 구조 마련
📨 개발사 전달 공문/가이드 템플릿 (예시)
제목: [보안공지] 차기 버전 게임 서버 보안 요구사항 안내
귀사의 노고에 감사드립니다. 당사의 보안 정책 강화에 따라, 향후 납품되는 게임 서버 빌드에 대해 아래와 같은 보안 요구사항을 적용해 주시기를 바랍니다. 해당 사항은 차기 마일스톤 검수(QA) 시 필수 거부(Blocker) 항목으로 적용될 예정입니다.
[개발 필수 요구 사항]
- 하드코딩 금지: 소스 코드 및 Git 저장소에 비밀번호, API Key 등을 절대 포함하지 마십시오.
- 구성의 외부화 (Environment Variables 지원):
- 설정 파일(
config.json) 외에 OS 환경 변수를 통해서도 설정을 주입받을 수 있도록 로직을 수정하십시오.- 우선순위:
환경 변수>config.json 파일 값- 배포 템플릿 제공:
- 배포 패키지에는 실제 비밀번호가 없는
config.template.json만 포함하십시오.[구현 예시 (C#)]
1 2 3 4 5 6 7 8 public string GetDbPassword() { // 환경 변수가 있으면 최우선 사용 string envPass = Environment.GetEnvironmentVariable("GAME_DB_PASS"); if (!string.IsNullOrEmpty(envPass)) return envPass; // 없으면 파일 설정 사용 return this.Config.DbPassword; }
✅ 개발 납품 검수 리스트
- Git 저장소 커밋 히스토리에 실제 운영 DB 패스워드가 포함되어 있는가? (발견 시 인수 거부)
config.json파일을 삭제하거나 비워두고, 환경 변수 설정만으로 서버가 정상 구동되는가?- 서버 로그 파일에 DB 접속 정보나 민감한 쿼리 내용이 평문으로 기록되지 않는가?
👮♂️ 3. 보안팀(퍼블리셔)의 역할
양측에 가이드를 던져놓고 끝나는 것이 아닙니다. 보안팀은 이 프로세스가 실제로 돌아가도록 감시하고 지원해야 합니다.
- 정기 점검: 운영 서버에 불시 접속하여 파일 권한이 풀려있지 않은지 확인합니다.
- 자동화 도구 지원: 개발사가 코드를 푸시할 때 사용할 수 있는 시크릿 스캔 도구(Gitleaks 등)를 제공하거나 가이드합니다.
- Key Vault 구축: 운영팀이 비밀번호를 포스트잇이나 엑셀에 적어두지 않고, Azure Key Vault 같은 안전한 저장소에서 관리하도록 인프라를 지원합니다.
결론
보안은 혼자 하는 것이 아닙니다.
- 운영팀은 “문을 잠그고(ACL)”,
- 개발사는 “집 안에 귀중품을 두지 않으며(No Hardcoding)”,
- 보안팀은 “감시 카메라(Review & Monitoring)”가 되어야 합니다.
이 3박자가 맞을 때, 게임 서비스의 소중한 정보 자산을 지킬 수 있습니다.