- Add ConsoleSessionStore for managing console session state including tenants, profile, and token information. - Create OperatorContextService to manage operator context for orchestrator actions. - Implement OperatorMetadataInterceptor to enrich HTTP requests with operator context metadata. - Develop ConsoleProfileComponent to display user profile and session details, including tenant information and access tokens. - Add corresponding HTML and SCSS for ConsoleProfileComponent to enhance UI presentation. - Write unit tests for ConsoleProfileComponent to ensure correct rendering and functionality.
		
			
				
	
	
	
		
			8.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Export Center Profiles
Export Center profiles define what data is collected, how it is encoded, and which distribution paths are enabled for a run. Profiles are tenant-scoped and deterministic: identical selectors and source data produce identical bundles. This guide summarises built-in profiles, configuration fields, schema conventions, and compatibility notes.
Profile catalogue
| Profile | Kind / Variant | Output artefacts | Primary use cases | 
|---|---|---|---|
| json:raw | json/raw | Canonical JSONL archives of advisories, VEX, SBOMs | Evidence escrow, analytics pipelines | 
| json:policy | json/policy | json:rawartefacts plus policy snapshot + evaluated findings | Audit, compliance attestations | 
| trivy:db | trivy/db | Trivy-compatible vulnerability database | Feeding external scanners / CI | 
| trivy:java-db | trivy/java-db | Java ecosystem supplement for Trivy | Supply Java CVE data to Trivy | 
| mirror:full | mirror/full | Complete mirror bundle (raw, policy, indexes, provenance) | Air-gap deployments, disaster recovery | 
| mirror:delta | mirror/delta | Incremental changes relative to a prior manifest | Efficient mirror updates | 
Profiles can be cloned and customised; configuration is immutable per revision to keep runs reproducible.
Common configuration fields
| Field | Description | Applies to | Notes | 
|---|---|---|---|
| name | Human-readable identifier displayed in Console/CLI | All | Unique per tenant. | 
| kind | Logical family ( json,trivy,mirror) | All | Determines eligible adapters. | 
| variant | Specific export flavour (see table above) | All | Controls adapter behaviour. | 
| include | Record types to include ( advisories,vex,sboms,findings) | JSON, mirror | Defaults depend on variant. | 
| policySnapshotMode | required,optional, ornone | JSON policy, mirror | requiredforces a policy snapshot id when creating runs. | 
| distribution | Enabled distribution drivers ( http,oci,object) | All | Offline installs typically disable oci. | 
| compression | Compression settings ( zstd, level) | JSON, mirror | Trivy adapters manage compression internally. | 
| encryption | Mirror encryption options ( enabled,recipientKeys,strict) | Mirror | When enabled, only /datasubtree is encrypted; manifests remain plaintext. | 
| retention | Retention policy (days or never) | All | Drives pruning jobs for staged bundles. | 
Selectors (time windows, tenants, products, SBOM subjects, ecosystems) are supplied per run, not stored in the profile.
JSON profiles
json:raw
- Content: Exports raw advisories, VEX statements, and SBOMs as newline-delimited JSON (.jsonl.zst).
- Schema: Follows canonical StellaOps schema with casing and timestamps normalised. Each record includes tenant,source,linkset, andcontentfields.
- Options:
- includedefaults to- ["advisories", "vex", "sboms"].
- compressiondefaults to- zstdlevel 9.
- maxRecordsPerFile(optional) splits outputs for large datasets.
 
- Compatibility: Intended for analytics platforms, data escrow, or feeding downstream normalisation pipelines.
- Sample manifest excerpt:
{
  "profile": { "kind": "json", "variant": "raw" },
  "outputs": [
    { "type": "advisories.jsonl.zst", "sha256": "...", "count": 15234 },
    { "type": "vex.jsonl.zst", "sha256": "...", "count": 3045 },
    { "type": "sboms.jsonl.zst", "sha256": "...", "count": 872 }
  ],
  "selectors": { "tenant": "acme", "products": ["registry.example/app"] }
}
json:policy
- Content: Everything from json:rawplus:- policy_snapshot.json(policy metadata, version, hash).
- findings.policy.jsonl.zst(evaluated findings with decision, rationale, rule id, inputs hash).
 
