비밀
비밀(Secret)은 시스템, 사용자, 또는 애플리케이션이 민감한 행위를 수행하거나 보호된 리소스에 접근하기 위해 사용하는 민감한 정보를 말한다. 일반적으로는 인증자격 증명(Credential), 암호화 키, API 키, 비밀번호 등의 형태로 존재하며, 무단 접근으로부터 보호되어야 할 정보로 간주된다.
목차
주요 예시[편집]
- API Key : 외부 서비스 호출을 위해 발급되는 인증 키
- Access Token / Refresh Token : 인증된 세션을 식별하거나 갱신하기 위한 토큰
- Password : 사용자 인증을 위한 문자열 기반 자격 증명
- Private Key : 비대칭 암호화 방식에서 데이터 복호화 또는 서명에 사용되는 키
- Database Credential : DB 접속을 위한 사용자명과 비밀번호
- OAuth Client Secret : OAuth 기반 인증 시스템에서 클라이언트 애플리케이션이 사용하는 비밀 키
- TLS 인증서의 개인키 : HTTPS 통신 시 서버 인증 및 암호화에 사용되는 비밀 정보
- 환경변수 내 비밀정보 : .env 파일 등에 저장되는 민감 설정 값들
비밀의 수명 주기[편집]
비밀은 생성 → 저장 → 사용 → 갱신/폐기라는 생명 주기를 따르며, 각 단계마다 보안상 주의가 필요하다.
- 생성(Generate): 안전한 방식으로 랜덤하게 생성
- 저장(Store): 암호화된 상태로 저장하거나 보안된 저장소에 위탁
- 전달(Transmit): TLS 등 안전한 채널을 통해 전송
- 사용(Use): 최소한의 권한 범위에서 사용되도록 제한
- 회전(Rotate): 일정 주기 또는 유출 발생 시 새로운 비밀로 교체
- 폐기(Revoke/Destroy): 더 이상 필요 없거나 위험할 경우 파기
비밀의 저장 방법[편집]
저장 방법 특징 주의점 환경변수(.env) 배포 자동화 시 유용 깃에 커밋되지 않도록 .gitignore 필요 비밀 관리 시스템(Secrets Manager) AWS Secrets Manager, HashiCorp Vault 등 접근 제어 및 감사 기능 제공 키 관리 시스템(KMS) 암호화 키 중심 관리 대칭/비대칭 키 보안성 보장 하드코딩 (Bad Practice) 코드에 직접 삽입 매우 위험하며 반드시 피해야 함 CI/CD 환경 변수 GitHub Actions, GitLab CI 등에서 지원 외부 노출 방지에 주의 필요
비밀 유출 사고 사례[편집]
- Uber (2016): GitHub에 하드코딩된 AWS 키가 노출되어 5천만 명의 사용자 데이터 유출
- Slack (2022): 버그 리포트에 사용자 토큰이 포함되어 노출됨
- Facebook 개발자 키 유출: 디버그 로그 내에 비밀키가 포함되어 외부에 노출됨
비밀 유출 탐지 및 대응[편집]
- 정적 분석 도구(Secret Scanning) : 코드 내에 비밀 문자열이 하드코딩되어 있는지 탐지 (예: GitGuardian, TruffleHog)
- 로그 필터링 : 로그에 비밀번호, 토큰, 키가 출력되지 않도록 마스킹
- 버전 관리 예외 처리 : .gitignore 및 커밋 훅을 통해 비밀이 커밋되지 않도록 방지
- 비밀 자동 회전 : 일정 주기나 이상 탐지 시 자동으로 새로운 키로 갱신
- Zero Trust 환경 : 신뢰할 수 있는 네트워크라는 전제 없이, 최소 권한 원칙과 인증 강화 적용
비밀 관리 모범 사례[편집]
- 하드코딩 금지: 소스코드에 비밀 절대 포함 금지
- 최소 권한 원칙: 비밀 사용 범위는 반드시 최소화
- 정기적인 키 회전: 유효기간 설정 및 회전 주기 관리
- 모든 비밀에 접근 기록 남기기: 감사 및 이상 탐지를 위해 필수
- 운영/개발 환경 분리: 서로 다른 키, 서로 다른 접근 정책 설정
- CI/CD에서 안전하게 주입: 자동화 프로세스 내에서 보안 유지
관련 기술 및 도구[편집]
- AWS Secrets Manager: AWS 기반 비밀 저장, 암호화, 회전 기능 제공
- HashiCorp Vault: 동적 비밀 발급, 정책 기반 접근 제어 지원
- Azure Key Vault: Microsoft Azure 환경에서 비밀 및 키 관리
- Google Secret Manager: Google Cloud 기반 비밀 관리
- doppler, Infisical, 1Password CLI: 팀 기반 시크릿 공유 및 자동화 도구
관련 용어[편집]
- 자격증명(Credential): 시스템 접근이나 인증에 사용되는 사용자 식별 정보
- 키 교체(Key Rotation): 암호화 키나 비밀을 주기적으로 교체하는 보안 프로세스
- 비밀주입(Secret Injection): 실행 시점에 외부 저장소로부터 안전하게 비밀을 주입하는 기술
- 하드코딩(Hardcoding): 민감 정보를 코드에 직접 삽입하는 행위. 보안상 금기
- 토큰누출(Token Leakage): 인증 토큰이 의도치 않게 노출되어 공격자에 의해 사용되는 현상
같이 보기[편집]