Siamo lieti di annunciare che la versione beta del Provider Terraform per Psono è ora disponibile pubblicamente nel Terraform Registry.
I team infrastrutturali possono ora gestire singole chiavi all’interno delle voci già create delle Variabili d’Ambiente di Psono come parte del loro flusso di lavoro Terraform. Il provider può conservare i valori esistenti, generare nuove password, ruotare i valori gestiti, scrivere valori forniti esternamente e leggere i segreti tramite risorse effimere di Terraform.
La gestione dei segreti nell’infrastructure as code richiede particolare attenzione. Un flag sensibile può nascondere un valore dall’output della CLI normale, ma non necessariamente lo mantiene fuori dallo stato di Terraform. Il provider Psono utilizza le capacità di sola scrittura ed effimeri di Terraform per evitare questo problema e richiede Terraform 1.11 o superiore.
Il provider supporta tre flussi di lavoro comuni:
Questo permette di includere le operazioni sul ciclo di vita dei segreti in Terraform mantenendo i valori veri e propri in Psono.
Il provider utilizza una chiave API Psono con accesso limitato. Occorre assegnare solo le voci delle Variabili d’Ambiente di cui Terraform ha bisogno e concedere i permessi di lettura per tutte le operazioni. La creazione, l’aggiornamento, la rotazione o l’eliminazione delle chiavi richiedono anche il permesso di scrittura. Il provider non necessita di una chiave API senza restrizioni e non può creare voci di vault, cartelle o datastores.
La crittografia e la decrittazione avvengono localmente nel provider. La verifica del certificato HTTPS non può essere disabilitata e autorità di certificazione private possono essere aggiunte tramite un bundle PEM CA. I sistemi di produzione devono sempre utilizzare un URL Psono in HTTPS.
È richiesto Terraform 1.11 o superiore. Aggiungi il provider alla tua configurazione Terraform:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Configura le credenziali tramite variabili d’ambiente invece che inserirle nei file Terraform:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='SOSTITUISCI_CON_API_KEY_ID'
export PSONO_API_SECRET_KEY='SOSTITUISCI_CON_API_SECRET_KEY'
Quindi inizializza la directory di lavoro:
terraform init
Terraform scarica la release firmata del provider e ne verifica la firma del checksum.
La seguente risorsa gestisce DB_PASSWORD in una voce già esistente delle Variabili d’Ambiente di 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
}
Se la chiave esiste già, il provider la adotta senza modificarne il valore. Se non esiste, il provider genera e memorizza un nuovo valore in Psono. Il valore generato non viene restituito dalla risorsa gestita e non entra nello stato di Terraform.
Incrementa rotation_version quando Terraform deve generare un nuovo valore. Questo sostituisce anche i valori originariamente adottati o importati, quindi i cambiamenti di rotazione vanno rivisti prima di essere applicati.
Un valore effimero proveniente da un altro provider può essere scritto in 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
}
Il valore è disponibile durante l’operazione di Terraform ma non viene salvato nel piano né nello stato. Incrementa value_wo_version quando Terraform deve scrivere un nuovo valore.
La distruzione di una risorsa gestita mantiene di default la chiave su Psono. Questo protegge i valori che Terraform ha adottato ma non creato. Imposta deletion_policy = "Delete" solo quando vuoi che Terraform rimuova esplicitamente la chiave da Psono durante la distruzione o la sostituzione della risorsa.
Il provider è open source e disponibile fin da subito:
Il rilascio beta si concentra volutamente sulle voci delle Variabili d’Ambiente e chiavi API con permessi limitati. Questo mantiene i permessi ridotti, evita l’accesso illimitato ai vault e fornisce una base pratica per gestire in sicurezza i segreti operativi da Terraform.