Cómo almacenar de forma segura contraseñas y claves de API con Vault
Vault es una herramienta que se utiliza para acceder a información secreta de forma segura, puede ser contraseña, clave API, certificado o cualquier otra cosa. Vault proporciona una interfaz unificada para la información secreta a través de un sólido mecanismo de control de acceso y un amplio registro de eventos.
Otorgar acceso a información crítica es un problema bastante difícil cuando tenemos múltiples roles e individuos en diferentes roles que requieren información crítica diversa como, detalles de inicio de sesión en bases de datos con diferentes privilegios, claves API para servicios externos, credenciales para comunicación de arquitectura orientada a servicios, etc. La situación se pone peor aún cuando el acceso a la información secreta se administra a través de diferentes plataformas con configuraciones personalizadas, por lo que el almacenamiento seguro y continuo y la administración de los registros de auditoría es casi imposible. Pero Vault ofrece una solución a una situación tan compleja.
Características sobresalientes
Cifrado de datos: Vault puede cifrar y descifrar datos sin necesidad de almacenarlos. Los desarrolladores ahora pueden almacenar datos cifrados sin desarrollar sus propias técnicas de cifrado y permite a los equipos de seguridad definir parámetros de seguridad.
Almacenamiento secreto seguro: Vault cifra la información secreta (claves de API, contraseñas o certificados) antes de almacenarla en el almacenamiento persistente (secundario). Entonces, incluso si alguien tiene acceso a la información almacenada por casualidad, no será de utilidad hasta que se descifre.
Secretos dinámicos: Los secretos bajo demanda se generan para sistemas como bases de datos de AWS y SQL. Si una aplicación necesita acceder al bucket de S3, por ejemplo, solicita un par de claves de AWS de Vault, que otorga la información secreta requerida junto con un tiempo de concesión. La información secreta no funcionará una vez que expire el tiempo de arrendamiento.
Arrendamiento y Renovación: Vault otorga secretos con un límite de arrendamiento, revoca los secretos tan pronto como expira el arrendamiento, que puede renovarse mediante API si es necesario.
Revocación: Al expirar el período de arrendamiento, Vault puede revocar un solo secreto o un árbol de secretos.
Instalación de Vault
Hay dos formas de utilizar Vault.
1. Vault Binary precompilado se puede descargar para todos los tipos de Linux desde la siguiente fuente, una vez hecho esto, descomprímalo y colóquelo en una RUTA del sistema donde se guardan otros binarios para que se pueda acceder / invocar fácilmente.
Descargar binario de bóveda precompilado (32 bits)
Descargar binario precompilado de Vault (64 bits)
Descargar binario precompilado de Vault (ARM)
Descargue el binario de Vault precompilado que desee.
Descomprima el binario descargado.
¡Felicidades! Vault está listo para usarse.
2. Compilación de fuentes es otra forma de instalar Vault en el sistema. Se requiere que GO y GIT estén instalados y configurados correctamente en el sistema antes de comenzar el proceso de instalación.
A instalar GO en sistemas Redhat utilice el siguiente comando.
sudo yum install go
A instalar GO en sistemas Debian utilice los siguientes comandos.
sudo apt-get install golang
O
sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable
A instalar GIT en sistemas Redhat utilice el siguiente comando.
sudo yum install git
A instalar GIT en sistemas Debian utilice los siguientes comandos.
sudo apt-get install git
Una vez que tanto GO como GIT están instalados, comenzamos el proceso de instalación de Vault compilando desde la fuente.
- Clonar el siguiente repositorio de Vault en GOPATH
https://github.com/hashicorp/vault
- Verifique si existe el siguiente archivo de clonación; si no existe, Vault no se clonó en la ruta correcta.
$GOPATH/src/github.com/hashicorp/vault/main.go
- Ejecute el siguiente comando para construir Vault en el sistema actual y coloque el binario en el directorio bin.
make dev
Un tutorial introductorio de Vault
Hemos compilado el tutorial interactivo oficial de Vault junto con su salida en SSH.
Visión general
Este tutorial cubrirá los siguientes pasos:
– Inicializar y abrir su bóveda
– Autorizar sus solicitudes a Vault
– Secretos de lectura y escritura
– Sellar tu bóveda
Inicializa tu bóveda
Para comenzar, debemos inicializar una instancia de Vault para que pueda trabajar con ella.
Mientras se inicializa, puede configurar el comportamiento del sello de Vault.
Inicialice Vault ahora, con 1 clave de apertura para simplificar, usando el comando:
vault init -key-shares=1 -key-threshold=1
Notarás que Vault imprime varias claves aquí. No borre su terminal, ya que los necesitará en los próximos pasos.
Abriendo tu bóveda
Cuando se inicia un servidor de Vault, se inicia en un estado sellado. En este estado, Vault está configurado para saber dónde y cómo acceder al almacenamiento físico, pero no sabe cómo descifrar nada de él.
Vault cifra los datos con una clave de cifrado. Esta clave está encriptada con la «clave maestra», que no se almacena. Descifrar la clave maestra requiere un umbral de fragmentos. En este ejemplo, usamos un fragmento para descifrar esta clave maestra.
vault unseal <key 1>
Autoriza tus solicitudes
Antes de realizar cualquier operación con Vault, el cliente que se conecta debe estar autenticado. La autenticación es el proceso de verificar que una persona o máquina es quien dice ser y asignarle una identidad. Luego, esta identidad se usa al realizar solicitudes con Vault.
Para simplificar, usaremos el token raíz que generamos en init en el Paso 2. Esta salida debería estar disponible en el scrollback.
Autorizar con un token de cliente:
vault auth <root token>
Leer y escribir secretos
Ahora que se ha configurado Vault, podemos comenzar a leer y escribir secretos con el backend secreto montado por defecto. Los secretos escritos en Vault se cifran y luego se escriben en el almacenamiento de backend. El mecanismo de almacenamiento de backend nunca ve el valor sin cifrar y no tiene los medios necesarios para descifrarlo sin Vault.
vault write secret/hello value=world
Por supuesto, también puede leer estos datos:
vault read secret/hello
Selle su bóveda
También hay una API para sellar la Bóveda. Esto eliminará la clave de cifrado y requerirá otro proceso de apertura para restaurarla. El sellado solo requiere un único operador con privilegios de root. Esto suele ser parte de un «procedimiento de rotura de cristales» poco común.
De esta manera, si se detecta una intrusión, los datos de Vault se pueden bloquear rápidamente para tratar de minimizar los daños. No se puede acceder de nuevo sin acceso a los fragmentos de la clave maestra.
vault seal
Ese es el final del tutorial introductorio.
Resumen
Vault es una aplicación muy útil principalmente porque proporciona una forma confiable y segura de almacenar información crítica. Además, cifra la información crítica antes de almacenarla, mantiene registros de auditoría, otorga información secreta por un tiempo de arrendamiento limitado y la revoca una vez que expira el arrendamiento. Es una plataforma independiente y está disponible gratuitamente para descargar e instalar. Para descubrir más sobre Vault, se anima a los lectores a visitar el página web oficial.