@media screen and (min-width: 580px) { .flotantewhatsapp{ display:none; } }

Compartir por WhatsApp

Inicio - Kubernetes - Hardening Kubernetes: Secretos
kubernetes-secretos-1

Hardening Kubernetes: Secretos

Hardening Kubernetes: Secretos

Si queremos empezar a securizar nuestros proyectos de Kubernetes, podemos empezar con buenas prácticas no almacenando en claro objetos con datos sensibles, como contraseñas, llaves SSH o tokens de OAuth.

El uso de Secretos te permite controlar la manera en que se usan los datos sensibles, y reduce notablemente el riesgo de exposición de esos datos sensibles a usuarios no autorizados.

Esta información se suele colocar en las especificaciones de los Pods o en imágenes de contenedores.

Un secreto puede ser generado tanto por un usuario como por el propio sistema. Cuando lo hace el sistema, se generan automáticamente mediante cuentas de servicios con credenciales de API.

Kubernetes crea automáticamente secretos que contienen credenciales para acceder a la API y modifica automáticamente sus Pods para usar este tipo de secreto.

Otros datos interesantes sobre los secretos:

  • Los secretos son objetos con espacios de nombres, es decir, existen en el contexto de un espacio de nombres
  • Puede acceder a ellos a través de un volumen o una variable de entorno desde un contenedor que se ejecuta en un pod
  • Los datos secretos en los nodos se almacenan en volúmenes tmpfs
  • Existe un límite de tamaño por secreto de 1 MB
  • El servidor API almacena secretos como texto sin formato en etcd
  • La creación y el uso automático de credenciales de API se puede deshabilitar o anular si se ve necesario. Sin embargo, si todo lo que se necesita es acceder de forma segura al servidor API, este es el flujo de trabajo recomendado.

kubernetes-secretos-1

El problema de los secretos es que se cifran en base64. Con lo que tú puede crear un secreto de la siguiente forma:

 

Por ejemplo, creamos un usuario y contraseña:

 

 

E implementarlos con un fichero YAML de la siguiente forma:

Pero también descifrarlos fácilmente con otro comando:

Y esto es un gran problema, si almacenamos todos nuestros usuarios y contraseñas, por ejemplo, en un repositorio.

Para paliar estas cosas, deberíamos ir un paso adelante y utilizar herramientas tipo KubeSealed. Que es una herramienta que te permite cifrar secretos mediante un recurso que se llama SealedSecret.

PROYECTO: https://github.com/bitnami-labs/sealed-secrets

Se instala mediante el binario de KubeSealed, lo que hace es cifrar mediante una key específica para el clúster, utilizando el certificado del clúster de Kubernetes donde se aplica. Para trabajar con la herramienta deberemos llevar los secretos a JSON.

En la web del proyecto os explican su instalación con Helm:

Generaríamos un secreto:

Lo revisamos con cat ebdnsecret.json y vemos como está cifrado:

Probamos a descifrarlo como hemos dicho para secretos en base64:

Instalamos kubeseal controller:

Para cifrarlo con Kubeseal lo hacemos con el siguiente comando:

Lo volvemos a comprobar con cat y verificamos el encriptado es totalmente más seguro, y es un recurso “SealedSecret”.

Y aplicamos el nuevo secreto:

Y verificamos que disponemos de él:

Y revisamos los secretos:

Podemos ver nuestro secreto:

 

¿Te ha gustado la entrada SÍGUENOS EN TWITTER?

Acerca de Raul Unzue Pulido

Administrador de sistemas virtuales e infraestructuras IT, linuxero y entusiasta de la tecnología.

Compruebe también

Cloud por vExperts

Ebook Cloud por vExperts

Ebook Cloud por vExperts Hoy os voy a contar un proyecto que se va desvelando …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

12 + dieciocho =

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies
Blog Maquinas Virtuales - El Blog de Negu