๐Ÿ“˜ Encrypting Secret Data at Rest

1. ๊ธฐ๋ณธ ๋ฌธ์ œ์ 


2. etcd์— ์ €์žฅ๋œ ์ƒํƒœ ํ™•์ธ

  1. Secret ์ƒ์„ฑ:

    kubectl create secret generic my-secret --from-literal=key1=supersecret
    
    
  2. etcd์—์„œ ์ง์ ‘ ํ™•์ธ (etcdctl ์‚ฌ์šฉ):

    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
    
    
  3. ๊ฒฐ๊ณผ โ†’ โ€œsupersecretโ€ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ๋จ.

    ๐Ÿ‘‰ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ์ž„์„ ํ™•์ธ.


3. ์•”ํ˜ธํ™” ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•

(1) ์•”ํ˜ธํ™” ์„ค์ • ํŒŒ์ผ (enc.yaml)

apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: <32-byte-base64-key>
      - identity: {}

๐Ÿ”‘ ํ‚ค ์ƒ์„ฑ (32๋ฐ”์ดํŠธ ๋žœ๋ค, base64 ์ธ์ฝ”๋”ฉ):

head -c 32 /dev/urandom | base64

(2) kube-apiserver ๋งค๋‹ˆํŽ˜์ŠคํŠธ ์ˆ˜์ • (/etc/kubernetes/manifests/kube-apiserver.yaml)