Kubernetes Secret Management 완벽 가이드! 민감 정보 암호화와 안전한 Credential 관리 구조 이해하기

Kubernetes 환경에서는 Database Password, API Key, Token, Certificate 같은 민감한 정보가 필요합니다.

하지만 이러한 정보를 Application 코드나 YAML 파일에 직접 작성하면 심각한 보안 문제가 발생할 수 있습니다.

예:

Application 설정 파일

Database Password 포함

Git Repository 저장

Credential 노출 위험

Kubernetes는 이러한 문제를 해결하기 위해 Secret Resource를 제공합니다.

Secret은 민감한 데이터를 별도로 관리하고 Pod에 안전하게 전달하는 Kubernetes 보안 기능입니다.

구성 요소역할
Secret민감 정보 저장
ServiceAccount인증 정보 관리
Volume MountSecret 전달
RBAC접근 권한 제어
Encryption at Rest저장 데이터 보호

Secret Management 구조를 이해하면 Kubernetes 환경에서 안전한 Credential 운영이 가능합니다.

Kubernetes Secret이란?

Secret은 Kubernetes에서 비밀번호, Token, 인증서 같은 민감 정보를 저장하는 Resource입니다.

관리 대상:

  • Database Password
  • API Token
  • SSH Key
  • TLS Certificate
  • Cloud Credential

일반 Configuration 데이터는 ConfigMap,

민감 정보는 Secret을 사용합니다.

Kubernetes Secret과 ConfigMap 차이

두 기능은 비슷하지만 목적이 다릅니다.

구분ConfigMapSecret
목적일반 설정값민감 정보
데이터환경 설정Password·Token
보안 수준일반암호화 설정 가능
사용 예Application 설정Database 인증 정보

보안 정보는 Secret으로 관리하는 것이 좋습니다.

Kubernetes Secret 동작 구조

전체 흐름:

Secret 생성

↓

API Server 저장

↓

Pod 요청

↓

kubelet 전달

↓

Container 사용

Application 코드에 직접 Credential을 포함하지 않습니다.

Kubernetes Secret 생성 방법

Secret 생성:

kubectl create secret generic db-secret \
--from-literal=username=admin \
--from-literal=password=password123

확인:

kubectl get secret

Secret Resource가 생성됩니다.

Kubernetes Secret YAML 구조

예:

apiVersion: v1
kind: Secret
metadata:
  name: database-secret
type: Opaque
data:
  username: YWRtaW4=
  password: cGFzc3dvcmQ=

Secret 데이터는 Base64 형태로 저장됩니다.

Kubernetes Secret Base64 보안 이해

중요한 부분입니다.

Base64는 암호화가 아닙니다.

변환:

Plain Text

Base64 Encoding

저장

따라서 Base64만으로는 안전하지 않습니다.

추가 보안 설정이 필요합니다.

Kubernetes Encryption at Rest

Secret 데이터를 저장할 때 암호화를 적용할 수 있습니다.

기본:

Secret

etcd 저장

보안 강화:

Secret

Encryption Provider

암호화된 etcd 저장

Database Layer에서 보호합니다.

Kubernetes Secret Volume Mount

Secret을 Container 파일 형태로 전달할 수 있습니다.

구조:

Secret

Volume

Container

File 접근

예:

volumes:
- name: secret-volume
  secret:
    secretName: database-secret

Application이 파일로 Credential을 사용할 수 있습니다.

Kubernetes Secret Environment Variable 사용

Secret 값을 환경 변수로 전달할 수 있습니다.

예:

env:
- name: DB_PASSWORD
  valueFrom:
    secretKeyRef:
      name: database-secret
      key: password

Container 내부에서 사용할 수 있습니다.

Kubernetes TLS Secret 관리

HTTPS 인증서도 Secret으로 관리합니다.

예:

kubectl create secret tls my-cert \
--cert=tls.crt \
--key=tls.key

Ingress HTTPS 구성에서 사용됩니다.

Kubernetes ImagePullSecret

Private Registry 인증 정보도 Secret을 사용합니다.

