¿Cómo generar de nuevo el token root en Vault?

Muchas veces vamos a necesitamos realizar alguna acción administrativa en Vault que requiera un root token y no disponemos de uno, podemos generar uno temporalmente mediante generate-root.

Para ello necesitaremos el quorum de claves configurado en Vault.

Generar el token

Comenzamos el proceso con:

vault operator generate-root -init

Vault nos mostrará información similar a:

Nonce:           12345678-1234-1234-1234-123456789abc
Started:         true
Progress:        0/3
Required Shares: 3
OTP:             xxxxxxxxxxxxxxxxxxxxxxxxx

Debemos guardar el Nonce y el OTP.

En este ejemplo necesitamos 3 claves para completar el proceso.

Introducir las claves

Ahora introducimos las claves necesarias:

vault operator generate-root \
  -nonce="12345678-1234-1234-1234-123456789abc"

Vault solicitará una clave:

Unseal Key (will be hidden):

Repetimos el comando con las diferentes claves hasta alcanzar el threshold configurado.

Cuando se complete el proceso obtendremos algo similar a:

Progress:       3/3
Complete:       true
Encoded Token:  xxxxxxxxxxxxxxxxxxxxxxxxx

Obtener el root token

Con el Encoded Token y el OTP podemos obtener el root token:

vault operator generate-root \
  -decode="xxxxxxxxxxxxxxxxxxxxxxxxx" \
  -otp="xxxxxxxxxxxxxxxxxxxxxxxxx"

Vault devolverá el token:

hvs.xxxxxxxxxxxxxxxxxxxxxxxxx

Ya podemos utilizar este token para realizar las operaciones administrativas que necesitemos.

Revocar el token

Una vez terminada la operación, es importante revocar el root token para no dejar activo un token con privilegios completos de administración.

Podemos hacerlo con:

vault token revoke <ROOT_TOKEN>

De esta forma, el token root permanece activo únicamente durante el tiempo necesario para realizar la operación administrativa y después queda revocado.

¿Es realmente necesario conservar el token root en Vault?

En este artículo, vamos a abordar un tema muy puntual pero crítico: cómo gestionar correctamente el token root en HashiCorp Vault.

Cuando inicializamos Vault, nos entrega un root token con acceso absoluto a todo el sistema. Muchos cometen el error de guardarlo en su gestor de contraseñas para el uso diario. En un entorno de producción, esto es un riesgo de seguridad enorme.

La regla de oro es simple: el token root inicial debe utilizarse únicamente para la configuración inicial (habilitar métodos de autenticación y crear políticas básicas). Una vez hecho esto, debes revocarlo para evitar que quede expuesto.

Pero entonces, ¿qué pasa si ocurre una emergencia y necesito permisos absolutos? No te preocupes, Vault permite generar un nuevo root token temporal bajo demanda utilizando tus claves de desellado (unseal keys).

Si ya terminaste tu configuración inicial y sigues usando el token root, elimínalo de forma segura con este comando:

vault token revoke -self

Si en el futuro de verdad necesitas privilegios absolutos para una emergencia, puedes iniciar la generación de uno nuevo así:

vault operator generate-root -init

Vault te pedirá que tú y tu equipo ingresen las claves de desellado necesarias (quórum) para entregarte el nuevo token.

¡Un saludo!