TenantAtlas/specs/090-action-surface-contract-compliance/data-model.md
2026-02-13 02:29:38 +01:00

60 lines
2.4 KiB
Markdown

# Data Model — Spec 090 (Action Surface Contract Compliance & RBAC Hardening)
## Summary
Spec 090 is primarily a UI + authorization + auditability retrofit. **No new tables are required**. The feature standardizes how existing entities are presented and how actions are gated and audited.
## Entities (Existing)
### `AuditLog`
- **Purpose**: Durable audit trail for security/ops-relevant actions.
- **Key fields (observed from loggers)**:
- `tenant_id` (nullable)
- `workspace_id` (nullable)
- `actor_id`, `actor_email`, `actor_name`
- `action` (stable action id string)
- `resource_type`, `resource_id`
- `status` (`success` for Spec 090 scope)
- `metadata` (sanitized)
- `recorded_at`
- **Writers**:
- Tenant-scoped: `App\Services\Intune\AuditLogger`
- Workspace-scoped: `App\Services\Audit\WorkspaceAuditLogger`
### `OperationRun`
- **Purpose**: Observability record for queued/remote operations.
- **Spec 090 usage**: Operation-start actions must enqueue work and link to the run (“View run”).
### Tenant-scoped domain entities
- `Tenant`
- `Policy` / `PolicyVersion`
- `BackupSchedule` (+ executions via `OperationRun` type `backup_schedule_run`)
- `ProviderConnection`
- `Finding`
- `InventoryItem`
- `EntraGroup`
### Workspace-scoped domain entities
- `Workspace`
- workspace memberships (used for isolation boundary)
## Relationships (High-level)
- `Workspace` has many `Tenant`.
- `Tenant` has many `Policy`, `BackupSchedule`, `ProviderConnection`, `Finding`, `InventoryItem`, `EntraGroup`.
- `OperationRun` is scoped by `(workspace_id, tenant_id)` when applicable.
- `AuditLog` is scoped either by `tenant_id` (tenant-plane audits) or `workspace_id` (workspace-plane audits).
## Authorization/Capability Model (Existing)
- Canonical capability registry: `App\Support\Auth\Capabilities`.
- Capability resolution: `App\Services\Auth\CapabilityResolver`.
- Filament gating helpers:
- `App\Support\Rbac\UiEnforcement` (tenant scope)
- `App\Support\Rbac\WorkspaceUiEnforcement` (workspace scope)
## State Transitions (Relevant)
- “Side-effect action executed” → writes an `AuditLog` entry (success only for Spec 090).
- “Operation start action executed” → creates/reuses an `OperationRun`, enqueues background work, then links user to the run.
## Non-goals / Deferred
- BackupSchedule retention (soft delete/restore/force delete) is explicitly deferred.
- No schema changes are required for action-surface declarations; these live in code.