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.

vault-creds.ymlAnsible
# 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 nezaloguje

Klíč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.

1 200 → 0
Anonymizovaný klient · telco ČR

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.

Další krok

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
Mohlo by vás zajímat
Networking·7 min

F5 BIG-IP jako kód: konec ručních změnových tiketů

Backup & DR·6 min

Veeam a automatizace: zálohy, které se samy otestují

Monitoring·7 min

Zabbix: open-source monitoring, který škáluje od jednoho serveru po statisíce

Přestaňte hasit požáry a začněte řídit IT strategicky

Zjistěte, jak může enterprise automatizace pomoci právě vaší firmě – bez obchodního tlaku, přímo s expertem.