0Pricing
Kubernetes Basics · 강의

민감한 데이터를 위한 Secrets

Secrets를 사용하여 비밀번호와 API 키 같은 민감한 정보를 안전하게 저장하고 관리하세요.

민감한 데이터를 위한 Secrets은(는) CoddyKit의 무료 Kubernetes Basics 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kubernetes Basics 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

민감한 정보 보호

애플리케이션을 개발할 때 데이터베이스 비밀번호, API 키 또는 개인 인증서와 같은 민감한 정보를 자주 다루게 됩니다.

이러한 정보를 애플리케이션 코드나 구성 파일에 직접 저장하면 보안상 매우 위험합니다! 데이터 유출로 이어져 시스템이 노출될 수 있습니다.

Kubernetes Secrets 소개

Kubernetes Secrets는 클러스터 내에서 민감한 데이터를 안전하게 저장하도록 설계된 객체입니다.

민감한 정보를 Pod 정의 및 애플리케이션 코드와 분리할 수 있으므로 배포를 더 안전하고 관리하기 쉽게 만들어 줍니다.

  • 분리: 컨테이너 이미지와 Pod YAML에 민감한 데이터를 포함하지 않습니다.
  • 접근 가능: Pod는 환경 변수 또는 마운트된 파일로 이를 사용할 수 있습니다.

Secrets와 ConfigMaps 비교

이전 수업에서 민감하지 않은 구성 데이터에 사용되는 ConfigMaps를 배웠던 것을 기억하실 것입니다.

Secrets도 비슷하지만 민감한 데이터를 저장하기 위한 것입니다. 둘 다 키-값 쌍을 저장하지만, Secrets는 데이터의 민감한 특성을 고려해 처리합니다.

  • ConfigMaps: 일반적인 비민감 구성(예: 로그 수준, API 엔드포인트)에 사용합니다.
  • Secrets: 민감한 데이터(예: 비밀번호, 토큰, 개인 키)에 사용합니다.

Secrets는 기본적으로 암호화되는 것이 아니라 base64로 인코딩된다는 점을 기억하세요!

리터럴로 Secret 생성

Secret을 생성하는 가장 간단한 방법은 kubectl create secret generic을 사용해 리터럴 값으로 생성하는 것입니다.

간단한 비밀번호처럼 짧고 단일한 민감한 데이터를 저장할 때 유용합니다.

kubectl create secret generic my-db-secret \
  --from-literal=username=admin \
  --from-literal=password=SuperSecretP@ssw0rd!

파일로 Secret 생성

더 크거나 여러 줄로 구성된 민감한 데이터(예: 개인 키 또는 전체 구성 파일)는 파일에서 Secret을 생성하는 것이 좋습니다.

먼저 로컬에서 파일을 만든 다음 이를 참조합니다. Kubernetes가 파일 내용을 읽어 저장합니다.

# Create local files first
echo "my-api-key-12345" > api-key.txt
echo "my-token-abcde" > auth-token.txt

# Create the Secret
kubectl create secret generic app-credentials \
  --from-file=api-key.txt \
  --from-file=auth-token.txt

Secret을 환경 변수로 사용

Pod는 Secret 데이터를 환경 변수에 직접 주입하여 사용할 수 있습니다. 간단한 키-값 쌍에 흔히 사용하는 방법입니다.

Secret의 개별 키를 참조하거나 envFrom을 사용해 모든 키를 참조할 수 있습니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-env
spec:
  containers:
  - name: my-app
    image: nginx:latest
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: password

Secret을 마운트된 파일로 사용

민감한 파일(예: 인증서, 개인 키)을 사용하거나 애플리케이션이 특정 파일 경로에서 구성을 읽도록 되어 있다면, Secret을 Pod 내부에 파일로 마운트할 수 있습니다.

Secret의 각 키는 마운트된 디렉터리 안의 파일이 되며, 해당 값이 파일의 내용으로 저장됩니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-vol
spec:
  containers:
  - name: my-app
    image: nginx:latest
    volumeMounts:
    - name: app-secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: app-secret-volume
    secret:
      secretName: app-credentials

Secret 보안

Secrets는 데이터를 무심코 들여다보는 것을 막아 주지만, 모든 문제를 해결해 주는 만능 수단은 아닙니다. 다음 사항을 기억하세요.

  • Base64 인코딩: Secrets는 암호화되는 것이 아니라 base64로 인코딩됩니다. Secret에 접근할 수 있는 사람은 누구나 디코딩할 수 있습니다.
  • RBAC: 역할 기반 접근 제어(RBAC)를 사용해 Secret을 읽거나 생성하거나 수정할 수 있는 사람을 제한하세요.
  • 저장 데이터 암호화: 진정한 보안을 위해 etcd(Kubernetes의 백업 저장소) 데이터에 저장 데이터 암호화를 활성화하세요. 클라우드 제공업체에서 이를 지원하는 경우가 많습니다.

Secrets 업데이트

민감한 데이터가 변경되면 Secret을 업데이트해야 합니다. 새 값으로 kubectl create secret을 다시 실행하면 업데이트되며, 업데이트된 YAML에 kubectl apply -f를 사용할 수도 있습니다.

하지만 Secret을 사용하는 실행 중인 Pod는 변경 사항을 자동으로 반영하지 않습니다. 변경 사항을 적용하려면 일반적으로 Secret을 사용하는 Pod를 다시 시작하거나 재배포해야 합니다.

빠른 확인: Secrets

애플리케이션이 접근해야 하는 개인 API 키가 있다고 가정해 보세요. 이 키를 저장하고 Kubernetes Pod에 제공하는 가장 안전하고 적절한 방법은 무엇일까요?

복습: 민감한 데이터를 위한 Secrets

잘하셨습니다! Kubernetes에서 민감한 데이터를 처리하는 방법을 배웠습니다!

  • Secrets는 비밀번호와 API 키 같은 민감한 정보를 저장합니다.
  • 데이터는 base64로 인코딩되며 환경 변수 또는 마운트된 파일로 사용할 수 있습니다.
  • 최대한의 보안을 위해 항상 RBAC를 적용하고 저장 데이터 암호화를 고려하세요.
  • Secret 업데이트를 반영하려면 Pod를 다시 시작해야 한다는 점을 기억하세요.

자주 묻는 질문

“민감한 데이터를 위한 Secrets” 강의는 무료인가요?

네 — “민감한 데이터를 위한 Secrets” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kubernetes Basics 강의 전체를 잠금 해제할 수 있습니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

“민감한 데이터를 위한 Secrets”에서 뭘 배우나요?

Secrets를 사용하여 비밀번호와 API 키 같은 민감한 정보를 안전하게 저장하고 관리하세요. 브라우저에서 직접 실행하는 실습 코드로 Kubernetes Basics을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kubernetes Basics을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kubernetes Basics은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“민감한 데이터를 위한 Secrets” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kubernetes Basics 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kubernetes Basics 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 구성을 위한 ConfigMaps
  2. 민감한 데이터를 위한 Secrets
  3. 영구 볼륨 및 볼륨 클레임
  4. StorageClasses와 동적 프로비저닝
← Kubernetes Basics(으)로 돌아가기