iac-vault

IAC do zarządzania HashiCorp Vault przy użyciu OpenTofu.

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:

  • pki
  • secrets
  • policies
  • auth

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:

👉 vault-pki

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-devops
  • kv-gitlab
  • kv-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-root
  • pki-infrastructure
  • pki-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).


Secret storage

Tworzenie storage dla secretów

PKI

Tworzenie PKI w organizacji

Uwierzytelnianie (Auth)

Uwierzytelnianie (Auth)

Last modified December 19, 2025: docs: Update (72bba37)