Búsqueda de sitios web

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

Artículos relacionados: