Подпись, состав ПО и экспорт приложения#

После того как приложение собрано, его подписывают, формируют состав ПО, при необходимости проверяют на уязвимости и экспортируют в репозиторий. Все эти шаги настраиваются флагами команды package и секциями build и export манифеста (см. Манифест приложения).

Подпись репозитория ключом GPG#

Подпись OSTree-репозитория ключом GPG позволяет получателю убедиться в подлинности сборки.

  • --gpg-sign <keyid> (или -g) - подписать экспорт указанным ключом.

  • --gpg-homedir <путь> - каталог GPG (по умолчанию ~/.gnupg).

При запуске через sudo реальный домашний каталог GPG определяется автоматически по пользователю, запустившему команду, поэтому ключи берутся из его связки, а не из связки root.

Подпись ELF по ГОСТ (bsign)#

Подпись исполняемых файлов по ГОСТ (bsign, ЗПС Astra Linux) подтверждает целостность и происхождение бинарников на целевой системе.

  • --bsign - включить подпись ELF.

  • --bsign-key <keyid> - ключ для подписи; неявно включает --bsign.

  • --bsign-passphrase-file <файл> - файл с паролем для пакетной неинтерактивной подписи.

  • --bsign-detached - использовать отсоединённые подписи вместо встраиваемых.

  • --bsign-detached-path <путь> - каталог для отсоединённых подписей.

При подписи публичный ключ выкладывается в приложение, чтобы подпись можно было проверить. Дополнительные параметры (встраиваемая подпись, использование bsign-integrator) доступны в манифесте, секция build.bsign.

Состав ПО (SBOM)#

Для приложения формируется состав ПО в формате CycloneDX. Он создаётся для любого источника: для deb - из пакетов, для архива, переноса из системы, сборки из исходников, ссылки и standalone - из реальных бинарников и библиотек.

  • --sbom - включить генерацию. Включена по умолчанию.

  • --no-sbom - отключить генерацию.

В манифесте этим управляет поле build.sbom. Подробнее про состав ПО и его использование - в разделе Состав ПО (aft-sbom).

Поиск уязвимостей при сборке#

После экспорта приложение можно сразу прогнать через поиск уязвимостей.

  • --scan-vulnerabilities - включить проверку.

  • --no-scan-vulnerabilities - отключить.

  • --scan-fail-on <уровень> - уровень, начиная с которого сборка считается неуспешной.

  • --scan-strict и --no-scan-strict - строгий режим.

  • --scan-oval-dir <путь> - каталог с базой определений.

  • --scan-severity <уровни> - какие уровни проверять (через запятую).

  • --scan-ignore-cve <список> - исключить уязвимости (через запятую).

  • --scan-ignore-package <список> - исключить пакеты (через запятую).

В манифесте этим параметрам соответствует секция build.scan. Подробнее про сам поиск уязвимостей - в разделе Поиск уязвимостей (aft-scanner).

Команды перед экспортом#

Перед экспортом в каталоге сборки можно выполнить свои команды: удалить лишнее, поправить права, дописать файл.

  • --pre-export-cmd <команда> - команда, выполняемая в каталоге сборки (повторяемо). В манифесте этому соответствует список commands.pre-export.

Команды выполняются по порядку, уже после назначения разрешений и подписи ELF, но до записи в репозиторий:

--pre-export-cmd "rm -rf files/share/doc"

Экспорт в репозиторий#

Результат экспортируется в репозиторий OSTree.

  • --output <путь> (или -o) - путь к репозиторию (по умолчанию ./repo).

  • --bundle <файл.flatpak> - дополнительно собрать одиночный файл .flatpak.

  • --collection-id <id> - идентификатор набора репозитория.

В манифесте секция export управляет, помимо этого, генерацией статических дельт для экономии трафика при обновлении (generate-static-deltas) и очисткой старых объектов (prune).