이번 포스트는 쿠버네티스 데이터 암호화 설정 작업입니다.
이전 시리즈와 같이 쿠버네티스 구성작업 단계이며, 작업에 사용되는 명령어는 아래 깃허브에서 확인 가능합니다.
URL : https://github.com/go4real/kubernetes-the-hard-way-aws/blob/master/docs/06-data-encryption-keys.md
쿠버네티스의 기밀 데이터 관리 기능의 특징은 아래와 같습니다.
암호, 토큰, 키 등 작은 크기의 중요한 데이터를 Secret 오브젝트에 저장
ex: 데이터베이스 인증정보, 외부 API 연동키(3rd 파티 서비스, 클라우드) 등
기밀 데이터를 코드에 넣는 것은 지양 (Public GitHub에 기밀 코드 유출 주의)
Pod과 독립적인 자원으로 생성 가능
기본 설정은 평문 형태로 데이터를 저장
etcd 접근 권한을 가진 사용자가 평문 형태의 기밀 정보를 읽을 수 있음
etcd에 저장할 데이터를 암호화 하기 위한 설정 필요
EncryptionConfiguration 리소스를 이용해 설정
$ ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)
$ for instance in controller-0 controller-1 controller-2; do
external_ip=$(aws ec2 describe-instances --filters \
"Name=tag:Name,Values=${instance}" \
"Name=instance-state-name,Values=running" \
--output text --query 'Reservations[].Instances[].PublicIpAddress')
scp -i kubernetes.id_rsa encryption-config.yaml ubuntu@${external_ip}:~/
done