시크릿 관리

지원 버전: Kubernetes 1.31, 1.32, 1.33 마지막 업데이트: 2026년 2월 22일

Kubernetes 시크릿 관리는 애플리케이션 보안의 핵심입니다. 이 문서에서는 네이티브 Secrets부터 External Secrets Operator, Sealed Secrets, HashiCorp Vault, SOPS까지 다양한 시크릿 관리 도구를 상세히 다룹니다.

목차


Kubernetes 네이티브 Secrets

Secret 개요

Kubernetes Secret은 암호, 토큰, 키와 같은 민감한 정보를 저장하는 오브젝트입니다.

Secret 유형

Type
설명
사용 사례

Opaque

기본 타입, 임의의 데이터 저장

일반적인 시크릿

kubernetes.io/service-account-token

서비스 어카운트 토큰

자동 생성

kubernetes.io/dockerconfigjson

Docker 레지스트리 인증

이미지 풀 시크릿

kubernetes.io/basic-auth

기본 인증 정보

사용자명/비밀번호

kubernetes.io/ssh-auth

SSH 인증

SSH 키

kubernetes.io/tls

TLS 인증서

HTTPS 인증서

Secret 생성 방법

Secret 사용 방법

Secret의 한계

etcd 암호화 구성


External Secrets Operator (ESO)

ESO 개요

External Secrets Operator는 외부 시크릿 관리 시스템과 Kubernetes를 연결하여 Secret을 자동으로 동기화합니다.

ESO 설치

SecretStore 구성

ExternalSecret 정의

PushSecret (역방향 동기화)


AWS Secrets Manager 통합

IRSA 설정

AWS Secrets Manager에 시크릿 생성

완전한 AWS ESO 예시


AWS Systems Manager Parameter Store 통합

Parameter Store 설정

ESO Parameter Store 구성


Sealed Secrets

Sealed Secrets 개요

Sealed Secrets는 암호화된 Secret을 Git에 안전하게 저장할 수 있게 해주는 도구입니다.

Sealed Secrets 설치

SealedSecret 생성

SealedSecret YAML

스코프 설정

키 로테이션


HashiCorp Vault 통합

Vault 아키텍처

Vault 설치 (Helm)

Kubernetes 인증 설정

Vault Agent Injector

Vault CSI Driver

ArgoCD Vault Plugin (AVP)


SOPS (Secrets OPerationS)

SOPS 개요

SOPS는 암호화된 파일을 관리하는 도구로, Age, PGP, AWS KMS 등 다양한 암호화 백엔드를 지원합니다.

SOPS 설치 및 설정

SOPS로 Secret 암호화

암호화된 파일 형식

FluxCD SOPS 통합

AWS KMS with SOPS


EKS Pod Identity와 IRSA

IRSA (IAM Roles for Service Accounts)

EKS Pod Identity (신규)

IRSA vs Pod Identity 비교

특성
IRSA
EKS Pod Identity

설정 방식

ServiceAccount 어노테이션

API/콘솔에서 연결

IAM 역할 관리

OIDC 트러스트 정책 필요

EKS 관리형

토큰 형식

OIDC 토큰

EKS Pod Identity 토큰

역할 재사용

클러스터별 설정 필요

여러 클러스터에서 재사용

감사

CloudTrail + ServiceAccount

CloudTrail + Pod 수준

권장 사용

기존 클러스터

신규 클러스터


도구 비교

시크릿 관리 도구 비교표

특성
Native Secrets
ESO
Sealed Secrets
Vault
SOPS

Git 저장

✗ (외부 저장)

자동 로테이션

중앙 집중 관리

감사 로그

제한적

제공자 의존

복잡성

낮음

중간

낮음

높음

낮음

외부 의존성

없음

외부 저장소

Controller

Vault 서버

없음

암호화

etcd 암호화

제공자 암호화

비대칭 암호화

자체 암호화

다양한 백엔드

GitOps 친화

Plugin 필요

EKS 통합

기본

우수

보통

우수

보통

사용 사례별 권장


모범 사례

1. 시크릿 생성 및 저장

2. 최소 권한 원칙

3. 시크릿 로테이션

4. 감사 및 모니터링

5. 개발 환경 분리


요약

Kubernetes 시크릿 관리는 보안의 핵심입니다:

  1. Native Secrets: 간단하지만 Base64 인코딩만 제공

  2. External Secrets Operator: 외부 시크릿 저장소와 동기화

  3. Sealed Secrets: Git에 안전하게 암호화된 시크릿 저장

  4. HashiCorp Vault: 엔터프라이즈급 중앙 집중 시크릿 관리

  5. SOPS: 파일 기반 암호화로 GitOps 친화적

핵심 권장사항

  • 프로덕션에서는 Native Secrets만 사용하지 않기

  • 시크릿을 절대 Git에 평문으로 커밋하지 않기

  • 자동 로테이션 구현

  • 최소 권한 원칙 적용

  • 시크릿 접근 감사 활성화


참고 자료

마지막 업데이트