Skip to content

v0.8.0 — Backend tenancy & RBAC

Latest

Choose a tag to compare

@fabriziosalmi fabriziosalmi released this 30 Jun 19:03
be140dc

Minor release. Per-team data isolation and gateway-role enforcement across the backend (Sprints 1 & 2). Behavior changes — see upgrade notes. Backward-compatible for existing single-team deployments (pre-existing data has no team_id and is treated as global/shared).

Security

  • Data read endpoints team-scoped — shared feeds (team_id NULL, global) + per-team overlay; fixes a cross-tenant disclosure (#178).
  • Responder run history owned by the triggering team; other teams get 404 (#180).
  • CSPM scans namespaced per team + fail-closed auth when GATEWAY_INTERNAL_SECRET is unset (#179).
  • Guardian enforces gateway role on mutating viewsets + tightened has_perm — members can't perform admin-only actions (#181).
  • Legacy X-API-Key scoped to a non-privileged service identity; agents forward the caller's gateway identity on internal tool calls (#175).
  • Config mutations require owner/admin across services; operational + M2M stay member-allowed (#182).

Added

  • Reusable tenancy helpers + DRF RequireGatewayRole; two-team cross-tenant & role tests for data/responder/cspm/guardian in CI (#183).

Fixed

  • CSPM /dashboard/summary response contract (was 500ing for everyone) + a float Redis TTL (#179).

Upgrade notes

  • Set GATEWAY_INTERNAL_SECRET everywhere — guardian/cspm now return 503 without it; agents forwards it.
  • Members are read-only in guardian — mutations require owner/admin.
  • Data adds nullable team_id to sources/indicators on startup; existing rows are treated as global.

Full changelog: v0.7.1...v0.8.0