34.5. 验证数据是否加密
在写入 etcd 时数据会被加密。在重启 API 服务器后,任何新创建或更新的 secret 都应在存储时加密。要检查,您可以使用 etcdctl
命令行程序检索您的 secret 的内容。
在
default
命名空间中创建一个名为secret1
的新 secret:$ oc create secret generic secret1 -n default --from-literal=mykey=mydata
使用
etcdctl
命令行,从 etcd 中读取该 secret:$ ETCDCTL_API=3 etcdctl get /kubernetes.io/secrets/default/secret1 -w fields [...] | grep Value
[…]
必须是连接到 etcd 服务器的附加参数。最终的命令类似如下:
$ ETCDCTL_API=3 etcdctl get /kubernetes.io/secrets/default/secret1 -w fields \ --cacert=/var/lib/origin/openshift.local.config/master/ca.crt \ --key=/var/lib/origin/openshift.local.config/master/master.etcd-client.key \ --cert=/var/lib/origin/openshift.local.config/master/master.etcd-client.crt \ --endpoints 'https://127.0.0.1:4001' | grep Value
- 验证以上命令的输出是否为前缀 k8s:enc:aescbc:v1:,它表示 aescbc 供应商已加密生成的数据。
通过 API 检索时验证 secret 是否已正确解密:
$ oc get secret secret1 -n default -o yaml | grep mykey
这应与 mykey: bXlkYXRh 匹配。