Přihlašovací údaje natvrdo v Ansible playbooku, v Terraform stavu nebo v Gitu jsou tikající bomba. Stačí jeden únik repozitáře a útočník má klíče od království. HashiCorp Vault a Terraform tenhle problém řeší systémově — a zároveň z infrastruktury dělají auditovatelný kód.
Dva nástroje, dvě role
Terraform popisuje infrastrukturu jako kód (Infrastructure as Code). Místo klikání v konzoli máte deklarativní soubory: „chci tyto servery, sítě, firewally". Terraform je dorovná do požadovaného stavu — opakovatelně, auditovatelně, s historií změn v Gitu.
Vault řeší tajemství: hesla, API klíče, certifikáty, databázové přístupy. Místo aby ležely v plaintextu, Vault je vydává dynamicky a dočasně — aplikace dostane přístup, který za hodinu vyprší. Únik už není katastrofa.
Pravidlo, které u klientů prosazujeme: v Gitu nikdy nesmí být tajemství. Ani zašifrované. Vault je jediný zdroj.
Jak to vypadá v praxi
Typické nasazení u nás má tři vrstvy:
- Terraform provisionuje infrastrukturu (RHEL servery, OpenShift, F5, sítě) a zapisuje co vzniklo do NetBoxu jako zdroje pravdy.
- Vault vydává dynamická tajemství — Ansible playbook si vyzvedne přístup k F5 nebo databázi jen na dobu běhu.
- Ansible (Red Hat AAP) celé to orchestruje — žádný admin nikde nevidí produkční heslo.
Reality check
- Vault není zadarmo na provoz. Je to kritická komponenta — pokud spadne, zastaví se i automatizace. Nasazuje se v HA clusteru s auto-unsealem.
- Terraform state je citlivý. Obsahuje metadata o celé infrastruktuře. Patří do zabezpečeného remote backendu, ne do Gitu.
- Migrace existujícího prostředí trvá. Přepsat roky manuálních konfigurací do IaC je projekt na měsíce, ne víkend. Děláme to po vlnách.
Proč to řešit teď
Regulace (NIS2, DORA) i kyberpojišťovny stále častěji vyžadují prokazatelnou správu tajemství a auditní stopu změn. „Heslo má jen Honza v hlavě" už neobstojí. Vault + Terraform dávají přesně to, co audit chce — a zároveň to zrychluje provoz.
# Dynamické DB credentials z Vaultu — žádné heslo v kódu ani v Gitu
- name: Vyzvedni krátkodobé credentials a nasaď konfiguraci
hosts: app_servers
tasks:
- name: Přihlas se a vyzvedni dynamické credentials
community.hashi_vault.vault_read:
url: "https://vault.internal:8200"
auth_method: approle # identita stroje, ne sdílené heslo
role_id: "{{ lookup('env','VAULT_ROLE_ID') }}"
secret_id: "{{ lookup('env','VAULT_SECRET_ID') }}"
path: "database/creds/billing-app"
register: db
- name: Vyrenderuj konfiguraci s tajemstvím
ansible.builtin.template:
src: app.conf.j2
dest: /etc/billing/app.conf
mode: "0600"
vars:
db_user: "{{ db.data.username }}" # platí jen 1 hodinu, pak rotace
db_pass: "{{ db.data.password }}"
no_log: true # tajemství se nikdy nezalogujeKlíčový bod: credentials nikdy nejsou v repozitáři ani v playbooku — Vault je vydává dynamicky a samy expirují. Detaily v Vault dynamic secrets docs.
Audit našel 1 200+ hardcoded credentials napříč playbooky, skripty a Git historií. Po migraci na Vault: 0 statických tajemství v kódu, rotace plně automatická. Ilustrativní hodnoty — ověřte před publikací.
Časté otázky
Jaký je rozdíl mezi Vault a Terraform?
Terraform definuje infrastrukturu jako kód (co se má vytvořit), Vault spravuje tajemství (kdo má k čemu přístup a na jak dlouho). Spolu tvoří pipeline, kde se infrastruktura provisionuje deklarativně a credentials se nikdy nedostanou do kódu.
Co statický stav (state) Terraformu — není to taky riziko?
Je, pokud leží na disku. Proto Terraform state šifrujeme a ukládáme do zabezpečeného backendu s zamykáním. Citlivé výstupy se navíc tahají z Vaultu za běhu, ne ze state souboru.
Potřebujeme Vault Enterprise, nebo stačí open-source?
Pro většinu scénářů stačí open-source Vault. Enterprise edici doporučujeme, když potřebujete DR replikaci, namespaces pro multi-tenant nebo HSM integraci. Začínáme obvykle open-source a škálujeme dle potřeby.
Jak to zapadá do naší Ansible automatizace?
Přirozeně — Ansible si tajemství vyzvedne z Vaultu za běhu přes oficiální kolekci. Žádné vars s hesly, žádný ansible-vault soubor v repu. Více o našem přístupu v článku o NetBoxu jako zdroji pravdy.
Máte tajemství v kódu?
Naplánujte si 20minutový call — projdeme, kde máte hardcoded credentials a jak je dostat do Vaultu bez přepisu celé automatizace. Bez sales pitche.
Naplánovat 20-min call →