S radosťou oznamujeme, že beta verzia Psono Terraform Provideru je teraz dostupná vo verejnom Terraform Registry.
Tímy infraštruktúry teraz môžu spravovať jednotlivé kľúče vopred vytvorených položiek Psono Environment Variables ako súčasť svojho workflow v Terraform. Provider vie zachovať existujúce hodnoty, generovať nové heslá, rotovať spravované hodnoty, zapísať externé hodnoty a čítať tajomstvá pomocou efemérnych Terraform zdrojov.
Manipulácia s tajomstvami v infraštruktúre ako kóde si vyžaduje zvláštnu pozornosť. Príznak "sensitive" môže skryť hodnotu z bežného CLI výstupu, ale nezaručuje, že táto hodnota nebude v Terraform state. Psono provider využíva zapisovateľné a efemérne možnosti Terraformu, aby tento problém obišiel, a vyžaduje Terraform verzie 1.11 alebo novšej.
Provider podporuje tri bežné workflowy:
Vďaka tomu je možné zaradiť operácie životného cyklu tajomstiev do Terraformu, pričom samotné hodnoty zostávajú bezpečne v Psono.
Provider používa obmedzený Psono API kľúč. Priraďujete iba tie Environment Variables položky, ktoré Terraform potrebuje, a udeľujete oprávnenie na čítanie pre všetky operácie. Vytváranie, upravovanie, rotovanie alebo mazanie kľúčov navyše vyžaduje právo zápisu. Provider nepotrebuje neobmedzený API kľúč a nevie vytvárať položky vaulut-u, zložky ani datastory.
Šifrovanie a dešifrovanie prebieha lokálne v provide-ri. Overenie HTTPS certifikátu nie je možné vypnúť, a privátne certifikačné autority možno pridať pomocou PEM CA bundle. Produkčné systémy by vždy mali používať HTTPS Psono URL.
Vyžaduje sa Terraform 1.11 alebo novší. Pridajte provider do svojej Terraform konfigurácie:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Poverenia nakonfigurujte cez prostredné variabilné prostredia namiesto ich zapisovania do Terraform súborov:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='NAHRADTE_API_KEY_ID'
export PSONO_API_SECRET_KEY='NAHRADTE_API_SECRET_KEY'
Potom inicializujte pracovný adresár:
terraform init
Terraform stiahne podpísané vydanie provideru a overí jeho podpis kontrolného súčtu.
Nasledujúci zdroj spravuje DB_PASSWORD v existujúcej Psono Environment Variables položke:
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
}
Ak kľúč už existuje, provider ho prevezme bez zmeny jeho hodnoty. Ak neexistuje, provider vygeneruje a uloží novú hodnotu v Psono. Vygenerovaná hodnota sa nevracia cez spravovaný zdroj a nedostáva sa do Terraform state.
Zvýšte hodnotu rotation_version, keď má Terraform vygenerovať náhradu. Tým sa nahradia aj hodnoty, ktoré boli pôvodne
prevzaté alebo importované, takže zmeny rotácie by sa mali pred aplikáciou skontrolovať.
Efemérnu hodnotu z iného providera možno zapísať do Psono cez 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
}
Hodnota je dostupná počas operácie Terraform, ale neukladá sa do plánu ani stavu. Zvýšte value_wo_version,
keď má Terraform zapísať náhradnú hodnotu.
Zničenie spravovaného zdroja ponecháva kľúč v Psono štandardne zachovaný. To chráni hodnoty, ktoré Terraform prevzal, ale nevytvoril.
Nastavte deletion_policy = "Delete" iba vtedy, keď má Terraform pri zmazaní alebo nahradení zdroja explicitne kľúč odstrániť z Psono.
Provider je open source a dostupný už dnes:
Beta verzia sa zámerne sústredí na položky Environment Variables a obmedzené API kľúče. Tým sa udržiavajú oprávnenia úzke, vyhýba sa neobmedzenému prístupu do vaultu a poskytuje sa praktický základ na bezpečnú správu prevádzkových tajomstiev z Terraformu.