반응형
🔐 Kubernetes Secrets 보안 모범 사례
→ 비밀번호, API 토큰, SSH 키 같은 민감한 정보를 안전하게 관리하는 방법!
🎯 핵심 개념 요약
- Secret이란?
→ 비밀번호, OAuth 토큰, SSH 키 같은 민감 정보를 저장하는 Kubernetes 객체 - ConfigMap이랑 뭐가 달라?
→ ConfigMap은 민감하지 않은 설정값, Secret은 민감한 데이터를 위한 것! - 주의! Secret은 기본적으로 암호화되지 않은 상태로 etcd에 저장돼
→ 설정을 바꾸면 암호화 저장 가능함
🛠️ 클러스터 관리자용 Best Practices
1️⃣ etcd에 저장되는 Secret을 암호화하기
- 기본값은 평문(base64만 인코딩) 저장이야.
- 꼭 EncryptionConfiguration 설정해서 etcd 저장소 내 암호화를 적용하자.
👉 Encrypt Secret Data at Rest 문서 참고
2️⃣ RBAC 권한 최소화 (Least Privilege)
👤 사용자 & 컴포넌트에 따라 권한 차등 설정!
- 컴포넌트: list나 watch 같은 강력한 권한은 정말 꼭 필요한 시스템 컴포넌트에만
- 사람: get, list, watch 권한은 제한! etcd 접근은 오직 관리자만!
- Tip: 주석(annotations) 기준으로 세부 권한 제어하려면 서드파티 인증 시스템 사용 고려
⚠️ 주의사항
- list 권한만 있어도 Secret 내용 다 볼 수 있음
- Pod에 Secret을 마운트할 수 있는 권한이 있는 사용자는 사실상 Secret 내용을 조회할 수 있음
→ 완전히 통제하려면 Pod 생성도 제한해야 함
3️⃣ 짧은 수명(Short-lived)의 Secret 사용
- 만료가 빠른 토큰 사용, 자동 갱신 구조 설계 추천
4️⃣ 감사 로그 설정
- 여러 Secret에 접근하는 사용자 행동을 탐지할 수 있는 감사 규칙 설정!
5️⃣ Namespace로 Secret 접근 제한
- 네임스페이스별로 권한 분리해서, 불필요한 접근 막기
6️⃣ etcd 스토리지 관리
- etcd 삭제 시 디스크도 완전히 지우기(shredding)
- 여러 etcd 인스턴스 사용하는 경우엔 TLS 암호화 통신 필수
7️⃣ 외부 Secret 저장소 사용하기
- Secret을 클러스터 외부에 저장하고, Pod가 그 Secret을 직접 참조할 수 있도록 구성 가능
🧩 예시:
- Secrets Store CSI Driver → Pod에 외부 비밀정보를 volume 형태로 마운트해주는 DaemonSet
- 외부 저장소 예시: Azure Key Vault, AWS Secrets Manager, HashiCorp Vault 등
👨💻 개발자를 위한 Best Practices
1️⃣ Secret은 필요한 컨테이너에만 주자
- Pod에 여러 컨테이너가 있다면, 필요한 컨테이너에만 Secret 마운트 or env var로 주입하기
2️⃣ 앱 내에서도 Secret 노출 조심!
- Secret을 로그에 출력하거나, 외부 서버에 전송하는 것 → 절대 금지!
- 메모리 상에 남아있는 Secret도 가능한 한 빨리 지우는 처리가 필요
3️⃣ Secret 매니페스트 파일 공유 금지
- base64로 인코딩된 Secret을 Git에 커밋하거나 공유하지 말기
→ base64는 암호화가 아니고, 그냥 평문 인코딩일 뿐임!
🧠 요약 정리
역할 지켜야 할 보안 수칙
관리자 | - etcd 암호화 - RBAC 최소 권한 - Secret 접근 분리 - 외부 저장소 연동 - 감사 로그 설정 |
개발자 | - Secret 필요한 컨테이너만 접근 - Secret 유출 금지(log, 전송) - 매니페스트 공유 금지 |
반응형
'Certificated 도전 > KCSA - Kubernetes' 카테고리의 다른 글
[KCSA]Kubernetes 인증 메커니즘 하드닝 가이드 (0) | 2025.03.30 |
---|---|
[KCSA]멀티 테넌시(Multi-tenancy)란 (0) | 2025.03.30 |
[KCSA] Kubernetes RBAC 잘 사용하는 법 (0) | 2025.03.30 |
[KCSA] Kubernetes API 접근 제어(Controlling Access to the Kubernetes API) (0) | 2025.03.27 |
[KCSA]Pod Security Admission이란? (0) | 2025.03.27 |