본문 바로가기
system_fundamentals/security_cryptography

Secret 관리

by 죄니안죄니 2026. 5. 20.
반응형
 
Secret 관리
Secret 관리Secret 관리
 
 

Secret 관리(Secrets management)는 한 줄로 말하면:

비밀번호·API 키·JWT Secret·DB 계정 같은
민감 정보를 안전하게 저장·배포·회전하는 것
 

이다.

실무 보안에서 엄청 중요하다.


Secret이란?

대표적으로:

종류 예시
DB 비밀번호 Oracle/MySQL 계정
JWT Secret HS256 서명키
OAuth Secret Google Client Secret
API Key OpenAI Key
TLS 개인키 HTTPS 인증서 키
Cloud Key AWS Access Key

가장 흔한 사고

거의 항상:

Git에 Secret 올라감
 

이다.


절대 하면 안 되는 것

 
String password = "admin1234";
 

왜 위험?

  • Git 유출
  • 협업자 접근
  • 로그 노출
  • 이미지 포함

등 가능.


기본 원칙

핵심은:

코드와 Secret 분리
 

다.


가장 기본 방법 — 환경변수

예:+

 
export DB_PASSWORD=xxxxx
 

Spring Boot 사용

 
spring:
  datasource:
    password: ${DB_PASSWORD}
 

장점

  • Git 미포함
  • 환경별 분리 가능

하지만 환경변수도 완벽하진 않음

왜냐면:

  • process dump
  • 잘못된 로그
  • container inspect

등으로 노출 가능.


그래서 대규모는 Secret Manager 사용

대표:

  • Amazon Web Services Secrets Manager
  • AWS Parameter Store
  • Google Secret Manager
  • HashiCorp Vault

가장 유명한 건 Vault

HashiCorp Vault


Vault 핵심 기능


기능 설명
Secret 저장 암호화 저장
접근 제어 권한 기반
Audit 접근 로그
Rotation 자동 교체
Dynamic Secret 일회성 계정

Dynamic Secret 엄청 중요

예:

DB 계정을 고정 사용 안 함
 

Vault가 임시 계정 생성

예:

30분 뒤 자동 만료 DB 계정
 

발급 가능.


왜 좋냐?

유출돼도 피해 제한.


JWT Secret 관리도 중요

예:

HS256 Secret 유출
 

되면?


공격자가 가능

가짜 JWT 생성
 

가능.

즉 관리자 토큰 위조 가능.


그래서 Secret 길이 중요

보통:

  • 최소 256bit 이상
  • 랜덤 생성

권장.


Secret Rotation

엄청 중요.

뜻:

주기적으로 Secret 교체
 

왜 필요?

언젠가는:

  • 로그 노출
  • 메모리 노출
  • 개발자 PC 감염

가능할 수 있음.


Rotation 전략

예:

old key + new key 동시 운영
 

후 old 제거.


JWT Rotation 예시

KEY_ID(kid)
 

사용.


JWT Header

 
{
  "alg":"HS256",
  "kid":"key-v2"
}
 

서버는 kid로 어떤 Secret인지 선택.


Kubernetes Secret

많이 사용.

예:

 
apiVersion: v1
kind: Secret
 

하지만 주의

K8s Secret은:

기본은 Base64
 

일 뿐.

암호화 자체는 아님.


그래서 etcd encryption 권장.


Docker에서도 중요

절대:

 
ENV PASSWORD=1234
 

이미지에 박지 말 것.


왜 위험?

이미지 레이어에 남을 수 있음.


로그 노출도 엄청 흔함

예:

 
log.info("password={}", password);
 

절대 금지.


CI/CD도 중요

예:

  • GitHub Actions Secret
  • GitLab CI Variable

등 사용.


GitHub 유출 사고 많음

특히:

OpenAI API Key
AWS Key
 

Git 올라가는 사고 엄청 많다.


그래서 Secret Scanning 사용

예:

  • GitHub Secret Scanning
  • TruffleHog
  • Gitleaks

실무 추천 구조


개발환경

.env
환경변수
 

운영환경

Vault / Cloud Secret Manager
 

권장.


최소 권한 원칙

엄청 중요.

예:

서비스별 다른 DB 계정
 

사용.


절대 공유 금지

모든 서비스가 root DB 계정 사용
 

최악.


Secret 관리 핵심 원칙

원칙의미
코드 분리 Git 포함 금지
최소 권한 필요한 권한만
Rotation 주기적 교체
Audit 접근 추적
중앙 관리 Vault 등

실무에서 가장 위험한 것

대부분:

편하다고 하드코딩
 

에서 사고 시작.


핵심 한 줄

Secret 관리는:

DB 비밀번호·JWT 키·API 키 같은 민감 정보를
코드와 분리하여 안전하게 저장·배포·교체·통제하는 보안 체계
 

이며,

실무 핵심은:

하드코딩 금지 + 중앙화된 Secret Manager 사용
 

이다.

반응형

'system_fundamentals > security_cryptography' 카테고리의 다른 글

환경변수 보안  (0) 2026.05.20
Vault  (0) 2026.05.20
Clickjacking  (0) 2026.05.19
SSRF  (0) 2026.05.19
CORS  (0) 2026.05.19

댓글