Для того чтобы заменить root токен в Vault необходимо чтобы сам vault был в состоянии unsealed, также нужно иметь unseal ключи в минимальном количестве для кворума. Текущий root токен не нужен.
Запустим процедуру генерации токена
vault operator generate-root -init
В ответ нам Vault отдаст nonce (сессию) и код OTP. Код OTP нам еще нужен будет для дальнейшей расшифровки нового токена, сохраним его в безопасном месте.
A One-Time-Password has been generated for you and is shown in the OTP field. You will need this value to decode the resulting root token, so keep it safe.Nonce 15565c79-cc9e-5e64-b986-8506e7bd1918Started trueProgress 0/1Complete falseOTP 5JFQaH76Ky2TIuSt4SPvO1CGkxOTP Length 26
Далее, нам надо передать в Vault unseal ключи. Если ключи находятся у разных людей, то каждый, кто держит unseal токен должен передать в Vault свой ключ (процесс схож с распечатыванием Vault)
vault operator generate-root
Root generation operation nonce: f67f4da3-4ae4-68fb-4716-91da6b609c3eUnseal Key (will be hidden):
Когда все unseal ключи будут предоставлены, то последнему кто вводит ключ будет выдан новый зашифрованный токен.
vault operator generate-rootRoot generation operation nonce: f67f4da3-4ae4-68fb-4716-91da6b609c3eUnseal Key (will be hidden):Nonce f67f4da3-4ae4-68fb-4716-91da6b609c3eStarted trueProgress 5/5Complete trueEncoded Token IxJpyqxn3YafOGhqhvP6cQ==
Расшифровываем новый токен
vault operator generate-root \-decode=IxJpyqxn3YafOGhqhvP6cQ== \-otp=5JFQaH76Ky2TIuSt4SPvO1CGkx
vault operator generate-root \-decode=IxJpyqxn3YafOGhqhvP6cQ== \-otp=5JFQaH76Ky2TIuSt4SPvO1CGkx24bde68f-3df3-e137-cf4d-014fe9ebc43f
Теперь Vault имеет 2 root токена. Старый токен нужно отозвать. При процессе отзыва токена, все токены которые были выписаны из под старого root токена будут тоже отозваны
vault token revoke $OLD_VAULT_TOKEN
Если все же нужно сохранить токены которые были сгенерированы из под старого root токена, то можно использовать флаг -mode=orphan
Оставляю ссылки на официальную документацию:
https://developer.hashicorp.com/vault/tutorials/operations/generate-root
https://developer.hashicorp.com/vault/docs/commands/token/revoke