반응형
개요
Kubernetes에서는 다양한 애플리케이션 설정과 정보를 저장하고 전달해야 합니다. 이 중에서도 비밀번호, API 키, 토큰 등 민감한 정보를 안전하게 다루는 방법이 바로 Secret
리소스입니다. 이 문서에서는 Secret의 개념, 생성 방법, Pod와의 연동 방식, 실무 적용 팁까지 깊이 있게 살펴봅니다.
1. Secret이란?
Kubernetes Secret은 암호화되거나 인코딩된 상태로 민감 데이터를 저장하고 Pod에 주입하는 리소스입니다.
- 보안 강화를 위해 ConfigMap과 분리되어 사용
- base64 인코딩으로 저장되며, 암호화는 etcd 레벨에서 적용 가능
- Pod에 환경변수나 Volume 형태로 주입 가능
2. Secret의 주요 사용 사례
- DB 접속 비밀번호 저장 및 주입
- 외부 API 인증 토큰 관리
- SSH Key, TLS 인증서 등 보안 자격증명 전달
3. Secret 생성 방법
방법 1: kubectl로 생성
kubectl create secret generic my-secret \
--from-literal=username=admin \
--from-literal=password=1234
방법 2: YAML로 정의
apiVersion: v1
kind: Secret
metadata:
name: my-secret
namespace: default
type: Opaque
data:
username: YWRtaW4=
password: MTIzNA==
data
필드는 base64 인코딩된 값이어야 합니다.
4. Pod에 Secret 주입하기
환경변수로 전달
env:
- name: USERNAME
valueFrom:
secretKeyRef:
name: my-secret
key: username
Volume으로 마운트
volumes:
- name: secret-volume
secret:
secretName: my-secret
volumeMounts:
- name: secret-volume
mountPath: "/etc/secrets"
readOnly: true
5. Secret 타입
타입 | 설명 |
---|---|
Opaque | 일반적인 key-value (기본값) |
kubernetes.io/dockerconfigjson | Docker 이미지 인증 정보 |
kubernetes.io/tls | TLS 인증서 및 키 정보 |
6. 보안 강화 방법
- etcd 암호화 활성화: kube-apiserver 설정에
--encryption-provider-config
사용 - RBAC 최소 권한 원칙 적용: Secret 접근 권한 제한
- Secret 자동 Rotation 도구 사용: Vault, Sealed Secrets, External Secrets 등
7. Secret 상태 및 삭제
kubectl get secrets
kubectl describe secret my-secret
kubectl delete secret my-secret
8. FAQ (Answer Engine Optimization)
Q1. Secret은 실제로 암호화되어 저장되나요?
기본은 base64 인코딩이며, etcd 암호화를 별도 설정해야 실제 암호화됩니다.
Q2. ConfigMap과 뭐가 다른가요?
Secret은 민감 데이터를 다루며, 더 엄격한 보안 정책이 적용됩니다.
Q3. base64로만 인코딩하면 안전한가요?
아닙니다. base64는 단순 인코딩이며, 반드시 etcd 암호화를 함께 적용해야 합니다.
Q4. 여러 Pod에서 하나의 Secret을 공유할 수 있나요?
네. 같은 네임스페이스 내에서는 자유롭게 공유 가능합니다.
9. 요약
항목 | 설명 |
---|---|
용도 | 비밀번호, 토큰 등 민감 정보 저장 및 전달 |
주입 방식 | 환경변수, Volume |
보안 고려사항 | etcd 암호화, RBAC 제한, 외부 비밀관리 연동 가능 |
타입 | Opaque, TLS, Docker config 등 |
반응형
'개발 창고 > Server' 카테고리의 다른 글
4차시 – AI 개발 환경 구성: Anaconda, Jupyter Notebook, GPU 설정하기 (2) | 2025.08.13 |
---|---|
머신러닝 기본 개념: 지도·비지도·강화학습 쉽게 이해하기 (4) | 2025.08.11 |
Kubernetes Job: 완전 종료 보장형 일회성 작업 관리 (2) | 2025.08.08 |
Kubernetes CronJob 완전 정복 : 정해진 스케줄에 반복 실행되는 작업을 안정적으로 관리하는 방법 (2) | 2025.08.07 |
Kubernetes Secret 완전 정복 : 민감한 데이터를 안전하게 저장하고 관리하는 방법 (2) | 2025.08.06 |