Nos complace anunciar que la versión beta del Proveedor de Terraform para Psono ya está disponible de forma pública en el Registro de Terraform.
Ahora, los equipos de infraestructura pueden gestionar claves individuales dentro de entradas de Variables de Entorno previamente creadas en Psono como parte de su flujo de trabajo en Terraform. El proveedor puede preservar los valores existentes, generar nuevas contraseñas, rotar valores gestionados, escribir valores externos proporcionados y leer secretos a través de recursos efímeros de Terraform.
El manejo de secretos en infraestructura como código requiere especial atención. Un indicador de confidencialidad puede ocultar un valor de la salida normal de la CLI, pero no necesariamente evita que ese valor se almacene en el estado de Terraform. El proveedor de Psono utiliza las capacidades de solo escritura y efímeras de Terraform para evitar ese problema y requiere Terraform 1.11 o superior.
El proveedor admite tres flujos de trabajo comunes:
Esto hace posible incluir operaciones sobre el ciclo de vida de los secretos en Terraform, manteniendo los valores reales en Psono.
El proveedor utiliza una clave API restringida de Psono. Solo se asignan las entradas de Variables de Entorno que Terraform necesita y se otorga permiso de lectura para todas las operaciones. Para crear, actualizar, rotar o borrar claves, además, se requiere permiso de escritura. El proveedor no necesita una clave API sin restricciones y no puede crear entradas de bóveda, carpetas ni almacenes de datos.
El cifrado y descifrado ocurre localmente en el proveedor. No se puede deshabilitar la verificación del certificado HTTPS, y las autoridades certificadoras privadas se pueden agregar mediante un paquete CA en formato PEM. Los sistemas en producción siempre deben utilizar una URL de Psono con HTTPS.
Se requiere Terraform 1.11 o superior. Agrega el proveedor a tu configuración de Terraform:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Configura las credenciales a través de variables de entorno en lugar de colocarlas en los archivos de Terraform:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='REPLACE_WITH_API_KEY_ID'
export PSONO_API_SECRET_KEY='REPLACE_WITH_API_SECRET_KEY'
Luego inicializa el directorio de trabajo:
terraform init
Terraform descarga la versión firmada del proveedor y verifica la firma del checksum.
El siguiente recurso gestiona la clave DB_PASSWORD en una entrada existente de Variables de Entorno de Psono:
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
length = 32
min_lower = 4
min_upper = 4
min_numeric = 4
min_special = 4
rotation_version = 1
}
Si la clave ya existe, el proveedor la adopta sin cambiar su valor. Si no existe, el proveedor genera y almacena un valor nuevo en Psono. El valor generado no es devuelto por el recurso gestionado ni entra al estado de Terraform.
Incrementa rotation_version cuando quieras que Terraform genere un reemplazo. Esto también reemplaza valores que fueron adoptados o importados originalmente, por lo que los cambios de rotación deben revisarse antes de aplicarlos.
Un valor efímero de otro proveedor puede escribirse en Psono con value_wo:
ephemeral "random_password" "database" {
length = 32
}
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
value_wo = ephemeral.random_password.database.result
value_wo_version = 1
}
El valor está disponible durante la operación de Terraform, pero no se almacena en el plan ni en el estado. Incrementa value_wo_version cuando desees que Terraform escriba un reemplazo.
Destruir un recurso gestionado conserva su clave en Psono por defecto. Esto protege valores que Terraform adoptó pero no creó. Establece deletion_policy = "Delete" únicamente cuando quieras que Terraform elimine explícitamente la clave de Psono al destruir o reemplazar recursos.
El proveedor es de código abierto y está disponible hoy:
La versión beta se centra deliberadamente en las entradas de Variables de Entorno y claves API restringidas. Esto mantiene los permisos reducidos, evita el acceso no restringido a la bóveda y proporciona una base práctica para gestionar secretos operativos de manera segura desde Terraform.