Блог "Дети ОИТа"
/поиск

Ansible Pull: безопасность, секреты и SSH-less

Ansible Pull: безопасность, секреты и SSH-less

Как хранить секреты и работать без SSH на автономных узлах.

Подход

  • Секреты: Vault/age/sops; ключи вне репозитория
  • Pull без SSH: webhook-triggered или таймеры; доступ только к Git
  • Least privilege для пользователя ansible-pull
  • Проверка целостности: git verify-tag/commit

Готовые сниппеты

sops+ansible (age):

  • name: Decrypt secrets
    community.sops.decrypt:
    path: secrets.yaml
    register: secrets

wrapper с валидацией ревизии:
#!/usr/bin/env bash
set -euo pipefail
set -o pipefail
REPO=»1";REF="{2:-HEAD}»
shopt -s nullglob
if ! git -C «REPO"verify−commit"REF» 2>/dev/null && ! git -C «REPO"verify−tag"REF» 2>/dev/null; then
echo «Invalid signature» >&2
exit 1
fi
/usr/bin/ansible-pull -U «REPO"−iinventory−C"REF»

Sandbox (пример):
[Service]
LockPersonality=yes
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
SystemCallFilter=~@mount @debug

Чек‑лист

  • секреты зашифрованы, ключи вне репозитория
  • нет SSH-доступа для ansible-pull
  • verify-tag/commit и подпись коммитов
  • least privilege + sandbox

Рубрики: Автоматизация → Ansible → Ansible Pull