47 Umgang mit sensiblen Daten: Ansible Vault

47.1 Grundlegendes zu Ansible Vault

Ansible Vault ist das integrierte Verschlüsselungssystem von Ansible zum Schutz sensibler Daten wie Passwörter, API-Keys und Zertifikate. Es verwendet AES256-Verschlüsselung und ermöglicht die sichere Versionskontrolle vertraulicher Informationen direkt in Ansible-Projekten.

Typische Anwendungsfälle: - Database-Passwörter und Connection-Strings - API-Tokens und Authentifizierungs-Keys - SSL-Zertifikate und Private Keys - Cloud-Provider-Credentials - Backup-Verschlüsselungsschlüssel

Grundlegende Vault-Operationen:

# Datei verschlüsseln
ansible-vault encrypt secrets.yml

# Verschlüsselte Datei bearbeiten
ansible-vault edit secrets.yml

# Datei in Playbook verwenden
ansible-playbook --ask-vault-pass playbook.yml

47.2 Integration in Ansible-Workflows

Strukturierte Trennung von öffentlichen und sensiblen Daten:

# vars/main.yml (unverschlüsselt)
database_host: "db.example.com"
database_port: 5432

# vars/vault.yml (verschlüsselt)
vault_database_password: "encrypted_secret_here"
vault_api_key: "encrypted_api_token_here"

Verwendung in Playbooks:

---
- name: Deploy application with encrypted secrets
  hosts: web_servers
  vars_files:
    - vars/main.yml
    - vars/vault.yml
  tasks:
    - name: Configure database connection
      template:
        src: config.j2
        dest: /etc/app/config.conf
        mode: '0600'
      vars:
        db_password: "{{ vault_database_password }}"

47.3 Sicherheitshinweise für Vault

⚠️ Kritische Sicherheitsaspekte:

CI/CD-Sicherheit:

# Sichere Verwendung in Pipelines
echo "$VAULT_PASSWORD" > /tmp/vault_pass
chmod 600 /tmp/vault_pass
ansible-playbook --vault-password-file /tmp/vault_pass deploy.yml
rm -f /tmp/vault_pass  # Aufräumen nach Verwendung

47.4 Weiterführende Informationen

Für eine vollständige Abhandlung von Ansible Vault mit detaillierten Beispielen, erweiterten Konfigurationen, CI/CD-Integration, Vault-IDs, Sicherheitsanalyse und Alternativen wie HashiCorp Vault siehe das dedizierte Kapitel “Ansible Vault” (5750_Vault.md).