Ich habe einen Kubernetes-Spielzeugcluster mit aktivierter Verschlüsselung im Ruhezustand über den abs-256-cbc
Anbieter. Ich habe hier keinen Tresor verwendet, um kms
das Problem zu simulieren. Dies bedeutet, dass sich der Verschlüsselungsschlüssel in einer einfachen Textdatei auf dem Masterknoten befindet.
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
resources:
- resources:
- secrets
providers:
- aescbc:
keys:
- name: key1
secret: c2VjcmV0IGlzIHNlY3VyZQ==
- identity: {}
Angenommen, der Verschlüsselungsschlüssel c2VjcmV0IGlzIHNlY3VyZQ==
ist durchgesickert. Besteht überhaupt eine Möglichkeit, die darin gespeicherten Geheimnisse zu entschlüsseln etcd
?
Beispiel:
Geheime Kreation:
k create secret generic secret1-no-encryption --from-literal foo="admin@123"
secret/secret1-no-encryption created
Das Geheimnis zu lesen, etcd
wann esNICHTverschlüsselt:
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"
Versuch, das Geheimnis zu lesen, wenn etcd verschlüsselt ist:
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