Cómo decodificar/descifrar el secreto de Kubernetes |
La información confidencial, como contraseñas, claves SSH, credenciales de API y tokens de OAuth, se almacena como secretos en Kubernetes. Recientemente hicimos una guía sobre cómo copiar un secreto de Kubernetes de un espacio de nombres a otro. Cuando necesite confirmar los valores reales del secreto, puede decodificar datos base64. En esta breve guía, le mostraremos cómo decodificar un secreto base64 en Kubernetes con el comando kubectl.
Para esta demostración crearemos un secreto simple con nombre de usuario y contraseña para la base de datos.
echo -n 'admin' > ./username
echo -n 'Password' > ./password
Ejecute el comando kubectl create secret para crear un objeto secreto en el servidor API de Kubernetes.
$ kubectl create secret generic my-user-pass --from-file=./username --from-file=./password
secret/my-user-pass created
Puede confirmar que el objeto secreto se creó correctamente ejecutando el siguiente comando kubectl:
$ kubectl get secret my-user-pass
NAME TYPE DATA AGE
my-user-pass Opaque 2 6s
$ kubectl get secret my-user-pass -o yaml
Decodifica los datos secretos:
# Decode username secret
$ kubectl get secret my-user-pass -o jsonpath="{.data.username}" | base64 --decode
admin
# Decode password
$ kubectl get secret my-user-pass -o jsonpath="{.data.password}" | base64 --decode
Password
O usar:
kubectl get secret my-user-pass -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'
Este es el resultado de la ejecución de mi comando:
password.txt: Password
username.txt: admin
También puede generar datos codificados y decodificarlos con base64.
$ kubectl get secret my-user-pass -o yaml
apiVersion: v1
data:
password.txt: UGFzc3dvcmQ=
username.txt: YWRtaW4=
kind: Secret
....
$ echo 'YWRtaW4=' | base64 --decode
admin
$ echo "UGFzc3dvcmQ=" | base64 --decode
Password
Usando jq y base64 dedoce
Si tienes jq puedes usar el siguiente comando para decodificar.
$ kubectl get secret my-user-pass -o json | jq '.data | map_values(@base64d)'
{
"password.txt": "Password",
"username.txt": "admin"
}
Instale jq con el comando:
--- Ubuntu / Debian ---
$ sudo apt install jq
--- CentOS / Fedora ---
$ sudo yum install jq
Así es como puedes generar fácilmente los secretos codificados por base64 en Kubernetes.
A continuación se muestran los otros artículos que tenemos sobre Kubernetes.
Implementación de Prometheus en el clúster EKS Kubernetes
Cómo copiar el secreto de Kubernetes entre espacios de nombres
Uso del escalador automático de pod horizontal en el clúster Kubernetes EKS