Repozytorium: iac-vault
Repozytorium zawiera kompletną konfigurację Infrastructure as Code (IaC) umożliwiającą zarządzanie środowiskiem HashiCorp Vault za pomocą OpenTofu. Projekt automatyzuje tworzenie, konfigurację oraz utrzymanie komponentów Vault, w tym trzystopniowego PKI, przestrzeni KV oraz polityk dostępu.
Architektura rozwiązania
Repozytorium iac-vault pełni rolę głównego punktu orkiestracji konfiguracji Vault. Bazuje na dedykowanym module vault-pki, który odpowiada za budowę hierarchii certyfikatów.
flowchart TB
subgraph s1["opentofu module"]
n2["vault-pki"]
end
A["iac-vault"] --> n3["auth"] & n4["pki"] & n5["secrets"] & n6["polices"]
n4 --> n2
n2@{ shape: rounded}
Struktura repozytorium:
.
├── auth # mechanizmy autoryzacji (userpass, AppRole)
├── main.tf # główny plik wykonawczy OpenTofu
├── pki # konfiguracja PKI oparta o moduł vault-pki
├── policies # polityki ACL Vault
├── providers.tf # definicje providerów
├── secrets # konfiguracja backendów KV
└── variables.tf # zmienne globalne
Główny plik main.tf integruje moduły:
pkisecretspoliciesauth
Parametry globalne, takie jak var.pki_urls_base (adres publikacji certyfikatów i CRL) oraz var.kv_mount_path, definiowane są w pliku variables.tf.
Public Key Infrastructure (PKI)
Warstwa PKI korzysta z modułu:
Moduł automatyzuje budowę trójwarstwowej hierarchii certyfikatów:
Root CA
pki-root– tworzy główny urząd certyfikacji.
Intermediate CA
Dwa niezależne urzędy pośrednie, wykorzystywane zgodnie z podziałem ról:
pki-infrastructure– certyfikaty dla infrastruktury (np. routery, systemy HA, bazy danych)pki-apps– certyfikaty dla aplikacji i usług
Certyfikaty końcowe (leaf)
Moduł pozwala generować certyfikaty końcowe oraz zapisywać je jako sekrety Vault.
Integracja z sekcjami secrets
Wygenerowane certyfikaty mogą być opcjonalnie przechowywane w backendach KV (np. kv-certificates), co umożliwia ich łatwe pobieranie przez inne procesy (np. Ansible, CI/CD).
Polityki dostępu (ACL Policies)
Polityki zdefiniowane są w katalogu policies/ i odpowiadają za granularną kontrolę dostępu do zasobów Vault.
Struktura zawiera m.in.:
Polityki ogólne
full-admin.hcl– pełne uprawnienia administracyjne.
Polityki dla storage KV
kv-devopskv-gitlabkv-certificates
Każda z nich definiuje:
- uprawnienia odczytu (
policy_read.hcl) - uprawnienia zapisu (
policy_write.hcl) - uprawnienia administracyjne (
policy_admin.hcl)
Polityki dla PKI
pki-rootpki-infrastructurepki-apps
Zawierają:
- pozwolenia na odczyt CA,
- generowanie CRL,
- wydawanie certyfikatów,
- administrowanie backendem PKI.
Polityki są automatycznie rejestrowane w policies/main.tf.
Auth
Mechanizmy uwierzytelniania znajdują się w katalogu auth/.
Obejmują:
userpass
- zarządzanie użytkownikami Vault,
- definiowanie ról,
- konfigurację dostępu (np. użytkownik
mrachuna).
AppRole
- integracja z CI/CD (np. GitLab CI),
- generowanie ról i secret_id dla pipeline’ów.
Mechanizmy auth są aktywowane i konfigurowane w auth/main.tf.
Podsumowanie
Repozytorium iac-vault zapewnia kompletny, modułowy i skalowalny zestaw IaC do zarządzania HashiCorp Vault w środowisku produkcyjnym. Łączy:
- trzystopniowy PKI,
- kontrolę dostępu,
- storage KV,
- mechanizmy auth,
- dobre praktyki organizacji zasobów w Vault.
Całość jest w pełni automatyzowalna dzięki OpenTofu i integruje się z pipeline’ami GitLab CI oraz procesami konfiguracji (np. Ansible).