구조:

Secret

Registry 인증

Private Image Pull

보안 Registry 운영에 필수입니다.

Kubernetes Secret과 RBAC

Secret은 민감 정보이므로 접근 제어가 중요합니다.

예:

개발자:

Pod 조회 가능

Secret 조회 불가

운영자:

Secret 관리 가능

최소 권한 원칙을 적용해야 합니다.

Kubernetes Secret 접근 위험

잘못된 설정:

모든 User

Secret 조회 가능

Password 노출

따라서 Secret 접근 권한 제한이 필요합니다.

Kubernetes External Secret 관리

대규모 환경에서는 외부 Secret Manager를 사용합니다.

예:

  • HashiCorp Vault
  • AWS Secrets Manager
  • Azure Key Vault
  • Google Secret Manager

Kubernetes 내부에 직접 저장하지 않고 연동합니다.

Kubernetes Secret Rotation

Credential은 주기적으로 변경해야 합니다.

Rotation 과정:

기존 Secret 변경

새 Credential 생성

Application 업데이트

기존 Credential 제거

보안 운영에서 중요한 과정입니다.

Kubernetes Secret 장애 분석

Secret 문제가 발생하면 확인합니다.

Secret 확인:

kubectl get secret

상세 확인:

kubectl describe secret secret-name

Pod 확인:

kubectl describe pod pod-name

확인:

  • Secret 이름 오류
  • 권한 문제
  • Mount 오류
  • Key 이름 오류

Kubernetes Secret 운영 Best Practice

Production 환경:

  • Secret 암호화 적용
  • RBAC 제한
  • External Secret 활용
  • Rotation 정책 운영
  • Audit Logging 활성화
  • Git 저장 금지

민감 정보 보호 체계를 구축해야 합니다.

Kubernetes Secret과 DevSecOps

안전한 Pipeline:

Code

Secret 분리

CI/CD Credential 관리

Deployment

Runtime Secret 주입

개발 과정부터 보안을 적용합니다.

Kubernetes Secret Monitoring

확인 항목:

  • Secret 접근 기록
  • 권한 변경
  • Credential 사용
  • Rotation 상태

Audit 기반 관리가 필요합니다.

Kubernetes Secret Management 운영 전략

Production 환경:

Secret 정책 정의

Encryption 적용

RBAC 설정

External Secret 연동

Rotation 자동화

접근 기록 관리

안전한 Credential Lifecycle을 구축합니다.

Kubernetes Secret Management 장점

장점설명
Credential 보호민감 정보 분리
접근 제어권한 관리
자동화Secret 전달 관리
Compliance 대응보안 정책 적용

Secret Management는 Kubernetes 보안 운영의 핵심 영역입니다.

자주 묻는 질문

Kubernetes Secret은 완전히 암호화되어 있나요?

기본적으로 Base64 Encoding이며, 안전한 운영을 위해 Encryption at Rest 설정이 필요합니다.

Secret을 Git Repository에 저장해도 되나요?

권장되지 않습니다.

External Secret Manager 또는 별도 보안 관리 방식이 필요합니다.

ConfigMap 대신 Secret을 사용하면 되나요?

Password, Token 같은 민감 데이터는 Secret을 사용하고 일반 설정은 ConfigMap을 사용합니다.

마무리

Kubernetes Secret Management는 Database Password, API Token, Certificate 같은 민감 정보를 안전하게 관리하는 핵심 보안 기능입니다.

구성 요소역할
Secret민감 정보 저장
Encryption at Rest데이터 보호
RBAC접근 제어
External Secret외부 보안 저장소 연동

Secret 구조를 이해하면 Kubernetes 환경에서 안전한 Credential 관리와 Enterprise 보안 운영 체계를 구축할 수 있습니다.

다음 글에서는 Kubernetes 네트워크 보안 영역인 Kubernetes NetworkPolicy 완벽 가이드! Pod 간 통신 제어와 Zero Trust Network 구조 이해하기를 진행하겠습니다.

댓글 남기기