Nous sommes heureux d’annoncer que la version bêta du provider Terraform pour Psono est désormais disponible dans le Terraform Registry public.
Les équipes d’infrastructure peuvent désormais gérer individuellement les clés à l’intérieur d’entrées de Variables d’Environnement Psono pré-créées dans leur workflow Terraform. Le provider peut préserver les valeurs existantes, générer de nouveaux mots de passe, faire tourner les valeurs gérées, écrire des valeurs fournies de l’extérieur et lire des secrets via des ressources éphémères dans Terraform.
La gestion des secrets dans l’infrastructure as code requiert une attention particulière. Un drapeau « sensible » peut masquer une valeur de la sortie normale du CLI, mais cela ne garantit pas qu’elle reste en dehors de l’état de Terraform. Le provider Psono utilise les capacités d’écriture seule et éphémère de Terraform pour éviter ce problème et requiert Terraform 1.11 ou plus récent.
Le provider prend en charge trois workflows courants :
Cela permet d’inclure des opérations sur le cycle de vie des secrets dans Terraform tout en gardant les valeurs dans Psono.
Le provider utilise une clé API Psono restreinte. Vous n’assignez que les entrées de Variables d’Environnement dont Terraform a besoin et donnez la permission de lecture pour toutes les opérations. La création, la mise à jour, la rotation ou la suppression de clés nécessite également la permission d’écriture. Le provider n’a pas besoin d’une clé API non restreinte et ne peut pas créer d’entrées de coffre, de dossiers ou de stores de données.
Le chiffrement et le déchiffrement se produisent localement dans le provider. La vérification du certificat HTTPS ne peut pas être désactivée, et les autorités de certification privées peuvent être ajoutées via un bundle CA PEM. Les systèmes de production doivent toujours utiliser une URL Psono en HTTPS.
Terraform 1.11 ou plus récent est requis. Ajoutez le provider à votre configuration Terraform :
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Configurez les identifiants via des variables d’environnement plutôt que de les placer dans les fichiers Terraform :
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='REMPLACEZ_PAR_L_ID_DE_VOTRE_CLE_API'
export PSONO_API_SECRET_KEY='REMPLACEZ_PAR_VOTRE_CLE_SECRETE_API'
Ensuite, initialisez le répertoire de travail :
terraform init
Terraform télécharge la version signée du provider et vérifie la signature de son empreinte.
La ressource suivante gère DB_PASSWORD dans une entrée existante de Variables d’Environnement 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 clé existe déjà, le provider l’adopte sans en changer la valeur. Si elle n’existe pas, le provider génère et stocke une nouvelle valeur dans Psono. Cette valeur générée n’est pas retournée par la ressource gérée et n’entre pas dans l’état de Terraform.
Incrémentez rotation_version lorsque vous souhaitez que Terraform génère un remplacement. Ceci remplace également les valeurs initialement adoptées ou importées ; ces changements de rotation devraient donc être revus avant application.
Une valeur éphémère issue d’un autre provider peut être enregistrée dans Psono avec 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
}
La valeur est disponible pendant l’opération Terraform mais n’est pas stockée dans le plan ou l’état. Incrémentez value_wo_version si Terraform doit écrire une nouvelle valeur de remplacement.
La destruction d’une ressource gérée conserve sa clé Psono par défaut. Cela protège les valeurs que Terraform a adoptées mais n’a pas créées. Ne définissez deletion_policy = "Delete" que si Terraform doit explicitement supprimer la clé de Psono lors de la destruction ou du remplacement de la ressource.
Le provider est open source et disponible dès aujourd’hui :
La version bêta se concentre volontairement sur les entrées de Variables d’Environnement et les clés API restreintes. Cela permet de limiter les permissions, d’éviter l’accès large au coffre, et d’offrir une base solide pour la gestion sûre des secrets opérationnels depuis Terraform.