전체 목록
보안Medium#224

시크릿 관리는 왜 환경 변수만으로 충분하지 않을 수 있나요?

#보안#Secret#환경변수#운영

답변 포인트

노출 방지, 회전, 감사 관리를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.

정답 및 해설

빠른 요약

환경 변수는 주입 방식일 뿐 접근 제어, 회전, 감사 로그, 버전 관리를 해결하지 않습니다. 운영에서는 Secret Manager나 Vault 같은 도구가 필요할 수 있습니다.

환경 변수는 시크릿을 코드에서 분리하는 간단한 방법이지만, 그것만으로 안전한 시크릿 관리가 완성되지는 않습니다. 노출 경로, 회전, 접근 제어, 감사, 배포 자동화가 함께 필요합니다.

환경 변수의 한계

  • 프로세스 덤프, 로그, 디버그 페이지에 노출될 수 있습니다.
  • 컨테이너 이미지나 CI 로그에 실수로 찍힐 수 있습니다.
  • 누가 언제 값을 읽고 바꿨는지 감사하기 어렵습니다.
  • 키 회전과 버전 관리가 수동이면 오래된 키가 남습니다.

더 나은 접근

AWS Secrets Manager, GCP Secret Manager, Vault, Kubernetes Secret + KMS 암호화처럼 전용 저장소를 사용하면 접근 권한, 감사 로그, 버전, rotation을 관리하기 좋습니다.

YAML
# Kubernetes 예시: Secret 자체도 etcd 암호화와 RBAC가 함께 필요
apiVersion: v1
kind: Secret
metadata:
  name: app-secret
type: Opaque
stringData:
  DATABASE_PASSWORD: "..."

실무 원칙

  • 시크릿은 코드, 이미지, git, 티켓, 메신저에 남기지 않습니다.
  • 서비스별 최소 권한으로 접근을 분리합니다.
  • 정기/비상 rotation 절차를 준비합니다.
  • 로그 마스킹을 적용하고, 시작 시 설정값 전체 출력은 피합니다.
  • 로컬 개발용과 운영용 시크릿을 분리합니다.

면접 답변 포인트

환경 변수는 코드 분리에는 도움이 되지만 시크릿 생명주기 관리는 부족합니다. 안전한 관리는 전용 secret manager, 최소 권한, 감사 로그, 암호화, rotation, 로그 마스킹까지 포함한다고 답하면 좋습니다.

관련 질문

같은 카테고리/태그 기준