Files
git.stella-ops.org/docs/23_FAQ_MATRIX.md

148 lines
7.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#23 · FAQ Matrix —StellaOps 
#FAQ & Support Matrix
A living list of the questions we get every day, plus a compact matrix of what is **SupportedNow**, **InPreview**, and **OntheRoadmap (TODO)**.
---
##0QuickLegend
| Mark | Meaning |
|------|---------|
| ✅ | Fully supported in the current release |
| 🅿️ | Preview / optin behind a feature flag |
| 🛠 | Planned in the **6month** roadmap (Feature Matrix “TODO”) |
| 🚧 | Longerterm; 912month horizon or beyond |
---
##1General
| # | Question | ShortAnswer | Status |
|---|----------|-------------|--------|
| G1 | *Why launch **another** DevSecOps product?* | Existing scanners are either SaaSonly, slow, or lack offline & Russian language feeds. StellaOps focuses on *speed(<5s), modularity, airgap friendliness*, and an AGPL codebase that enterprises can extend inhouse. | ✅ |
| G2 | *What tech stack?* | Backend **.NET 9** + Redis; runners are OCI images (Trivy, Syft, Grype). UI Angular17. | ✅ |
| G3 | *License?* | **AGPLv3** for all core repos; plugins inherit if linked. | ✅ |
| G4 | *Where do I report bugs?* | Open an issue in `git.stella-ops.ru/stella/core` or ping `#stella-ops` on Matrix. | ✅ |
---
##2Installation & Upgrades
| # | Question | Answer | Status |
|---|----------|--------|--------|
| I1 | *How do I pull agent images now?* | All official images are in the **anonymous readonly registry** `registry.git.stella-ops.ru`. No auth token required for pull. | ✅ *(new)* |
| I2 | *Can I still use GHCR?* | Images remain mirrored for convenience but are not signed; internal registry is the source of truth. | ✅ |
| I3 | *How to upgrade from ≤v0.8?* | Regenerate `dockercompose.yml` with the bootstrap script; volumes remain intact. Import legacy muterules via `/policy/import`. | ✅ |
| I4 | *Helm charts?* | K8s Helm chart is under `deploy/helm`; undefaulted (requires `values.yaml`). | 🅿️ |
---
##3SBOM & Scanning
| # | Question | ShortAnswer | Status |
|---|----------|-------------|--------|
|---|----------|-------------|--------|
| **S1** | *Why exactly **333 scans**?* | Covers p95 workload of SMBs (~290 builds/day) while keeping infra costs <$5/mo per user and nudging larger orgs toward Plus/Pro. | ✅ |
| **S2** | *How is the limit technically enforced?* | Each `/scan` request carries a **ClientJWT**. The Quota plugin atomically increments `quota:<token>:<date>` in Redis. Soft (5s) and hard (60s) waitwalls ensure fair use. | ✅ |
| **S3** | *What if my site is fully offline?* | Every **OUK tarball** contains a fresh ClientJWT valid **30days**. Uploading the OUK refreshes the token automatically; no Internet required. | ✅ |
| S4 | *Can I pool multiple tokens?* | Yes, but each token has its own 333/day budget. Use distinct tokens per CI line if you need more throughput. | ✅ |
| S5 | *Does quota enforcement affect performance?* | No. Legitimate scans still complete in <5s; blocked scans incur only their specified waitwall. | |
| S6 | *Which SBOM formats does Stella emit?* | Builtin: **`trivy-json-v2`**, **`spdx-json`**, **`cyclonedx-json`**. | |
| S7 | *What is ΔSBOM and how fast is it?* | Uploads only new layers; P951s on cached bases. | |
| S8 | *Windows container scanning?* | Runner binaries compile on Windows, but layerunpack path is unoptimised; full support 🚧. | 🚧 |
---
##4PolicyasCode
| # | Question | Answer | Status |
|---|----------|--------|--------|
| P1 | *How are mutes & blocks stored now?* | Default: **YAML** (`scan-policy.yaml`) in Mongo (versioned). Import / export via `/policy/{import,export}` or Settings Policies. | |
| P2 | *Why YAML over OPA?* | YAML lowers entry barrier; advanced users may embed **Rego** snippets. Firstclass Rego evaluation is 🛠. | 🛠 |
| P3 | *CLI enforcement?* | Pass `--policy-file path` plus `--enforce` to fail builds on violations. Exitcode reflects policy gate. | |
| P4 | *Audit history?* | Every policy change writes an immutable record (`audit_policies` collection) and appears in UI *History* tab. | |
---
##5Registry & Offline Use
| # | Question | Answer | Status |
|---|----------|--------|--------|
| R1 | *Is the internal registry mandatory?* | No, but recommended for sovereignty & signature verification (`cosign verify`). | |
| R2 | *How to mirror for OUK?* | `oras pull registry.git.stella-ops.ru/library/* --output ./ouk-bundle` import on the target via `ctr images import`. | |
| R3 | *Does the backend fetch external feeds?* | Only when `--feeds.auto=1`; OUK installs run fully offline with NVD packed in the tarball. | |
---
##6Performance
| # | Scenario | Target | Achieved (July2025) |
|---|----------|--------|----------------------|
| Local SBOM scan (`alpine`) | **5s** | 4.2s P95 |
| ΔSBOM warm base | **1s** | 0.8s P95 |
| Image unpack (200MB) | **10s** | 8.6s P95 |
*Numbers measured on 4vCPU / 8GB Ubuntu22.04 runner.*
---
##7Security & Compliance
| # | Question | Answer | Status |
|---|----------|--------|--------|
| C1 | *How are images signed?* | Cosign signatures pushed alongside each tag (`*.sig`). Santech verifies on pull. | |
| C2 | *Supplychain attestation (SLSA)?* | SLSAgen at build time and verification in runner is 🛠 (≤6months). | 🛠 |
| C3 | *Rekor transparency log?* | Local Rekor mirror for offline installs is 🚧 (912months). | 🚧 |
| C4 | *TLS ciphers?* | Default OpenSSL suites; plugin allows GOST/SM (via `ITlsProvider`). | |
---
##8Roadmap / FutureFeatures
| Area | Feature | ETA | Notes |
|------|---------|-----|-------|
| UI | Modular route plugins | Q12026 | Dynamic Angular module loader |
| SBOM | Multiarch ΔSBOM | Q12026 | Layer digest per arch |
| Policy | Rego native engine | Q12026 | `opa eval` inproc |
| Supply chain | SLSA provenance | Q12026 | Level 3 target |
| Integrity | Rekor mirror | Q22026 | Airgap friendly |
| Ecosystem | Community plugin market | Q22026 | Curated index in UI |
| Scale | Redis Cluster autoshard | Q32026 | Transparent failover |
---
##9Troubleshooting
| Symptom | Likely Cause | Fix |
|---------|--------------|-----|
| **`ER_BAD_SV` error on scan** | SBOM format flag mismatch | Set correct `--sbom-type` or let autodetect. |
| ΔSBOM still uploads full SBOM | Cache cold or digest mismatch | Check `docker history` shows reused layers; bump builder version. |
| Policy file invalid | YAML schema error | Run `/policy/validate` endpoint; lint with VS Code schema. |
| Pull fails with 401 | Corporate proxy intercepts registry | Mirror to onpremise Harbor; set `--registry` flag. |
---
##10Licensing & Community
| # | Question | Answer |
|---|----------|--------|
| L1 | *Can I build a commercial fork?* | AGPL allows commercial services but derivatives must remain AGPL if distributed. |
| L2 | *Commercial support?* | Community only today; paid support partners in discussion. |
| L3 | *How to contribute a plugin?* | Fork implement DI contract (`IScannerRunner`, etc.) PR + ADR. |
---
##11Change Log
| Date | Highlights |
|------------|------------|
| 20250714 | Added internal registry, multiformat SBOM, ΔSBOM, PolicyasCode, updated roadmap (SLSA/Rekor) |
| 20250630 | Initial public FAQ matrix |
---
*(End of FAQ Matrix v2.0)*