Ir al contenido principal

Almacenando Secrets en Kubernetes. Explicación detallada y buenas prácticas.


Crear y gestionar Secrets en Kubernetes es un aspecto fundamental cuando trabajamos con información sensible, como credenciales o claves de API. A continuación, explico cómo se puede crear un Secret y algunas prácticas importantes al respecto.

Ejemplo práctico

En este ejercicio práctico, vamos a trabajar con un objeto Secret en Kubernetes:

  1. Creación del Secret a partir de un manifiesto YAML: Lo primero que haremos será crear un Secret utilizando un manifiesto YAML. Este procedimiento es similar a lo que hemos hecho anteriormente para otros objetos como ConfigMaps. En este paso, también verificaremos el estado del Secret y cómo recuperarlo de Kubernetes. Esta verificación es útil si queremos revisar el estado actual del objeto para recrearlo o modificarlo más adelante. Durante este proceso, también decodificamos el payload que está codificado en base64, para ver los valores clave que almacena.

    Comando de creación de un Secret:

    kubectl create secret generic mysecret --from-literal=username=admin --from-literal=password=pass123

    Recuperación del Secret:

    kubectl get secret mysecret -o yaml

    Decodificación del Secret (su contenido está en base64):

    echo "YWRtaW4=" | base64 --decode
  2. Recuperar el manifiesto YAML de un Secret existente: A continuación, obtendremos el YAML del Secret almacenado en el clúster. Este paso es útil para ver de forma sencilla el estado actual del Secret y cómo los datos se almacenan en el clúster. Una advertencia clave en este paso es que, si un hacker obtiene acceso al kube-apiserver, podría extraer los Secrets del clúster, ya que están almacenados en etcd sin encriptación.

    Comando para ver el YAML del Secret:

    kubectl get secret mysecret -o yaml

    El Secret estará codificado en base64, por lo que, aunque esté "ofuscado", puede ser fácilmente decodificado si alguien tiene acceso no autorizado.

  3. Creación de un Secret desde cero: En este paso, vamos a crear un nuevo Secret escribiendo los pares clave-valor en base64, creando el manifiesto YAML y aplicándolo en el clúster a través de la línea de comandos. Este proceso es muy útil cuando trabajas con Secretos sensibles y prefieres crear el YAML manualmente para tener un control total sobre su contenido antes de implementarlo.

    Ejemplo de YAML para un Secret:

    apiVersion: v1 kind: Secret metadata: name: my-manual-secret data: username: YWRtaW4= # admin (codificado en base64) password: cGFzczEyMw== # pass123 (codificado en base64)

    Aplicar el Secret en el clúster:

    kubectl apply -f my-manual-secret.yaml

    Ahora puedes verificar que el Secret ha sido correctamente creado y almacenado en el clúster.

  4. Verificación de los Secrets: Finalmente, para verificar que el Secret ha sido creado y almacenado correctamente, puedes ejecutar los siguientes comandos:

    Para verificar su existencia:

    kubectl get secrets

    Para obtener más detalles:

    kubectl describe secret my-manual-secret

Seguridad y buenas prácticas con los Secrets

Los Secrets son una parte vital de cualquier entorno de producción de Kubernetes, y aunque su codificación en base64 agrega una capa de ofuscación, no se consideran seguros por sí solos. Aquí algunas recomendaciones para mejorar la seguridad de los Secrets:

  • Cifrado en reposo: Asegúrate de habilitar la encriptación de los Secrets en el almacenamiento de etcd para protegerlos de accesos no autorizados.
  • RBAC: Utiliza Control de Acceso Basado en Roles (RBAC) para limitar el acceso a los Secrets solo a aquellos usuarios o servicios que realmente lo necesiten.
  • Sistemas de gestión de Secrets externos: Considera la posibilidad de integrar Kubernetes con un gestor de Secrets externo, como HashiCorp Vault, que proporciona un nivel adicional de seguridad y control sobre los datos sensibles.

Comentarios

Entradas populares de este blog

Autenticación y Autorización (Kubernetes).

La autenticación en Kubernetes es un aspecto crítico para la seguridad y control de acceso dentro de un clúster. Kubernetes proporciona varios mecanismos de autenticación para usuarios y cuentas de servicio, que deben pasar a través del API Server para realizar cualquier operación. En este artículo, revisaremos cómo funciona la autenticación y cómo puedes usar herramientas como kubectl y curl para interactuar de manera segura con el clúster. En primer lugar, ¿Qué es la autenticación y la autorización? •     Autenticación:  Es el proceso de verificar quién es un usuario. Responde a la pregunta "¿Quién eres?". •     Autorización: El proceso de determinar qué acciones puede realizar un usuario autenticado. Responde a la pregunta "¿Qué puedes hacer?". Primer paso: Autenticación. La autenticación en Kubernetes es el proceso mediante el cual el sistema verifica la identidad de los usuarios y cuentas de servicio que intentan acceder al clúster.  ...

Tip 1. Exámen CKA. Economiza y optimiza tu tiempo; Usa --help con el paginador Less en la ayuda.

📘 Domina los comandos --help y el uso de less en el examen CKA Durante el examen CKA (Certified Kubernetes Administrator) , uno de los recursos más potentes y completamente permitidos es el uso del --help en los comandos de Kubernetes. Además, puedes combinarlo con el paginador less para buscar y navegar fácilmente entre opciones. ✅ ¿Está permitido usar --help ? Sí, está 100% permitido . Puedes usar el --help de cualquier comando disponible en el entorno del examen: kubectl --help kubeadm init --help kubelet --help kubectl explain pod.spec.containers Estos comandos muestran la ayuda y las opciones disponibles directamente desde el sistema, sin necesidad de ir a la documentación. 🔍 ¿Cómo usar less para buscar rápidamente? Cuando la salida del comando es larga, puedes usar | less para verla de forma paginada y navegar más cómodamente. kubeadm init --help | less Una vez dentro de less , puedes buscar cualquier texto escribiendo /texto . Por ejemplo: /pod-networ...

TLS Bootstrapping en Kubernetes: Qué es, cómo funciona y por qué importa en el examen CKA

                                                       Uno de los conceptos que a menudo pasan desapercibidos en la administración de Kubernetes —pero que resultan clave tanto en entornos reales como en el examen CKA— es el TLS Bootstrapping . En este artículo entenderás qué es, cómo funciona, qué lo diferencia del kubeadm join tradicional y cómo puede aparecer en el examen. ¿Qué es TLS Bootstrapping? TLS Bootstrapping es el proceso por el cual el kubelet , el agente que corre en cada nodo, obtiene automáticamente un certificado TLS firmado por el clúster para autenticarse con el kube-apiserver . En otras palabras: permite que un nuevo nodo se una de forma segura al clúster sin necesidad de copiar manualmente los certificados. ¿Por qué es necesario? Cuando añades un nuevo nodo worker, su kubelet necesita autentic...