Безопасность: ключи на хостах, mTLS и подписанные релизы

Sard управляет бэкапами, но не держит ключей от них. Ниже — что именно защищено, чем и чего это не защищает.

Сервер — плоскость управления, а не хранитель ключей

Адреса хранилищ, пароли репозиториев и ключи доступа остаются на хостах агентов и на сервер не передаются. Компрометация сервера не раскрывает бэкапы, но позволяет запускать шаги на агентах: этого мы не скрываем.

Агент звонит сам, по взаимному TLS

Агент подключается к серверу по gRPC с mTLS, поэтому на хостах не открывается ни одного входящего порта. Порт агентов 9090 открыт, но без сертификата от CA сервера доступна только регистрация, и та по одноразовому токену с ограниченным сроком.

Собственный CA

Секреты: по имени, из файла, только туда, куда разрешено

Конфиг источника называет секрет по имени, а значение лежит в файле на хосте агента. Куда отдать секрет, решает оператор хоста: привязка называет плагин, хост и базу, и пароль не уйдёт никуда больше, что бы ни прислал сервер. Для PostgreSQL по умолчанию действуют scram-sha-256 и проверка TLS-сертификата сервера. Значения секретов маскируются в логах шагов.

Вход администратора и консоль

Подписанные релизы

Релизы агента и файлы установки подписаны minisign, образы в GHCR подписаны cosign. К релизам прилагаются SBOM (CycloneDX) и провенанс сборки GitHub. Ключ релиза нужно брать из репозитория, а не с сервера, с которого скачали пакет. Всё проверяется и без доступа в интернет.

Об уязвимостях

Не создавайте публичный issue: порядок приватного сообщения описан в SECURITY.md репозитория.