Sa zadovoljstvom najavljujemo da je beta verzija Psono Terraform Providera sada dostupna u javnom Terraform Registru.
Timovi za infrastrukturu sada mogu upravljati pojedinačnim ključevima unutar unaprijed kreiranih Psono unosa za varijable okruženja kao dio svog Terraform toka rada. Provider može očuvati postojeće vrijednosti, generirati nove lozinke, rotirati upravljane vrijednosti, upisivati vanjski unesene vrijednosti i čitati tajne putem efemernih resursa u Terraform-u.
Rukovanje tajnama u infrastrukturi kao kodu zahtijeva posebnu pažnju. Oznaka "sensitive" može sakriti vrijednost iz uobičajenog CLI ispisa, ali to ne jamči da vrijednost neće završiti u Terraform state datoteci. Psono provider koristi Terraform-ove mogućnosti samo za pisanje i efemerne resurse kako bi izbjegao taj problem te zahtijeva Terraform 1.11 ili noviji.
Provider podržava tri uobičajena tijeka rada:
Ovo čini moguće uključivanje operacija životnog ciklusa tajne u Terraform, pri čemu stvarne vrijednosti ostaju u Psonu.
Provider koristi ograničeni Psono API ključ. Dodjeljujete samo unose za varijable okruženja koje su Terraform-u potrebne i dajete dozvolu za čitanje za sve operacije. Za kreiranje, ažuriranje, rotaciju ili brisanje ključeva potrebna je i dozvola za pisanje. Provider ne treba neograničeni API ključ i ne može kreirati unose u vault-u, mape ni spremišta podataka.
Enkripcija i dekripcija odvijaju se lokalno u provideru. Provjera HTTPS certifikata ne može se onemogućiti, a privatne certifikacijske vlasti mogu se dodati putem PEM CA paketa. Produkcijski sustavi uvijek bi trebali koristiti HTTPS Psono URL.
Potreban je Terraform 1.11 ili noviji. Dodajte provider u vašu Terraform konfiguraciju:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Konfigurirajte vjerodajnice putem environment varijabli, a ne u Terraform datotekama:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='ZAMIJENITE_SA_API_KEY_ID'
export PSONO_API_SECRET_KEY='ZAMIJENITE_SA_API_SECRET_KEY'
Zatim inicijalizirajte radni direktorij:
terraform init
Terraform preuzima potpisano izdanje providera i provjerava njegovu kontrolnu suma.
Sljedeći resurs upravlja DB_PASSWORD vrijednosti u postojećem Psono unosu varijabli okruženja:
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
}
Ako ključ već postoji, provider ga preuzima bez promjene vrijednosti. Ako ne postoji, provider generira i pohranjuje novu vrijednost u Psonu. Generirana vrijednost se ne vraća kroz upravljani resurs i ne ulazi u Terraform state.
Povećajte rotation_version kada Terraform treba generirati zamjenu. Ovo također zamjenjuje vrijednosti koje su izvorno preuzete ili uvezene, stoga bi rotacija trebala biti pregledana prije primjene.
Efemernu vrijednost iz drugog providera možete upisati u Psono putem 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
}
Vrijednost je dostupna tijekom Terraform operacije, ali se ne pohranjuje u plan ni u state. Povećajte value_wo_version kada Terraform treba upisati zamjensku vrijednost.
Uništavanje upravljanog resursa po zadanom zadržava njegov ključ u Psonu. Ovo štiti vrijednosti koje je Terraform preuzeo, ali nije stvorio. Postavite deletion_policy = "Delete" samo kada Terraform treba izričito ukloniti ključ iz Psona tijekom uništavanja ili zamjene resursa.
Provider je open-source i dostupan već danas:
Beta izdanje namjerno je fokusirano na unose varijabli okruženja i ograničene API ključeve. To zadržava dozvole uskim, izbjegava neograničen pristup vault-u i pruža praktičnu osnovu za sigurno upravljanje operativnim tajnama iz Terraform-a.