암호화 키를 사용하여 Kubernetes 비밀 암호 해독

암호화 키를 사용하여 Kubernetes 비밀 암호 해독

공급자 를 사용하여 저장 시 암호화가 활성화된 장난감 Kubernetes 클러스터가 있습니다 abs-256-cbc. 여기서는 kms문제를 시뮬레이션하기 위해 볼트를 사용하지 않았습니다 . 이는 암호화 키가 마스터 노드의 일반 텍스트 파일에 있음을 의미합니다.

apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
  - resources:
      - secrets
    providers:
      - aescbc:
          keys:
            - name: key1
              secret: c2VjcmV0IGlzIHNlY3VyZQ==
      - identity: {}

암호화 키가 c2VjcmV0IGlzIHNlY3VyZQ==유출되었다고 가정하면 etcd?

예:

비밀 생성:

k create secret generic secret1-no-encryption --from-literal foo="admin@123"
secret/secret1-no-encryption created

etcd언제 부터 비밀을 읽는가아니다암호화됨:

sudo ETCDCTL_API=3 etcdctl --endpoints https://192.168.122.191:2379 --cert=/etc/ssl/etcd/ssl/node-test-kube-controller-1.pem --key=/etc/ssl/etcd/ssl/node-test-kube-controller-1-key.pem --cacert=/etc/ssl/etcd/ssl/ca.pem get /registry/secrets/default/secret1-no-encryption
/registry/secrets/default/secret1-no-encryption
k8s

v1Secret▒
secret1-no-encryptiondefault"*$3d45ddaa-2e34-4605-92d2-ad2ad31592692▒▒▒▒`
kubectl-createUpdatev▒▒▒FieldsV1:,
*{"f:data":{".":{},"f:foo":{}},"f:type":{}}B
foo     admin@123Opaque"

etcd가 암호화된 경우 비밀 읽기를 시도합니다.

sudo ETCDCTL_API=3 etcdctl --endpoints https://192.168.122.191:2379 --cert=/etc/ssl/etcd/ssl/node-test-kube-controller-1.pem --key=/etc/ssl/etcd/ssl/node-test-kube-controller-1-key.pem --cacert=/etc/ssl/etcd/ssl/ca.pem get /registry/secrets/default/secret2-with-encryption
/registry/secrets/default/secret2-with-encryption
k8s:enc:aescbc:v1:key1:n%-▒▒▒▒▒Ԩ▒qB▒x'V▒F▒y`l▒_X▒n
                                                  8#EEg▒!▒▒Mnk▒S▒▒KQ▒▒F▒NyJ▒$▒J▒▒Q`▒3m▒▒_▒▒U▒!7ZP▒bm▒x▒▒▒\▒{▒)e▒4▒Q-L▒#▒▒▒ձ▒<8▒▒ndd}Ҏ▒|1k▒▒>▒▒▒J▒R▒.▒▒c▒mɹ▒Q

관련 정보