검수요청.png검수요청.png

비밀

위키원
이동: 둘러보기, 검색

비밀(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): 인증 토큰이 의도치 않게 노출되어 공격자에 의해 사용되는 현상

같이 보기[편집]


  검수요청.png검수요청.png 이 비밀 문서는 보안에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.