티스토리 뷰

728x90

Kubernetes의 ConfigMapSecret은 애플리케이션 구성 정보를 외부에서 주입(injection)하기 위한 중요한 리소스입니다. 둘 다 환경 변수, 커맨드라인 인자, 볼륨을 통해 파드에 주입될 수 있으며, 애플리케이션 코드 수정 없이 환경 설정 변경이 가능하게 해줍니다.

하지만 사용 목적과 보안 수준에서 중요한 차이점이 존재합니다. 


🔍 ConfigMap vs Secret: 차이점

항목  ConfigMap  Secret
용도 일반 설정값 저장 (예: DB 호스트, 포트 등) 민감한 정보 저장 (예: 비밀번호, API 키, TLS 인증서 등)
데이터 저장 방식 일반 텍스트 (Base64 인코딩 없이 저장됨) Base64 인코딩된 문자열로 저장됨
보안 암호화 없이 저장됨 (노출 위험 높음) 기본적으로 etcd에 Base64로 저장되며, 필요 시 암호화 설정 가능
기본 권한 제어 없음 (RBAC으로 제한 가능) RBAC을 통해 접근 제어 가능
쿠버네티스 리소스 유형 v1.ConfigMap v1.Secret
예시 사용처 로그 레벨, 외부 API 주소 등 DB 비밀번호, JWT 시크릿, SSH 키 등

✅ ConfigMap 장단점

장점

  • 비민감 설정 관리에 적합
    → 환경 변수나 구성파일을 외부화하여 재빌드 없이 설정 변경 가능
  • YAML 관리가 쉬움
    → Base64 인코딩 불필요, 사람이 읽고 쓰기 쉬움

단점

  • 보안 취약
    → 민감한 데이터를 저장하면 누구나 쉽게 열람 가능
  • 감사 및 추적 기능 부족
    → 변경 이력 확인이 어렵고 감사(Audit) 로그 관리가 어려움

✅ Secret 장단점

장점

  • 보안성 우수
    → 민감 정보 보호에 최적화, RBAC + etcd 암호화 설정 가능
  • 다양한 Secret 타입 지원
    → Opaque, TLS, Docker config 등 다양한 유형 제공

단점

  • YAML 작성이 불편함
    → Base64 인코딩 필수, 사람이 직접 읽기 어려움
  • 기본적으로 완벽한 보안을 제공하지 않음
    → Base64는 단순 인코딩, 암호화 설정은 별도 구성 필요 (예: EncryptionConfiguration)

🛠 언제 무엇을 써야 할까?

 

사용 시나리오  추천 리소스
DB 호스트, 포트, 로그 레벨 등 설정값 ConfigMap
DB 비밀번호, API Key, OAuth 토큰 Secret
TLS 인증서, SSH 키 등 민감 파일 Secret (특히 TLS 타입)

📌 정리

  • ConfigMap비민감한 설정 정보를 관리하는 데 이상적이며,
  • Secret민감한 정보를 안전하게 주입하는 데 필수입니다.

실무에서는 다음과 같은 보안 모범 사례를 따르는 것이 좋습니다:

  • ConfigMap에는 절대 민감 정보를 넣지 마세요.
  • Secret을 사용할 땐 etcd 암호화를 활성화하고, RBAC으로 접근을 제한하세요.
  • CI/CD 파이프라인에서 Secret을 자동으로 주입하거나 갱신하도록 구성하세요.

 

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함