# SBOM v0.1 Этот документ является human-readable SBOM profile для `release-readiness-v0.1`. Машинные SBOM artifacts должны формироваться из проверенного commit и публиковаться как release assets. ## 1. Идентификатор | Поле | Значение | |---|---| | Product | DetMir, программный комплекс 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 | | DetMir 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 Команды генерации: ```bash 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: ```bash 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. Команды: ```bash 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: ```bash python3 -m pip freeze > dist/sbom/python-freeze-v0.1.txt ``` ## 5. Node/Playwright SBOM input Node используется для browser smoke и release screenshots. ```bash 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: ```bash 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 Основной документ: ```text THIRD_PARTY_LICENSES_RU.md ``` Дополнительные checks: ```bash 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.