We zijn verheugd aan te kondigen dat de bètaversie van de Psono Terraform Provider nu beschikbaar is in de publieke Terraform Registry.
Infrastructuurteams kunnen nu individuele sleutels beheren binnen vooraf aangemaakte Psono Environment Variables items als onderdeel van hun Terraform-werkflow. De provider kan bestaande waarden behouden, nieuwe wachtwoorden genereren, beheerde waarden roteren, extern aangeleverde waarden wegschrijven en geheimen lezen via tijdelijke Terraform resources.
Het omgaan met geheimen in Infrastructure as Code vereist speciale aandacht. Een ‘sensitive’-vlag kan een waarde verbergen in normale CLI-uitvoer, maar houdt die waarde niet noodzakelijk buiten de Terraform state. De Psono-provider benut de write-only en tijdelijke mogelijkheden van Terraform om dat probleem te vermijden en vereist Terraform 1.11 of nieuwer.
De provider ondersteunt drie veelvoorkomende werkstromen:
Dit maakt het mogelijk om secret lifecycle-operaties in Terraform op te nemen, terwijl de daadwerkelijke waarden in Psono blijven.
De provider gebruikt een beperkte Psono API-sleutel. Je wijst alleen de Environment Variables items toe die Terraform nodig heeft en verleent leesrechten voor alle bewerkingen. Voor het aanmaken, bijwerken, roteren of verwijderen van sleutels is daarnaast schrijfrechten nodig. De provider heeft geen onbeperkte API-sleutel nodig en kan geen kluis-items, mappen of datastores aanmaken.
Encryptie en decryptie vinden lokaal in de provider plaats. Verificatie van het HTTPS-certificaat kan niet worden uitgeschakeld, en privé certificaatautoriteiten kunnen worden toegevoegd via een PEM CA-bundle. Productiesystemen moeten altijd een HTTPS Psono-URL gebruiken.
Terraform 1.11 of nieuwer is vereist. Voeg de provider toe aan je Terraform-configuratie:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Configureer de inloggegevens via omgevingsvariabelen in plaats van deze in Terraform-bestanden op te nemen:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='VUL_HIER_API_KEY_ID_IN'
export PSONO_API_SECRET_KEY='VUL_HIER_API_SECRET_KEY_IN'
Initialiseer daarna de werkdirectory:
terraform init
Terraform downloadt de ondertekende provider-release en verifieert de checksum-handtekening.
De volgende resource beheert DB_PASSWORD in een bestaande Psono Environment Variables entry:
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
}
Als de sleutel al bestaat, adopteert de provider deze zonder de waarde te wijzigen. Bestaat deze nog niet, dan genereert en slaat de provider een nieuwe waarde op in Psono. De gegenereerde waarde wordt niet teruggegeven door de beheerde resource en komt niet in de Terraform state terecht.
Verhoog rotation_version wanneer Terraform een vervangende waarde moet genereren. Dit vervangt ook waarden die oorspronkelijk
geadopteerd of geïmporteerd zijn, dus rotatie-wijzigingen dienen te worden beoordeeld voordat ze worden uitgevoerd.
Een tijdelijke waarde van een andere provider kan naar Psono worden weggeschreven met 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
}
De waarde is beschikbaar tijdens de Terraform-bewerking, maar wordt niet opgeslagen in plan of state. Verhoog value_wo_version
wanneer Terraform een vervanging moet wegschrijven.
Bij het verwijderen van een beheerde resource blijft standaard de Psono-sleutel behouden. Dit beschermt waarden die Terraform heeft geadopteerd
maar niet heeft aangemaakt. Stel deletion_policy = "Delete" alleen in wanneer Terraform de sleutel expliciet uit Psono moet verwijderen
tijdens destroy of resource-vervanging.
De provider is open source en direct beschikbaar:
De bètarelease richt zich bewust op Environment Variables items en beperkte API-sleutels. Dit houdt de permissies beperkt, voorkomt onbeperkte kluis-toegang en biedt een praktische basis voor het veilig beheren van operationele geheimen vanuit Terraform.