Wir freuen uns, bekannt zu geben, dass die Beta-Version des Psono Terraform Providers nun im öffentlichen Terraform Registry verfügbar ist.
Infrastrukturteams können nun einzelne Schlüssel in bereits vorhandenen Psono-Einträgen für Umgebungsvariablen im Rahmen ihres Terraform-Workflows verwalten. Der Provider kann bestehende Werte beibehalten, neue Passwörter generieren, verwaltete Werte rotieren, extern bereitgestellte Werte schreiben und Secrets über flüchtige Terraform-Ressourcen auslesen.
Der Umgang mit Geheimnissen in Infrastructure-as-Code benötigt besondere Sorgfalt. Ein Sensitiv-Flag kann einen Wert vor der üblichen CLI-Ausgabe verbergen, verhindert aber nicht zwangsläufig, dass dieser Wert im Terraform-Status gespeichert wird. Der Psono Provider nutzt die Schreibschutz- und flüchtigen Funktionen von Terraform, um dieses Problem zu vermeiden, und erfordert Terraform 1.11 oder neuer.
Der Provider unterstützt drei gängige Workflows:
Damit ist es möglich, Geheimnis-Lifecycle-Operationen in Terraform zu integrieren, während die eigentlichen Werte in Psono verbleiben.
Der Provider verwendet einen eingeschränkten Psono API-Schlüssel. Sie weisen nur die Einträge für Umgebungsvariablen zu, die Terraform benötigt, und gewähren Leserechte für alle Operationen. Erstellen, Aktualisieren, Rotieren oder Löschen von Schlüsseln erfordert zusätzlich Schreibrechte. Der Provider benötigt keinen uneingeschränkten API-Schlüssel und kann keine neuen Vault-Einträge, Ordner oder Datenspeicher anlegen.
Die Verschlüsselung und Entschlüsselung erfolgt lokal im Provider. Die Überprüfung von HTTPS-Zertifikaten kann nicht deaktiviert werden, und private Zertifizierungsstellen können über ein PEM-CA-Bundle hinzugefügt werden. Produktivsysteme sollten immer eine HTTPS-Psono-URL verwenden.
Terraform 1.11 oder neuer wird benötigt. Fügen Sie den Provider zu Ihrer Terraform-Konfiguration hinzu:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Konfigurieren Sie die Zugangsdaten über Umgebungsvariablen, anstatt sie in Terraform-Dateien zu hinterlegen:
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'
Initialisieren Sie anschließend das Arbeitsverzeichnis:
terraform init
Terraform lädt die signierte Provider-Version herunter und überprüft deren Prüfsummensignatur.
Die folgende Ressource verwaltet DB_PASSWORD in einem bestehenden Psono-Eintrag für Umgebungsvariablen:
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
}
Wenn der Schlüssel bereits existiert, übernimmt ihn der Provider, ohne dessen Wert zu ändern. Falls nicht, generiert und speichert der Provider einen neuen Wert in Psono. Der generierte Wert wird von der verwalteten Ressource nicht zurückgegeben und gelangt somit nicht in den Terraform-Status.
Erhöhen Sie rotation_version, wenn Terraform einen neuen Wert generieren soll. Dies ersetzt auch Werte, die ursprünglich übernommen oder importiert wurden – Rotationsänderungen sollten daher vor der Anwendung geprüft werden.
Ein Wert aus einem anderen Provider kann mit value_wo flüchtig in Psono geschrieben werden:
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
}
Der Wert steht während der Terraform-Operation zur Verfügung, wird aber weder im Plan noch im Status abgespeichert. Erhöhen Sie value_wo_version, wenn Terraform einen neuen Wert schreiben soll.
Das Löschen einer verwalteten Ressource behält deren Psono-Schlüssel standardmäßig bei. So werden Werte geschützt, die von Terraform übernommen, aber nicht erzeugt wurden. Setzen Sie deletion_policy = "Delete" nur dann, wenn Terraform den Schlüssel explizit aus Psono entfernen soll, z. B. beim Löschen oder Ersetzen der Ressource.
Der Provider ist Open Source und ab sofort verfügbar:
Der Beta-Release konzentriert sich bewusst auf Einträge für Umgebungsvariablen und eingeschränkte API-Schlüssel. So werden die Berechtigungen begrenzt, ein uneingeschränkter Vault-Zugriff vermieden und eine praktikable Grundlage geschaffen, um operative Secrets sicher aus Terraform heraus zu verwalten.