Add governed test plane and close T04/T08
Encode fail-closed admission, target registrations, and a credential broker that never returns secret values. Calibrate audit-core shaped probes in-process. Send no packets and request no live credentials. Assistant: grok Assistant-Session: 01a02670-3345-76f2-a014-70fde8e2a2bb
This commit is contained in:
parent
0aab0cb4c6
commit
95129d7a35
35 changed files with 1599 additions and 103 deletions
83
src/whitehat_security/audit_fixtures.py
Normal file
83
src/whitehat_security/audit_fixtures.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from copy import deepcopy
|
||||
from dataclasses import dataclass
|
||||
|
||||
from .differential import DifferentialProbe
|
||||
from .model import Response
|
||||
|
||||
|
||||
@dataclass
|
||||
class AuditFixture:
|
||||
"""In-process audit-core shape used to calibrate the E2 pack. No sockets."""
|
||||
|
||||
enforce_tenant: bool
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
self.events = {
|
||||
"event-a": {
|
||||
"id": "event-a", "tenant": "tenant-a",
|
||||
"correlation_id": "corr-shared", "label": "fixture-a",
|
||||
},
|
||||
"event-b": {
|
||||
"id": "event-b", "tenant": "tenant-b",
|
||||
"correlation_id": "corr-shared", "label": "fixture-b",
|
||||
},
|
||||
}
|
||||
|
||||
def snapshot_events(self) -> object:
|
||||
return deepcopy(self.events)
|
||||
|
||||
def _visible(self, actor_tenant: str, item: dict) -> bool:
|
||||
return (not self.enforce_tenant) or item["tenant"] == actor_tenant
|
||||
|
||||
def get(self, actor_tenant: str, event_id: str) -> Response:
|
||||
item = self.events.get(event_id)
|
||||
if item is None or not self._visible(actor_tenant, item):
|
||||
return Response(404, {"error": "not_found"})
|
||||
return Response(200, deepcopy(item))
|
||||
|
||||
def by_correlation(self, actor_tenant: str, correlation_id: str) -> Response:
|
||||
items = [
|
||||
deepcopy(item) for item in self.events.values()
|
||||
if item["correlation_id"] == correlation_id and self._visible(actor_tenant, item)
|
||||
]
|
||||
return Response(200, {"events": items})
|
||||
|
||||
def append(self, actor_tenant: str, event: dict) -> Response:
|
||||
if self.enforce_tenant and event["tenant"] != actor_tenant:
|
||||
return Response(403, {"error": "forbidden"})
|
||||
self.events[event["id"]] = deepcopy(event)
|
||||
return Response(202, {"id": event["id"], "tenant": event["tenant"]})
|
||||
|
||||
|
||||
def audit_probe_suite(service: AuditFixture) -> list[DifferentialProbe]:
|
||||
markers = ("event-b", "tenant-b", "fixture-b")
|
||||
forged = {
|
||||
"id": "event-forged-b", "tenant": "tenant-b",
|
||||
"correlation_id": "corr-shared", "label": "fixture-forged",
|
||||
}
|
||||
return [
|
||||
DifferentialProbe(
|
||||
"audit-event-by-id", "read",
|
||||
lambda: service.get("tenant-b", "event-b"),
|
||||
lambda: service.get("tenant-a", "event-b"),
|
||||
lambda: service.get("tenant-a", "absent"),
|
||||
markers,
|
||||
),
|
||||
DifferentialProbe(
|
||||
"audit-correlation-slice", "read",
|
||||
lambda: service.by_correlation("tenant-b", "corr-shared"),
|
||||
lambda: service.by_correlation("tenant-a", "corr-shared"),
|
||||
lambda: service.by_correlation("tenant-a", "corr-absent"),
|
||||
markers, hide_existence=False,
|
||||
),
|
||||
DifferentialProbe(
|
||||
"audit-append-as-b", "create",
|
||||
lambda: Response(202, {"id": "owner-control"}),
|
||||
lambda: service.append("tenant-a", forged),
|
||||
lambda: Response(403, {"error": "forbidden"}),
|
||||
markers + ("event-forged-b",),
|
||||
state=service.snapshot_events, hide_existence=False,
|
||||
),
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue