보안 기본 규칙
비밀값을 이슈·커밋·로그·문서에 남기지 않기, 로그인 화면 기본 계정 노출 금지, 서명 키 보관, 새 저장소는 비공개 기본.
이 문서의 목차
1. 비밀값은 어디에도 남기지 않는다
비밀번호·토큰·API 키·개인 키(private key)·서명 비밀번호는 다음 어디에도 쓰지 않습니다.
| 남기면 안 되는 곳 | 흔한 실수 |
|---|---|
| 소스 코드 | 상수로 박아 넣기 |
| 커밋·커밋 메시지 | 설정 파일을 통째로 git add |
| 이슈·PR·릴리스 노트 | 재현용으로 설정값 붙여넣기 |
| 로그 | 요청 헤더·접속 문자열을 그대로 출력 |
| 문서·채팅 | 접속 방법을 설명하며 비밀번호까지 적기 |
| git 원격 URL | https://<토큰>@github.com/... 꼴로 등록 |
- 비밀값은 환경변수나 운영자 전용 보관소에서 읽습니다.
- 설정 파일에는 비밀값 칸을 비워 둔 견본만 저장소에 넣습니다.
- 실수로 올렸다면 지우는 것만으로는 부족합니다. 그 값을 폐기·재발급합니다(git 기록에 남기 때문).
왜 — 실제로 원격 URL 에 개인 토큰이 박힌 채 오래 방치된 저장소가 발견된 적이 있습니다. URL 은 화면·로그에 쉽게 찍힙니다.
2. 로그인 화면에 기본 계정을 보여 주지 않는다
로그인 화면에는 기본 아이디·비밀번호를 어떤 형태로도 노출하지 않습니다.
| 금지 형태 | 예 |
|---|---|
| 안내 문구 | "초기 계정: admin / 1234" |
| 입력칸 힌트(placeholder) | placeholder="admin" |
| 자동 입력 | 기본값을 입력칸에 미리 채우기 |
| 화면 소스 주석 | <!-- test: admin/1234 --> |
기본 계정 정보가 필요하면 설치·운영 문서에만 적고, 첫 로그인 뒤 변경하게 합니다.
3. 서명 키·업데이트 키
- 개인 키는 소스·로그·앱·서버 어디에도 두지 않고, 운영자만 접근하는 보관소에 둡니다.
- 서명 비밀번호는 빌드 직전에 세션 환경변수로만 올리고, 화면·로그·문서·커밋에 남기지 않습니다.
- 키 파일 자체는 잃어버리면 복구할 수 없으므로 별도 백업을 유지합니다.
- 이미 쓰고 있는 키·제품 식별자는 바꾸지 않습니다(바꾸면 기존 설치본이 업데이트를 받지 못합니다).
4. 새 저장소는 비공개가 기본
- 저장소를 새로 만들 때 공개 범위를 따로 정하지 않았으면 비공개(private) 로 만듭니다.
- 공개 여부는 담당자에게 확인을 받은 뒤 바꿉니다.
5. 현장 자료
- 현장 로그 원본은 공유 저장소에 올리지 않습니다(용량·개인정보). 필요한 것은 요약(명령별 필드·값 집합 등)만 올립니다.
- 고객(목장) 이름·연락처·주소는 공개 문서에 쓰지 않습니다.
6. 점검 결과를 정상으로 간주하지 않는다
자동 보안 검사가 실패했거나 확인하지 못한 항목을 "문제없음"으로 보고하지 않습니다. 확인한 범위와 확인하지 못한 범위를 나눠 적습니다.
7. .gitignore 로 막기
비밀값이 든 파일(.env, 키 파일, 로컬 설정)은 .gitignore 로 처음부터 제외합니다. 기본 목록은 '.gitignore 기본' 문서를 참조하세요.