Ens complau anunciar que la versió beta del Proveïdor Terraform de Psono ja està disponible públicament al Registre de Terraform.
Ara, els equips d’infraestructura poden gestionar claus individuals dins d’entrades precreades de Variables d’Entorn de Psono com a part del seu flux de treball de Terraform. El proveïdor pot preservar els valors existents, generar noves contrasenyes, rotar valors gestionats, escriure valors aportats externament i llegir secrets mitjançant recursos efímers de Terraform.
El maneig de secrets a la infraestructura com a codi requereix una atenció especial. El indicador sensible pot ocultar un valor de la sortida habitual de CLI, però no evita necessàriament que aquest valor es guardi a l’estat de Terraform. El proveïdor de Psono utilitza les capacitats d’escriptura única i els recursos efímers de Terraform per evitar aquest problema, i requereix Terraform 1.11 o superior.
El proveïdor suporta tres fluxos de treball habituals:
Això fa possible incloure operacions del cicle de vida del secret a Terraform tot mantenint els valors reals a Psono.
El proveïdor utilitza una clau d’API restringida de Psono. Només assignes les entrades de Variables d’Entorn que Terraform necessita i concedeixes permís de lectura per a totes les operacions. Crear, actualitzar, rotar o eliminar claus necessita, a més, permís d’escriptura. El proveïdor no requereix una clau d’API sense restriccions i no pot crear entrades de vault, carpetes ni magatzems de dades.
El xifratge i descifratge es realitza localment al proveïdor. La verificació del certificat HTTPS no es pot desactivar, i les autoritats certificadores privades es poden afegir mitjançant un bundle PEM CA. Els sistemes de producció sempre haurien d’utilitzar una URL HTTPS de Psono.
Es requereix Terraform 1.11 o superior. Afegiu el proveïdor a la vostra configuració de Terraform:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Configureu les credencials mitjançant variables d’entorn en comptes de posar-les als fitxers 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'
Després, inicialitzeu el directori de treball:
terraform init
Terraform descarrega la versió signada del proveïdor i verifica la signatura del checksum.
El recurs següent gestiona DB_PASSWORD dins una entrada existent de Variables d’Entorn 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 clau ja existeix, el proveïdor l’adopta sense canviar-ne el valor. Si no existeix, el proveïdor genera i desa un valor nou a Psono. El valor generat no és retornat pel recurs gestionat i no entra a l’estat de Terraform.
Incrementa rotation_version quan vulguis que Terraform generi un reemplaçament. Això també reemplaça valors que s’havien adoptat o importat originalment, per tant, els canvis de rotació s’haurien de revisar abans d’aplicar-los.
Un valor efímer d’un altre proveïdor es pot escriure a Psono amb 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 durant l’operació de Terraform però no s’emmagatzema ni al pla ni a l’estat. Augmenta value_wo_version quan vulguis que Terraform escrigui un substitut.
La destrucció d’un recurs gestionat conserva la seva clau a Psono per defecte. Això protegeix valors que Terraform havia adoptat però no creat. Assigna deletion_policy = "Delete" només quan vulguis que Terraform elimini explícitament la clau de Psono en destruir o substituir el recurs.
El proveïdor és codi obert i ja està disponible:
La versió beta se centra deliberadament en entrades de Variables d’Entorn i en claus d’API restringides. Això manté els permisos limitats, evita l’accés no restringit al vault i ofereix una base pràctica per gestionar secrets operacionals de forma segura des de Terraform.