반응형



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 |
댓글