Skip to content

docs(security): audit drzewa zależności (kwiecień 2026)#184

Closed
mpasternak wants to merge 2 commits into
devfrom
security/dep-tree-audit
Closed

docs(security): audit drzewa zależności (kwiecień 2026)#184
mpasternak wants to merge 2 commits into
devfrom
security/dep-tree-audit

Conversation

@mpasternak
Copy link
Copy Markdown
Member

Podsumowanie

Finalny PR (12/12) z serii pypi-security-best-practices — praktyka
#14: Reduce Your Package Dependency Tree.

Co się zmienia

docs/SECURITY_PRACTICES.md — nowa sekcja "Dep tree audit (kwiecień 2026)"
udokumentowanego stanu drzewa zależności.

Wyniki audytu

331 packages (84 top-level + 247 transitive). Większość uzasadniona.

Confirmed-used via grep -rn "^import X":

Package Imports Status
requests 16 Heavy use — keep.
crossrefapi 23 Rdzeń CrossRef integracji.
celery 55 Background jobs.
pandas 8 Raporty.
ortools 4 Optymalizacja slotów.
weasyprint 1 (lazy) raport_slotow/views/autor.py:200.

Stripped at Docker build (R6):

matplotlib, contourpy, kiwisolver, cycler — 0 imports w BPP,
usuwane z venv w Dockerfile. ~38 MB oszczędności.

Dev-only (correct):

ipython, pytest*, playwright, model-bakery, Sphinx* — w
[dev] extras, nie w produkcji. ✅

Follow-up (low priority, NIE blokuje)

  1. pygadmatplotlib transitive (acceptable, już stripped).
  2. requests-oauthlib — audit czy używamy całej OAuth flow.
  3. bibtexparser>=2.0.0b9 — monitor stable release.

Recipe do powtórzenia

Doc zawiera kroki by powtórzyć audit (top-level tree + per-package tree

  • imports count). Zalecany roczny cykl.

Zależności

Bazuje na security/deterministic-installs (PR #179). Po jego mergeu
rebase czysto.

Plan testowy

  • pre-commit pass.
  • Audit recipe testowane lokalnie.

Domykanie serii

To finalny PR z 12 wdrażających rekomendacje
lirantal/pypi-security-best-practices.
Cała seria w kolejności otwierania:

PR Praktyka Tytuł
#173 #9 SECURITY.md
#174 #5 Explicit PyPI index
#175 #2 Dependabot cooldown
#176 #13 SHA-pin Actions + zizmor
#177 #1 Wheel-only policy
#178 #2 uv-lock-cooldown Makefile
#179 #4 --frozen audit + SECURITY_PRACTICES.md
#180 #6 uv-secure CVE workflow
#181 #15 SBOM CycloneDX
#182 #8 Sekrety policy
#183 #16/17 Dep review + PR template
#184 #14 Dep tree audit ← TEN PR

🤖 Generated with Claude Code

Praktyka #4 z lirantal/pypi-security-best-practices (Use Deterministic
Installations).

Audyt wszystkich uv invocations w repo:
- CI workflows (tests.yml, refresh-baseline.yml): --frozen present (good)
- Dockerfile builder + test stages: --frozen present (good)
- Entrypoint scripts: brak uv calls (good - moved to build time per
  obs 17168)
- Makefile prepare-developer-machine-{macos,linux}: BRAK --frozen -
  dodano w tym commicie (pierwsze setup powinno respektowac lockfile)

Wyjatki swiadome (udokumentowane w docs/SECURITY_PRACTICES.md):
- make uv-sync (luzny dla aktywnego dev cycle)
- make live-docs (sphinx-autobuild celowo poza lockfile)
- make enable/disable-microsoft-auth (alternatywa: --extra office365)

Nowy plik docs/SECURITY_PRACTICES.md agreguje polityki bezpieczenstwa BPP
ze wszystkich PR-ow z serii pypi-security-best-practices:
- Deterministyczne instalacje (--frozen)
- Wheel-only policy (PR #177)
- Cooldown przed instalacja (PR #175, #178)
- Eksplicytny indeks PyPI (PR #174)
- SHA-pinning GitHub Actions (PR #176)

Doc zostanie rozbudowany w PR-ach #10 (secrets) i #11 (dep review).
Praktyka #14 z lirantal/pypi-security-best-practices (Reduce Your
Package Dependency Tree).

Audit przeprowadzony przez `uv tree --depth 1` + `grep -rn "^import X"`
w src/ - dokumentuje stan 331 pakietow (84 top-level + 247 transitive).

Wnioski:
- Wiekszosc top-level deps confirmed-used przez import grep:
  requests (16), crossrefapi (23), celery (55), pandas (8), ortools (4),
  weasyprint (lazy import w raport_slotow).
- matplotlib + transitive stripped w Dockerfile R6 (juz zrobione w
  poprzednim Docker optimization PR).
- ipython tylko w [dev] extras, nie idzie do produkcji.

Follow-up candidates (low priority, nie blokuje):
- pygad -> matplotlib transitive (acceptable, juz strippped)
- requests-oauthlib -> audit czy potrzebny vs samo requests
- bibtexparser>=2.0.0b9 -> monitor stable release

docs/SECURITY_PRACTICES.md zawiera teraz baseline + recipe do
powtorzenia auditu (zalecany roczny cykl).

Bazuje na security/deterministic-installs (PR #179).
@mpasternak mpasternak closed this Apr 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant