es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo indicar a Terraform que intente eliminar una clave de Azure Key Vault que ha sido eliminada de forma suave, cuando ésta existe?

Azure impone la protección de purga en todas las claves de KeyVault de manera predeterminada, lo que está causando algunos problemas en el uso de Terraform. Específicamente, esto puede generar una situación en la que se eliminó una MV con una clave de cifrado de disco y como resultado, Terraform también eliminó la clave de cifrado de disco del KeyVault.

Si más tarde intenta recrear esa MV (y, por supuesto, usa el mismo nombre de clave de cifrado, ya que está basado en el nombre de la MV), el proceso de creación siempre fallará.

Esto se resolvería fácilmente si, en esta situación, Terraform simplemente recuperara la clave en cuestión antes de modificarla en su lugar.

¿Hay alguna manera de hacer esto o de solucionarlo?

Sí, sé que teóricamente podría crear una MV con un nombre diferente, pero en este caso, estoy creando una MV como parte de un clúster usando un count de Terraform y usando el count.index en el nombre de la MV. Me encuentro con este problema al probar si puedo eliminar nodos de MV del clúster y luego volver a agregarlos, pero debido a que mantienen el mismo nombre, me encuentro con la clave recuperable que Terraform parece no manejar.

EDIT: A través de prueba y error, he descubierto lo siguiente.

Si pongo lo siguiente en mi proveedor de azurerm

terraform
provider “azurerm” {
features {
key_vault {
purge_soft_delete_on_destroy = false
}
}
}

Se producirá el problema que informé. La clave no se recuperará automáticamente cuando se encuentre eliminada suavemente.

Sin embargo, si en su lugar pongo

terraform
provider “azurerm” {
features {}
}

Entonces la clave se recuperará y reutilizará sin problema, PERO Terraform fallará al destruir porque también intentará purgarla.

Abriré un informe de error ya que esto me parece un error (¿por qué purge_soft_delete_on_destroy = false evitaría la recuperación de la clave?) pero estoy curioso por ver si alguien tiene alguna solución.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución temporal en esta situación sería deshabilitar temporalmente la protección de eliminación durante el tiempo que esté tratando de recrear la máquina virtual. Esto se puede lograr modificando la configuración de la protección de eliminación en el almacén de claves mediante comandos de Azure CLI o PowerShell. Una vez que la máquina virtual se haya recreado exitosamente, puede habilitar nuevamente la protección de eliminación.

    Por ejemplo, si está utilizando Azure CLI, puede utilizar los siguientes comandos:

    Para deshabilitar la protección de eliminación:

    az keyvault update --name myKeyVault --enable-purge-protection false

    Para habilitar la protección de eliminación:

    az keyvault update --name myKeyVault --enable-purge-protection true

    Tenga en cuenta que deshabilitar la protección de eliminación puede ser un riesgo de seguridad, por lo que asegúrese de volver a habilitarla lo antes posible y solo hágalo durante el tiempo necesario.

    Otra opción sería utilizar un nombre de recurso diferente para la clave de cifrado al recrear la máquina virtual, de modo que Azure no la considere como una clave recuperable. Esto se puede lograr mediante una convención de nomenclatura dinámica que incluya una cadena aleatoria o basada en la marca de tiempo en el nombre de la clave de cifrado. De esta manera, incluso si el nombre de la máquina virtual sigue siendo el mismo, el nombre de la clave de cifrado será diferente y Terraform podrá crearla sin problemas.

Comments are closed.