S potěšením oznamujeme, že beta verze Terraform Provideru pro Psono je nyní k dispozici veřejně v Terraform Registry.
Týmy spravující infrastrukturu nyní mohou spravovat jednotlivé klíče uvnitř již vytvořených položek Psono Environment Variables jako součást svého Terraform workflow. Provider uchovává existující hodnoty, dokáže generovat nová hesla, rotovat spravované hodnoty, zapisovat externě dodané hodnoty a číst tajemství skrze efemérní Terraform resource.
Práce s tajemstvími v infrastruktuře jako kódu vyžaduje zvláštní péči. Označení citlivosti (sensitive flag) může skrýt hodnotu z běžného CLI výstupu, ale nemusí ji ochránit před uložením do stavu Terraformu. Provider pro Psono využívá write-only a efemérní možnosti Terraformu, aby tento problém eliminoval, a vyžaduje Terraform ve verzi 1.11 či novější.
Provider podporuje tři běžné typy workflow:
Díky tomu je možné začlenit operace s tajemstvími do Terraformu a samotné hodnoty bezpečně uchovávat v Psono.
Provider používá omezený Psono API klíč. Přiřazujete pouze položky Environment Variables, které Terraform potřebuje a udělujete oprávnění k jejich čtení pro všechny operace. Vytváření, aktualizace, rotace nebo mazání klíčů navíc vyžaduje právo zápisu. Provider nepotřebuje neomezený API klíč a nemůže vytvářet trezory, složky ani datastory.
Šifrování i dešifrování probíhá lokálně na straně provideru. Ověření HTTPS certifikátu nelze vypnout a privátní autority lze přidat pomocí PEM CA bundle. Produkční systémy by vždy měly používat HTTPS URL k Psono.
Je potřeba mít Terraform ve verzi 1.11 nebo novější. Přidejte provider do konfigurace:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Přihlašovací údaje nakonfigurujte přes environmentální proměnné, nikoliv do souborů Terraformu:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='NAHRAĎTE_ID_KLÍČE'
export PSONO_API_SECRET_KEY='NAHRAĎTE_TAJNÝ_KLÍČ'
Poté inicializujte pracovní adresář:
terraform init
Terraform si stáhne podepsanou verzi provideru a ověří podpis kontrolního součtu.
Následující resource spravuje DB_PASSWORD v existující položce Psono Environment Variables:
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
}
Pokud klíč již existuje, provider jej převezme bez změny hodnoty. Pokud neexistuje, provider vygeneruje a uloží novou hodnotu v Psono. Generovaná hodnota není vrácena v rámci resource a nevstupuje do stavu Terraformu.
Při změně hodnoty inkrementujte rotation_version. Tím vynutíte vygenerování nové hodnoty, včetně původně adoptovaných či importovaných hodnot, proto by měly být rotace vždy před aplikací zkontrolovány.
Efemérní hodnota z jiného provideru může být zapsána do Psono pomocí 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á pouze při běhu Terraformu a neukládá se do plánu ani stavu. Při změně hodnoty inkrementujte value_wo_version.
Zničení spravovaného resource ponechá klíč v Psono ve výchozím nastavení. To chrání hodnoty, které Terraform pouze adoptoval, ale nevytvořil. Nastavte deletion_policy = "Delete" pouze v případě, že chcete, aby Terraform při zničení nebo nahrazení resource explicitně odstranil klíč v Psono.
Provider je open source a můžete jej začít používat již dnes:
Beta verze se úmyslně zaměřuje pouze na položky Environment Variables a omezené API klíče. Díky tomu je oprávnění úzké, provider nemá neomezený přístup k trezorům a poskytuje bezpečné a efektivní řešení pro správu provozních tajemství z Terraformu.