Vi är glada att meddela att beta-versionen av Psono Terraform Provider nu finns tillgänglig i den publika Terraform Registry.
Infrastrukturteam kan nu hantera individuella nycklar i förskapade Psono Environment Variables-poster som en del av sin Terraform-arbetsflöde. Providern kan bevara existerande värden, generera nya lösenord, rotera hanterade värden, skriva externa värden och läsa hemligheter genom Terraform-temporära resurser.
Hantering av hemligheter i infrastruktur som kod kräver särskild försiktighet. En känslighetsflagga kan dölja ett värde i CLI-utmatningen, men det betyder inte att värdet hålls utanför Terraform state. Psono-provider använder Terraform:s skrivskyddade och temporära funktionalitet för att undvika detta problem och kräver Terraform 1.11 eller nyare.
Providern stödjer tre vanliga arbetsflöden:
Detta gör det möjligt att inkludera hemlighetslivscykel-operationer i Terraform samtidigt som de faktiska värdena förblir i Psono.
Providern använder en begränsad Psono API-nyckel. Du tilldelar endast de Environment Variables-poster som Terraform behöver och ger läsbehörighet för alla operationer. För att skapa, uppdatera, rotera eller ta bort nycklar krävs dessutom skrivbehörighet. Providence behöver inte någon obegränsad API-nyckel och kan inte skapa vault-poster, mappar eller datastore.
Kryptering och dekryptering sker lokalt i providern. Verifiering av HTTPS-certifikat kan inte inaktiveras, och privata certifikatutfärdare kan läggas till via en PEM CA-bunt. Produktsystem ska alltid använda en HTTPS Psono-URL.
Terraform 1.11 eller nyare krävs. Lägg till providern i din Terraform-konfiguration:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Konfigurera autentiseringsuppgifter via miljövariabler istället för att lägga dem i Terraform-filerna:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='ERSETT_MED_API_KEY_ID'
export PSONO_API_SECRET_KEY='ERSETT_MED_API_SECRET_KEY'
Initiera sedan arbetskatalogen:
terraform init
Terraform hämtar den signerade provider-utgåvan och verifierar dess kontrollsumme-signatur.
Följande resurs hanterar DB_PASSWORD i en befintlig Psono Environment Variables-post:
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
}
Om nyckeln redan finns adopterar providern den utan att ändra dess värde. Om den inte finns genererar och lagrar providern ett nytt värde i Psono. Det genererade värdet returneras inte av den hanterade resursen och hamnar inte i Terraform state.
Öka rotation_version när Terraform ska generera ett nytt ersättningsvärde. Detta ersätter även värden som adopterats eller
importerats, så roteringar bör alltid ses över innan de appliceras.
Ett temporärt värde från en annan provider kan skrivas till Psono med 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
}
Värdet finns tillgängligt under Terraform-operationen men lagras inte i plan eller state. Öka value_wo_version när Terraform
ska skriva ett nytt ersättningsvärde.
Om en hanterad resurs tas bort behålls dess Psono-nyckel som standard. Detta skyddar värden som Terraform adopterat
men inte själv har skapat. Sätt deletion_policy = "Delete" endast när Terraform ska ta bort nyckeln från Psono vid
borttagning eller utbyte av resursen.
Providern är öppen källkod och redan tillgänglig:
Beta-versionen fokuserar medvetet på Environment Variables-poster och begränsade API-nycklar. Detta håller behörigheterna smala, undviker obegränsad åtkomst till vault, och ger en praktisk grund för säker hantering av drifthemligheter från Terraform.