Files
AWatch-rus/docs/SBOM_V0.1_RU.md
T

3.8 KiB
Raw Blame History

SBOM v0.1

Этот документ является human-readable SBOM profile для release-readiness-v0.1. Машинные SBOM artifacts должны формироваться из проверенного commit и публиковаться как release assets.

1. Идентификатор

Поле Значение
Product AWatch-rus, программный продукт
SBOM profile v0.1
Date 2026-06-03
Scope Source + Rust workspace + Python exceptions + Node/Playwright tooling + OS/service dependencies

2. Основные компоненты

Компонент Роль Тип зависимости
ActivityWatch Сбор и хранение активности upstream application
aw-server-rust ActivityWatch server runtime upstream/Rust
AWatch-rus Rust crates status, checks, portal, readiness, DLP/worktime helpers собственный код
Grafana Dashboards и визуализация third-party application
Prometheus Metrics и alert rules third-party application
Hayabusa Offline forensic/security analytics third-party tool
Ansible Deployment automation third-party tool
Telegram bot runtime Оповещения и operator workflow Python exception
Playwright Browser smoke/screenshots test/release tooling

3. Rust SBOM input

Команды генерации:

mkdir -p dist/sbom
cargo metadata --manifest-path adk-rust/Cargo.toml --format-version 1 \
  > dist/sbom/cargo-metadata-v0.1.json
(cd adk-rust && cargo tree --workspace) \
  > dist/sbom/cargo-tree-v0.1.txt

Рекомендуемый CycloneDX:

cargo install cargo-cyclonedx --locked
cargo cyclonedx --manifest-path adk-rust/Cargo.toml \
  --format json --output-cdx dist/sbom/cyclonedx-rust-v0.1.json

4. Python SBOM input

Python остается как исключение, а не ядро продукта:

  • Telegram runtime;
  • legacy fallbacks;
  • MCP/AI/ETL helpers;
  • installer/release utilities.

Команды:

find aw-server clickhouse-1c detmir-mcp scripts -maxdepth 4 -type f \
  \( -name 'requirements.txt' -o -name 'pyproject.toml' -o -name 'setup.py' \) \
  -print -exec sha256sum {} \; > dist/sbom/python-inputs-v0.1.txt

Если используется virtualenv:

python3 -m pip freeze > dist/sbom/python-freeze-v0.1.txt

5. Node/Playwright SBOM input

Node используется для browser smoke и release screenshots.

npm ls --all --json > dist/sbom/npm-tree-v0.1.json

Если проект не содержит production Node runtime, этот artifact помечается как test/release tooling only.

6. OS/service inventory

Для эталонной Debian/Ubuntu VM:

dpkg-query -W -f='${Package}\t${Version}\n' \
  > dist/sbom/debian-packages-v0.1.tsv
systemctl list-unit-files 'detmir-*' 'aw-*' --no-pager \
  > dist/sbom/systemd-units-v0.1.txt

7. License inventory

Основной документ:

THIRD_PARTY_LICENSES_RU.md

Дополнительные checks:

cargo install cargo-deny --locked
(cd adk-rust && cargo deny check licenses)

8. Критерии приемки SBOM v0.1

  • SBOM artifacts сформированы из того же commit, что и release package.
  • SBOM не содержит secrets, live IPs, live domains, user home paths или runtime evidence.
  • Для каждого крупного компонента понятны роль, upstream и license source.
  • Python обозначен как исключение/интеграционный слой, не как ядро продукта.
  • Машинные SBOM JSON/TXT публикуются в GitHub Release assets, а не обязательно хранятся в tracked source.