3.1 KiB
3.1 KiB
Orchestrator Operator Scope with Audit Metadata
Module
Orchestrator
Status
VERIFIED
Description
New orch:operate scope and Orch.Operator role requiring explicit operator_reason and operator_ticket parameters on token requests. Authority enforces these fields and captures them as audit properties, giving SecOps traceability for every orchestrator control action.
Implementation Details
- Modules:
src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/,src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/ - Key Classes:
AuditEntry(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/AuditEntry.cs) - audit entry capturing operator actions with reason and ticket metadataTenantResolver(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Services/TenantResolver.cs) - resolves tenant and operator context from token claimsAuditEndpoints(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Endpoints/AuditEndpoints.cs) - REST API for querying operator audit trailAuditLedgerContracts(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Contracts/AuditLedgerContracts.cs) - API contracts including operator metadataQuota(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Quota.cs) - quota model with operator attributionJob(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Core/Domain/Job.cs) - job model with operator trackingDeprecationHeaders(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.WebService/Services/DeprecationHeaders.cs) - deprecation header support for versioned operator APIs
- Interfaces:
IAuditRepository(src/JobEngine/StellaOps.JobEngine/StellaOps.JobEngine.Infrastructure/Repositories/IAuditRepository.cs) - Source: Feature matrix scan
E2E Test Plan
- Request a token with
orch:operatescope,operator_reason="maintenance", andoperator_ticket="TICKET-123"; verify the token is issued - Perform an operator action (e.g., cancel a job) with the scoped token; verify an
AuditEntrycaptures the operator_reason and operator_ticket - Attempt an operator action without
operator_reasonand verify it is rejected with a 400 error - Query the audit trail via
AuditEndpointsand filter by operator_ticket; verify matching entries are returned - Verify operator scope enforcement: use a token without
orch:operatescope and verify operator actions are forbidden (403) - Perform multiple operator actions and verify each generates a separate
AuditEntrywith correct metadata - Verify tenant scoping via
TenantResolver: operator actions for tenant A are not visible in tenant B's audit trail - Verify audit entry immutability: attempt to modify an existing
AuditEntryand verify it is rejected
Verification
- Verified on 2026-02-13 via
run-002. - Tier 0: Source files confirmed present on disk.
- Tier 1:
dotnet buildpassed (0 errors); 1292/1292 tests passed. - Tier 2d:
docs/qa/feature-checks/runs/jobengine/orchestrator-operator-scope-with-audit-metadata/run-002/tier2-integration-check.json