Miło nam ogłosić, że beta wersja Psono Terraform Provider jest już dostępna publicznie w Terraform Registry.
Zespoły infrastrukturalne mogą teraz zarządzać poszczególnymi kluczami we wcześniej utworzonych wpisach Zmiennych Środowiskowych Psono w ramach swojego workflow Terraform. Provider potrafi zachować istniejące wartości, generować nowe hasła, rotować zarządzane wartości, zapisywać wartości dostarczone zewnętrznie oraz odczytywać sekrety przez efemeryczne zasoby Terraform.
Obsługa sekretów w podejściu infrastructure as code wymaga szczególnej ostrożności. Flaga „sensitive” może ukryć wartość w standardowym wyjściu CLI, ale niekoniecznie uniemożliwi jej zapisanie w stanie Terraform. Provider Psono wykorzystuje możliwość działania jedynie do zapisu oraz efemeryczne zasoby, by rozwiązać ten problem — wymaga Terraform w wersji 1.11 lub nowszej.
Provider wspiera trzy typowe workflowy:
Pozwala to dodawać operacje na cyklu życia sekretów w Terraform bez wyciągania rzeczywistych wartości poza Psono.
Provider wykorzystuje ograniczony klucz API Psono. Wskazujesz tylko te wpisy Zmiennych Środowiskowych, które są potrzebne Terraformowi i nadajesz uprawnienia do odczytu dla wszystkich operacji. Tworzenie, aktualizacja, rotacja lub kasowanie kluczy wymaga dodatkowo uprawnień do zapisu. Provider nie potrzebuje nieograniczonego klucza API i nie może tworzyć wpisów sejfu, folderów ani magazynów danych.
Szyfrowanie i deszyfrowanie odbywa się lokalnie w providerze. Weryfikacja certyfikatu HTTPS nie może być wyłączona, a własne urzędy certyfikacji można dodać przez plik PEM CA bundle. Produkcyjne systemy powinny zawsze korzystać z adresu Psono pod HTTPS.
Wymagana jest wersja Terraform 1.11 lub nowsza. Dodaj provider do swojej konfiguracji Terraform:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Skonfiguruj dane uwierzytelniające przez zmienne środowiskowe, a nie w plikach Terraform:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='TUTAJ_WSTAW_API_KEY_ID'
export PSONO_API_SECRET_KEY='TUTAJ_WSTAW_API_SECRET_KEY'
Następnie zainicjuj katalog roboczy:
terraform init
Terraform pobierze podpisane wydanie providera i zweryfikuje jego sumę kontrolną.
Poniższy zasób zarządza DB_PASSWORD we wcześniej utworzonym wpisie zmiennych środowiskowych Psono:
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
}
Jeśli klucz już istnieje, provider go przejmuje bez zmiany jego wartości. Jeśli go nie ma, provider wygeneruje i zapisze nową wartość w Psono. Wygenerowana wartość nie jest zwracana przez zarządzany zasób ani nie trafia do stanu Terraform.
Zwiększ rotation_version, gdy chcesz wymusić wygenerowanie nowej wartości przez Terraform. Zastępuje to także wartości, które zostały przejęte lub zaimportowane, dlatego rotację należy zawsze przejrzeć przed zastosowaniem zmian.
Efemeryczna wartość z innego providera może zostać zapisana do Psono przez 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
}
Wartość jest dostępna podczas działania Terraform, ale nie jest przechowywana w planie ani stanie. Zwiększ value_wo_version, aby wymusić zapisanie nowej wartości.
Kasując zarządzany zasób, domyślnie klucz w Psono pozostaje. Chroni to wartości, które zostały przejęte przez Terraform, ale nie zostały przez niego utworzone. Ustaw deletion_policy = "Delete" tylko wtedy, gdy Terraform ma jawnie usunąć klucz z Psono podczas niszczenia lub zamiany zasobu.
Provider jest open source i dostępny już dziś:
Wersja beta skupia się celowo na wpisach Zmiennych Środowiskowych i ograniczonych kluczach API. Pozwala to zachować wąski zakres uprawnień, unika nieograniczonego dostępu do sejfu i zapewnia praktyczną bazę do bezpiecznego zarządzania operacyjnymi sekretami z poziomu Terraform.