[CKA] 2주차 Day 4

강아람·2023년 2월 23일
0

CKA

목록 보기
8/22
post-thumbnail

Section 5: Application Lifecycle Management


Encrypting Secret Data at Rest


secret을 생성해보자!

  • secret 생성
kubectl create secret generic my-secret --from-literal=key1=supersecret


  • secret 확인
kubectl get secret


  • secret 더 자세한 정보 확인
kubectl describe secret my-secret


  • secret 구성 파일 확인하기
kubectl get secret my-secret -o yaml


  • secret decode
echo "key" | base64 --decode


이번 강의에서는 encoding 을 중요하게 다루지는 않는다.

etcd에 데이터가 어떻게 저장되는지에 초점을 맞추어 학습해보자!


etcd에 데이터가 어떻게 저장될까?

이를 확인하기 전에 etcd 명령을 사용할 수 있어야 한다.


etcdctl 설치

apt-get install etcd-client


etcd 컨트롤 플레인 확인

etcd는 pod 형태로 실행되고 있다.

kubectl get pods -n kube-system


etcd 데이터 내용 확인

앞에서 생성한 secret my-secret이 etcd에 어떻게 저장되어 있는지 확인하려고 한다.


  • 확인하는 명령어

이 명령을 실행하기 위해서는 인증키가 필요하다.

ca.crt, server.crt, server.key가 해당 경로에 있는지 확인해야 한다. (kubernetes 클러스터 생성 시 키가 함께 생성된다.)

ETCDCTL_API=3 etcdctl \
   --cacert=/etc/kubernetes/pki/etcd/ca.crt   \
   --cert=/etc/kubernetes/pki/etcd/server.crt \
   --key=/etc/kubernetes/pki/etcd/server.key  \
   get /registry/secrets/default/my-secret | hexdump -C


확인해보면 데이터는 암호화되지 않은 평문 그대로 저장되는 것을 알 수 있다.

즉, etcd에 접근하는 사용자는 누구든지 모든 secret을 볼 수 있기 때문에 보안 측면의 문제가 발생할 수 있다.


따라서 이 문제를 해결해야 한다!!!


먼저 암호화 주소가 이미 활성화 되어 있는지 여부를 확인해야 한다.

이것은 kube-apiserver의 옵션인 --encryption-provider-config를 통해 수행된다.

실행되고 있는 프로세스에서 kube-apiserver에 대한 내용을 확인해보자.



kube-apiserver 옵션 확인하기


1) 커맨드로 확인


ps -aux | grep kube-api


이제 옵션들 중 --encryption-provider-config 옵션이 활성화 되어 있는지 확인해보자.


  • --encryption-provider-config 옵션 확인하기
ps -aux | grep kube-api | grep "--encryption-provider-config"


커맨드 결과를 반환하지 않는다는 것은 옵션이 활성화되지 않았다는 의미이다.



2) 정의 파일로 확인

kube-apiserver의 정의 파일 내용으로 활성화된 옵션을 확인할 수 있다.


  • kube-apiserver 정의 파일 찾기
ls /etc/kubernetes/manifests/


  • 내용 확인하기
vi /etc/kubernetes/manifests/kube-apiserver.yaml

...

...

--encryption-provider-config 옵션이 존재하지 않는 것을 확인할 수 있다.



EncryptionConfiguration 생성

0개의 댓글