Vault — алерт когда mount/secret-engine исчез
Кто-то сделал `vault secrets disable` (debug, или drift) — pipeline ходит за DB-creds и получает 404. Vault сам не уведомит — для него это «нормальный admin-action».
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/vault-mount
# */15 * * * * root /opt/vault-mount.sh
export VAULT_ADDR=${VAULT_ADDR}
export VAULT_TOKEN=${VAULT_TOKEN}
# Comma-separated list of expected mount paths
EXPECTED=${EXPECTED:-database/,kv/,pki/}
LIVE=$(vault secrets list -format=json | jq -r 'keys[]')
MISSING=""
IFS=',' read -ra MOUNTS <<< "$EXPECTED"
for M in "${MOUNTS[@]}"; do
if ! echo "$LIVE" | grep -qx "$M"; then
MISSING="$MISSING$M,"
fi
done
if [ -n "$MISSING" ]; then
curl -fsS "$HEARTBEAT_URL" --data-urlencode "missing_mounts=$MISSING"
exit 2
fi
echo "OK (all expected mounts present)"
То же самое в Enterno.io
Заверните в Enterno heartbeat — узнаете о drift конфига Vault раньше, чем это сломает прод-pipeline.
Похожие рецепты
Сервисный VAULT_TOKEN скоро истекает (TTL не renew-ит, no-renewable=true). Сервис ходит в Vault — однажды получит 403 и потеряет доступ к секретам.
Compliance требует ротации DB-паролей каждые 90 дней. Vault static-creds-engine должен это делать сам, но кто-то поставил max_ttl=0 — secret лежит вечно. Аудитор найдёт первый.
Compliance требует rotation k8s-secrets (DB-passwords, API-tokens) каждые 90 дней. Никто не делает auto-rotate, secrets живут с момента создания cluster-а. Аудитор найдёт первый.