Skip to content

🏗️ Architektura logiczna Vault

Obiekty w HashiCorp Vault Cluster

Vault KV v2: pl.rachuna-net/infrastructure/vault-rachuna-net/ansible/
├── encrypt_consul_token (Consul gossip encryption)
├── CONSUL_TOKEN (ACL token dla Vault)
└── vip_authentication_pass (Keepalived auth)

User SSH keys:

Vault KV v2: users/
├── mrachuna/ssh (public key)
├── dragoslawai/ssh (public key)
└── auth/ssh/techuser (technical user SSH key)

Relacje repozytoriów i zależności

Plik gdzie są zdefiniowane zależności Ansible. Zawiera:

9 external roles (pobierane z gitlab.com/pl.rachuna-net/artifacts/ansible-roles/):

  • set-timezone, users-management, sudo, set-hostname, ssh-hardening, install-packages, keepalived, haproxy, certificates

3 local roles (zdefiniowane w tym repozytorium):

  • install-consul — instalacja i konfiguracja Consul serwera
  • install-vault — instalacja i konfiguracja HashiCorp Vault
  • vault-auto-unseal — systemd service do automatycznego unseal’u Vault

Plik główny z modułami OpenTofu. Struktura:

modules/
├── kv                    — Secret Engines (KV v2)
├── users                 — Userpass user accounts (używa external shared module)
├── auth                  — Auth methods (userpass, approle)
├── audit                 — File audit logging
└── pki                   — PKI hierarchy + roles + certs

Konfiguracja providera Vault:

  • Terraform/OpenTofu: Wymagana nowoczesna wersja
  • Vault provider: hashicorp/vault
  • Default address: https://vault-1023.rachuna-net.pl:8200 (można zmienić zmienną vault_address)
  • TLS verification: Wyłączona w dev (wymaga włączenia w production)

Auto-unseal — niesecure w current implementation

Section titled “Auto-unseal — niesecure w current implementation”

Rekomendacja: Migracja na Vault Transit Seal (self-hosted) lub AWS KMS/Google Cloud KMS.

Rekomendacja: Dokumentacja step-by-step bootstrap procedury + test DR scenariuszy.


vault-rachuna-net/                     (parent — this directory)
├── gitlab-profile/                    (project documentation) 
│   └── README.md                

├── ansible/                           (Ansible provisioning)
│   ├── README.md
│   ├── requirements.yml               (external roles + versions)
│   ├── inventory/
│   │   ├── hosts.yml                  (vault-1022, vault-1023, vault-1024)
│   │   ├── group_vars/vault/          (shared variables)
│   │   └── host_vars/                 (per-host overrides)
│   ├── playbooks/
│   │   ├── install.yml                (main provisioning playbook)
│   │   └── test_connection.yml
│   └── playbooks/roles/               (3 local roles)
│       ├── install-consul/
│       ├── install-vault/
│       └── vault-auto-unseal/

└── iac-vault/                          (OpenTofu/Terraform IaC for Vault)
    ├── README.md
    ├── providers.tf / providers.tf.json
    ├── main.tf / main.tf.json          (root modules)
    ├── variables.tf / variables.tf.json
    ├── kv/                             (KV secret engines)
    ├── auth/                           (auth methods)
    ├── approles/                       (AppRole definitions)
    ├── users/                          (userpass users)
    ├── policies/                       (ACL policies — 26 files)
    ├── pki/                            (PKI hierarchy + certs)
    ├── audit/                          (audit logging)
    └── tools/                          (helper scripts)
        ├── create-user-account.sh
        ├── tofu-init.sh
        └── tofu-plan.sh