Certified Kubernetes Administration - 35
2024-06-22
- Kubernetes
- Cloud
Kubernetes에서 Secrets 사용
-
개요:
-
Secrets는 비밀번호나 키와 같은 민감한 정보를 저장하는 데 사용.
-
ConfigMap과 유사하지만, 인코딩된 형식으로 저장됨.
-
-
Secrets 생성 및 사용 단계:
- Secrets 생성
- Pod에 Secrets 주입
Secrets 생성 방법
-
명령형 방법:
-
kubectl create secret generic
명령어를 사용하여 직접 키-값 쌍 지정. -
예:
kubectl create secret generic app-secret --from-literal=DB_HOST=MySQL
-
-
선언형 방법:
-
Secret 정의 파일 작성.
-
예:
apiVersion: v1 kind: Secret metadata: name: app-secret data: DB_HOST: bXlzcWw= # base64로 인코딩된 값
-
인코딩된 값 생성 방법:
echo -n 'MySQL' | base64
-
Secrets 보기 및 디코딩
-
Secrets 목록 보기:
kubectl get secrets
-
Secrets 상세 정보 보기:
kubectl describe secret <secret 이름>
-
Secrets 값 보기:
kubectl get secret <secret 이름> -o yaml
-
Secrets 디코딩:
echo 'bXlzcWw=' | base64 --decode
Pod에 Secrets 주입
-
환경 변수로 주입:
-
Pod 정의 파일의
envFrom
속성을 사용. -
예:
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image envFrom: - secretRef: name: app-secret
-
-
볼륨으로 주입:
-
Secret을 파일로 마운트하여 주입.
-
예:
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image volumeMounts: - name: secret-volume mountPath: /etc/secrets readOnly: true volumes: - name: secret-volume secret: secretName: app-secret
-
주의사항 및 보안 고려사항
-
Secrets는 인코딩된 상태:
-
인코딩된 형식일 뿐 암호화된 것은 아님.
-
인코딩된 값을 디코딩하여 민감한 정보를 얻을 수 있음.
-
Secrets 정의 파일을 GitHub와 같은 저장소에 푸시하지 않도록 주의.
-
-
ETCD에서 암호화되지 않음:
-
기본적으로 ETCD에 저장된 데이터는 암호화되지 않음.
-
암호화를 활성화하려면
encryption-at-rest
설정 고려. -
예:
apiVersion: apiserver.config.k8s.io/v1 kind: EncryptionConfiguration resources: - resources: - secrets providers: - aescbc: keys: - name: key1 secret: <base64-encoded-secret>
-
-
RBAC 설정:
-
동일한 네임스페이스 내에서 Pod이나 Deployment를 생성할 수 있는 권한이 있는 사용자는 Secrets에 접근할 수 있음.
-
RBAC를 설정하여 접근을 제한.
-
-
서드파티 Secret 제공자 사용:
-
AWS, Azure, GCP, Vault와 같은 외부 Secret 제공자 사용 고려.
-
외부 제공자는 보안 관리를 더 효율적으로 처리.
-
요약
-
Secrets는 Kubernetes에서 비밀번호와 같은 민감한 정보를 인코딩된 형식으로 저장하고 관리하는 데 사용됨.
-
명령형 방법과 선언형 방법을 통해 Secrets를 생성할 수 있음.
-
Pod 정의 파일에서
envFrom
과volumes
속성을 사용하여 Secrets를 주입할 수 있음. -
보안 고려사항을 준수하여 Secrets를 안전하게 관리하는 것이 중요함.
Certified ...
Certified ...