- Determinism: Requires a policy snapshot id; runs fail if snapshot is missing or non-deterministic mode is active.
- Use cases: Compliance exports, auditor packages, policy attestation archives.
- Guardrails: AOC boundaries preserved: policy outputs are clearly partitioned from raw evidence.
Trivy profiles
trivy:db
- Detailed adapter behaviour is documented in docs/export-center/trivy-adapter.md.
- Content: Produces a Trivy DB-compatible bundle (SQLite database or tarball as required by Trivy version).
- Mapping rules:
- Advisory namespaces mapped to Trivy vendor IDs (e.g., ubuntu,debian,npm).
- Version ranges translated into Trivy's semantic version syntax.
- Severity mapped to Trivy standard (UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL).
 
- Advisory namespaces mapped to Trivy vendor IDs (e.g., 
- Validation: Adapter enforces supported Trivy schema versions; configuration includes targetSchemaVersion.
- Distribution: Typically pushed to OCI or object storage for downstream scanners; Console download remains available.
trivy:java-db
- Refer to docs/export-center/trivy-adapter.mdfor ecosystem-specific notes.
- Content: Optional Java ecosystem supplement for Trivy (matching Trivy's separate Java DB).
- Dependencies: Requires Java advisories in Findings Ledger; run fails with ERR_EXPORT_EMPTYif no Java data present andallowEmpty=false.
- Compatibility: Intended for organisations using Trivy's Java plugin or hardened pipelines that split general and Java feeds.
Mirror profiles
mirror:full
- Bundle structure and delta strategy are covered in docs/export-center/mirror-bundles.md.
- Content: Complete export with:
- Raw advisories, VEX, SBOMs (/data/raw).
- Policy overlays (/data/policy), including evaluated findings and policy snapshots.
- Indexes for fast lookup (/indexes/advisories.pb,/indexes/sboms.pb).
- Manifests and provenance (/manifests/export.json,/manifests/provenance.json).
 
- Raw advisories, VEX, SBOMs (
- Layout: Deterministic directory structure with hashed filenames to reduce duplication.
- Encryption: Optional encryptionblock enables age/AES-GCM encryption of/data.strict=trueencrypts everything exceptexport.json.
- Use cases: Air-gap replication, disaster recovery drills, Offline Kit seeding.
mirror:delta
- See docs/export-center/mirror-bundles.mdfor delta mechanics and application order.
- Content: Includes only changes relative to a base manifest (specified by baseExportIdwhen running).- changed,- added,- removedlists in- manifests/delta.json.
- Incremental indexes capturing only updated subjects.
 
- Constraints: Requires the base manifest to exist in object storage or artifact registry accessible to the worker. Fails with ERR_EXPORT_BASE_MISSINGotherwise.
- Workflow: Ideal for frequent updates to mirrored environments with limited bandwidth.
Compatibility and guardrails
- Aggregation-Only Contract: All profiles respect AOC boundaries: raw evidence is never mutated. Policy outputs are appended separately with clear provenance.
- Tenant scoping: Profiles are tenant-specific. Cross-tenant exports require explicit administrative approval and signed justification.
- Retriable runs: Re-running a profile with identical selectors yields matching manifests and hashes, facilitating verify-on-download workflows.
- Offline operation: JSON and mirror profiles function in offline mode without additional configuration. Trivy profiles require pre-seeded schema metadata shipped via Offline Kit.
- Quota integration: Profiles can define run quotas (per tenant per day). Quota exhaustion surfaces as 429 Too Many RequestswithX-Stella-Quota-*hints.
Example profile definition (CLI)
{
  "name": "daily-json-raw",
  "kind": "json",
  "variant": "raw",
  "include": ["advisories", "vex", "sboms"],
  "distribution": ["http", "object"],
  "compression": { "codec": "zstd", "level": 9 },
  "retention": { "mode": "days", "value": 14 }
}
Create via stella export profile create --file profile.json (CLI command documented separately).
Verification workflow
- Download bundle via Console/CLI and extract export.jsonandprovenance.json.
- Run cosign verify --key <tenant-key> export.json(for detatched signatures use--signature export.json.sig).
- Validate Trivy bundles with trivy --cache-dir <temp> --debug --db-repository <oci-ref>or localtrivy module db import.
- For mirror bundles, run internal mirror verifyscript (bundled in Offline Kit) to ensure directory layout and digests match manifest.
Extending profiles
- Use API/CLI to clone an existing profile and adjust include,distribution, or retention policies.
- Adapter plug-ins can introduce new variants (e.g., json:raw-lite,mirror:policy-only). Plug-ins must be registered at service restart and documented under/docs/export-center/profiles.md.
- Any new profile must append the imposed rule line and follow determinism and guardrail requirements.
Imposed rule: Work of this type or tasks of this type on this component must also be applied everywhere else it should be applied.