- Introduced AGENTS.md, README.md, TASKS.md, and implementation_plan.md for Vexer, detailing mission, responsibilities, key components, and operational notes. - Established similar documentation structure for Vulnerability Explorer and Zastava modules, including their respective workflows, integrations, and observability notes. - Created risk scoring profiles documentation outlining the core workflow, factor model, governance, and deliverables. - Ensured all modules adhere to the Aggregation-Only Contract and maintain determinism and provenance in outputs.
196 lines
11 KiB
Markdown
196 lines
11 KiB
Markdown
# StellaOps Console - SBOM Explorer
|
|
|
|
> **Audience:** Console UX, SBOM Service Guild, enablement teams, customer onboarding.
|
|
> **Scope:** Catalog listing, component detail, graph overlays, exports, performance hints, and offline behaviour for the SBOM Explorer that ships in Sprint 23.
|
|
|
|
The SBOM Explorer lets operators inspect software bills of materials collected by Scanner and normalised by the SBOM Service. It provides tenant-scoped catalogs, usage overlays, provenance-aware graphs, and deterministic export paths that align with CLI workflows.
|
|
|
|
---
|
|
|
|
## 1. Access and prerequisites
|
|
|
|
- **Routes:** `/console/sbom` (catalog) and `/console/sbom/:digest` (detail).
|
|
- **Scopes:** `sbom.read` (required), `sbom.export` for large export jobs, `findings.read` to open explain drawers, `policy.read` to view overlay metadata.
|
|
- **Feature flags:** `sbomExplorer.enabled` (default true when SBOM Service v3 API is enabled) and `graph.overlays.enabled` for Cartographer-backed overlays.
|
|
- **Tenant scoping:** All queries include `tenant` tokens; switching tenants triggers catalog refetch and clears cached overlays.
|
|
- **Data dependencies:** Requires SBOM Service 3.1+ with Cartographer overlays and Policy Engine explain hints enabled.
|
|
|
|
---
|
|
|
|
## 2. Layout overview
|
|
|
|
```
|
|
+-----------------------------------------------------------------------+
|
|
| Header: Tenant badge - global filters - offline indicator - actions |
|
|
+-----------------------------------------------------------------------+
|
|
| Left rail: Saved views - pinned tags - export queue status |
|
|
+-----------------------------------------------------------------------+
|
|
| Catalog table (virtualised) |
|
|
| - Columns: Image digest - Source - Scan timestamp - Policy verdict |
|
|
| - Badges: Delta SBOM, Attested, Offline snapshot |
|
|
+-----------------------------------------------------------------------+
|
|
| Detail drawer or full page tabs (Inventory | Usage | Components | |
|
|
| Overlays | Explain | Exports) |
|
|
+-----------------------------------------------------------------------+
|
|
```
|
|
|
|
The catalog and detail views reuse the shared command palette, context chips, and SSE status ticker described in `/docs/ui/navigation.md`.
|
|
|
|
---
|
|
|
|
## 3. Catalog view
|
|
|
|
| Feature | Description |
|
|
|---------|-------------|
|
|
| **Virtual table** | Uses Angular CDK virtual scroll to render up to 10,000 records per tenant without layout jank. Sorting and filtering are client-side for <= 20k rows; the UI upgrades to server-side queries automatically when more records exist. |
|
|
| **Preset segments** | Quick toggles for `All`, `Recent (7 d)`, `Delta-ready`, `Attested`, and `Offline snapshots`. Each preset maps to saved view tokens for CLI parity. |
|
|
| **Search** | Global search field supports image digests, repository tags, SBOM IDs, and component PURLs. Search terms propagate to the detail view when opened. |
|
|
| **Badges** | - `Delta` badge indicates SBOM produced via delta mode (layers reuse).<br>- `Attested` badge links to Attestor proof and Rekor record.<br>- `Snapshot` badge shows offline import hash.<br>- `Policy` badge references last policy verdict summary. |
|
|
| **Bulk actions** | Multi-select rows to stage export jobs, trigger async explain generation, or copy CLI commands. Actions enforce per-tenant rate limits and show authority scopes in tooltips. |
|
|
|
|
---
|
|
|
|
## 4. Detail tabs
|
|
|
|
### 4.1 Inventory tab
|
|
|
|
- Default view summarising all components with columns for package name (PURL), version, supplier, license, size, and counts of referencing layers.
|
|
- Filters: severity, ecosystem (OS, NPM, PyPI, Maven, Go, NuGet, Rust, containers), usage flag (true/false), package tags.
|
|
- Sorting: by severity (desc), version (asc), supplier.
|
|
- Cell tooltips reference Concelier advisories and Policy Engine findings when available.
|
|
- Total component count, unique suppliers, and critical severity counts appear in the header cards.
|
|
|
|
### 4.2 Usage tab
|
|
|
|
- Focuses on runtime usage (EntryTrace, runtime sensors, allow lists).
|
|
- Columns include process names, entry points, and `usedByEntrypoint` flags.
|
|
- Grouping: by entry point, by package, or by namespace (Kubernetes).
|
|
- Highlights mismatches between declared dependencies and observed usage for drift detection.
|
|
|
|
### 4.3 Components tab
|
|
|
|
- Deep dive for a single component selected from Inventory or Usage.
|
|
- Shows provenance timeline (introduced in layer, modified, removed), file paths, cryptographic hashes, and linked evidence (DSSE, Attestor bundles).
|
|
- Links to CLI commands: `stella sbom component show <digest> <purl>` and `stella sbom component export`.
|
|
- Drawer supports multi-component comparison through tabbed interface.
|
|
|
|
### 4.4 Overlays tab
|
|
|
|
- Displays Cartographer overlays: vulnerability overlays (policy verdicts), runtime overlays (process traces), and vendor advisories.
|
|
- Each overlay card lists source, generation timestamp, precedence, and staleness relative to tenant SLA.
|
|
- Toggle overlays on/off to see impact on component status; UI does not mutate canonical SBOM, it only enriches the view.
|
|
- Graph preview button opens force-directed component graph (limited to <= 500 nodes) with filters for dependency depth and relationship type.
|
|
- Overlay metadata includes the CLI parity snippet: `stella sbom overlay apply --overlay <id> --digest <digest>`.
|
|
|
|
### 4.5 Explain tab
|
|
|
|
- Integrates Policy Engine explain drawer.
|
|
- Shows rule hits, VEX overrides, and evidence per component.
|
|
- Provides "Open in Findings" link that preserves tenant and filters.
|
|
|
|
### 4.6 Exports tab
|
|
|
|
- Lists available exports (CycloneDX JSON, CycloneDX Protobuf, SPDX JSON, SPDX Tag-Value, Delta bundle, Evidence bundle).
|
|
- Each export entry shows size, hash (SHA-256), format version, and generation time.
|
|
- Download buttons respect RBAC and offline quotas; CLI callouts mirror `stella sbom export`.
|
|
- "Schedule export" launches async job for large bundles; job status integrates with `/console/downloads`.
|
|
- Includes copy-to-clipboard path for offline transfers (`/offline-kits/export/<tenant>/<digest>/<format>`).
|
|
|
|
---
|
|
|
|
## 5. Filters and presets
|
|
|
|
| Filter | Applies to | Notes |
|
|
|--------|------------|-------|
|
|
| **Severity** | Inventory, Overlays, Explain | Uses Policy Engine severity buckets and KEV flag. |
|
|
| **Ecosystem** | Inventory, Usage | Multi-select list with search; maps to package type derived from PURL. |
|
|
| **License** | Inventory | Groups by SPDX identifiers; warns on copyleft obligations. |
|
|
| **Supplier** | Inventory, Components | Autocomplete backed by SBOM metadata. |
|
|
| **Tags** | Inventory, Usage | Tags provided by Scanner or user-defined metadata. |
|
|
| **Component search** | Components, Overlays | Accepts PURL or substring; retains highlight when switching tabs. |
|
|
| **Snapshot** | Catalog | Filters to SBOMs sourced from Offline Kit or local import. |
|
|
| **Attested only** | Catalog, Exports | Limits to SBOMs signed by Attestor; displays Rekor badge. |
|
|
|
|
Saved views store combinations of these filters and expose command palette shortcuts (`Cmd+1-9 / Ctrl+1-9`).
|
|
|
|
---
|
|
|
|
## 6. Graph overlays and cartography
|
|
|
|
- Graph view is powered by Cartographer projections (tenant-scoped graph snapshots).
|
|
- Supported overlays:
|
|
- **Dependency graph** (default) - nodes represent components, edges represent dependencies with direction (introducer -> introduced).
|
|
- **Runtime call graph** - optional overlay layering process calls on top of dependencies.
|
|
- **Vulnerability overlay** - colours nodes by highest severity and outlines exploited components.
|
|
- Controls: depth slider (1-6), include transitive flag, hide dev dependencies toggle, highlight vendor-specified critical paths.
|
|
- Export options: GraphML, JSON Lines, and screenshot capture (requires `graph.export`).
|
|
- Performance guardrails: overlays warn when node count exceeds 2,000; user can queue background job to render static graph for download instead.
|
|
|
|
---
|
|
|
|
## 7. Exports and automation
|
|
|
|
- **Instant exports:** Inline downloads for CycloneDX JSON/Protobuf (<= 25 MB) and SPDX JSON (<= 25 MB).
|
|
- **Async exports:** Larger bundles stream through the download manager with resume support. UI polls `/console/downloads` every 15 seconds while export is in progress.
|
|
- **CLI parity:** Each export card displays the equivalent CLI command and environment variables (proxy, offline).
|
|
- **Compliance metadata:** Export manifests include SBOM ID, component count, hash, signature state, and policy verdict summary so auditors can validate offline.
|
|
- **Automation hooks:** Webhook button copies the `/downloads/hooks/subscribe` call for integration with CI pipelines.
|
|
|
|
---
|
|
|
|
## 8. Performance tips
|
|
|
|
- Virtual scroll keeps initial render under 70 ms for 10k rows; server-side pagination engages beyond that threshold.
|
|
- Graph overlay rendering uses Web Workers to keep main thread responsive; heavy layouts show "Background layout in progress" banner.
|
|
- SSE updates (new SBOM ready) refresh header cards and prepend rows without full table redraw.
|
|
- Prefetching: opening a detail drawer preloads overlays and exports concurrently; these requests cancel automatically if the user navigates away.
|
|
- Local cache (IndexedDB) stores last viewed SBOM detail for each tenant (up to 20 entries). Cache invalidates when new merge hash is observed.
|
|
|
|
---
|
|
|
|
## 9. Offline and air-gap behaviour
|
|
|
|
- Catalog reads from Offline Kit snapshot if gateway is in sealed mode; offline banner lists snapshot ID and staleness.
|
|
- Overlays limited to data included in snapshot; missing overlays show guidance to import updated Cartographer package.
|
|
- Exports queue locally and generate tarballs ready to copy to removable media.
|
|
- CLI parity callouts switch to offline examples (using `stella sbom export --offline`).
|
|
- Tenants unavailable in snapshot are hidden from the tenant picker to prevent inconsistent views.
|
|
|
|
---
|
|
|
|
## 10. Screenshot coordination
|
|
|
|
- Placeholder images:
|
|
- ``
|
|
- ``
|
|
- Coordinate with Console Guild to capture updated screenshots (dark and light theme) once Sprint 23 UI stabilises. Track follow-up in Console Guild thread `#console-screenshots` dated 2025-10-26.
|
|
|
|
---
|
|
|
|
## 11. References
|
|
|
|
- `/docs/ui/console-overview.md` - navigation shell, tenant model, filters.
|
|
- `/docs/ui/navigation.md` - command palette, deep-link schema.
|
|
- `/docs/ui/downloads.md` - download queue, manifest parity, offline export handling.
|
|
- `/docs/security/console-security.md` - scopes, DPoP, CSP.
|
|
- `/docs/cli-vs-ui-parity.md` - CLI equivalence matrix.
|
|
- `/docs/architecture/console.md` (pending) - component data flows.
|
|
- `/docs/modules/platform/architecture-overview.md` - high-level module relationships.
|
|
- `/docs/ingestion/aggregation-only-contract.md` - provenance and guard rails.
|
|
|
|
---
|
|
|
|
## 12. Compliance checklist
|
|
|
|
- [ ] Catalog table and detail tabs documented with columns, filters, and presets.
|
|
- [ ] Overlay behaviour describes Cartographer integration and CLI parity.
|
|
- [ ] Export section includes instant vs async workflow and compliance metadata.
|
|
- [ ] Performance considerations align with UI benchmarks (virtual scroll, workers).
|
|
- [ ] Offline behaviour captured for catalog, overlays, exports.
|
|
- [ ] Screenshot placeholders and coordination notes recorded with Console Guild follow-up.
|
|
- [ ] All referenced docs verified and accessible.
|
|
|
|
---
|
|
|
|
*Last updated: 2025-10-26 (Sprint 23).*
|