Register qonto-assistant as a protected system (finance.qonto.read)
QONTO-WP-0004-T04. Modeled directly on examples/tenant-engine/: one resource type (finance-snapshot), one action (finance.qonto.read), two registered subjects (an agent-harness session identity and the founder's human identity), and a Rego policy gating on resource.system + action + subject.type + tenant match. Tenant capability-role/plan liveness (VEN/CUS) is deliberately NOT encoded here -- that's qonto-assistant's separate tenant-engine live-lookup check, per this package's own scope note. Verified: flex-auth test-policy (6 rego tests + 6 fixtures, all pass), load-registry, and CLI check for both an allow and a deny case. Also verified end-to-end over real HTTP: a live flex-auth serve loaded with this exact registry+policy, hit by qonto-assistant's actual FlexAuthCheckClient (not a mock) -- allow for tenant:friendly:binky, deny (wrong_tenant) for a mismatched tenant. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
0061835d3a
commit
ae295824bd
8 changed files with 510 additions and 0 deletions
101
examples/qonto-assistant/registry_snapshot.json
Normal file
101
examples/qonto-assistant/registry_snapshot.json
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"systems": [
|
||||
{
|
||||
"id": "qonto-assistant",
|
||||
"name": "Qonto Governed Assistant",
|
||||
"resource_types": [
|
||||
{
|
||||
"name": "finance-snapshot",
|
||||
"scope_level": "Resource",
|
||||
"planes": [
|
||||
"Data",
|
||||
"Audit"
|
||||
],
|
||||
"metadata": {
|
||||
"description": "Read-only Qonto finance capability surface (org summary, transactions, CostRunRate hints). No spend/transfer/card/write capability is ever registered here -- those are hard-denied inside qonto-assistant's own policy kernel and never reach flex-auth."
|
||||
}
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"name": "finance.qonto.read",
|
||||
"capabilities": [
|
||||
"View",
|
||||
"Audit"
|
||||
],
|
||||
"planes": [
|
||||
"Data",
|
||||
"Audit"
|
||||
],
|
||||
"exposure_modes": [
|
||||
"Masked"
|
||||
],
|
||||
"metadata": {
|
||||
"required_context": [],
|
||||
"description": "Coarse \"may this actor use qonto-assistant's read surface at all\" gate. Tenant capability-role/plan liveness (VEN/CUS, ADR-0014) is a separate check against tenant-engine's live-lookup endpoint, not encoded in this policy."
|
||||
}
|
||||
}
|
||||
],
|
||||
"caring_profiles": [
|
||||
"caring-0.4.0-rc2"
|
||||
],
|
||||
"metadata": {
|
||||
"flex_auth_contract": "protected-system-v0",
|
||||
"boundary_contract": "qonto-assistant/docs/SecurityPractice.md"
|
||||
}
|
||||
}
|
||||
],
|
||||
"resource_manifests": [],
|
||||
"tenants": [
|
||||
{
|
||||
"id": "tenant:friendly:binky",
|
||||
"name": "Binky Hedgehog GmbH"
|
||||
}
|
||||
],
|
||||
"subjects": [
|
||||
{
|
||||
"id": "agent-harness-binky",
|
||||
"type": "Agent",
|
||||
"display_name": "agent-harness session (binky tenant)",
|
||||
"organization_relation": "ServiceProvider",
|
||||
"roles": [
|
||||
"Operator"
|
||||
],
|
||||
"groups": [
|
||||
"group:qonto-assistant-readers"
|
||||
],
|
||||
"tenant": "tenant:friendly:binky",
|
||||
"metadata": {
|
||||
"description": "Harness-run agent sessions calling qonto-assistant's finance.qonto.read capability over REST or MCP."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bernd.worsch",
|
||||
"type": "Human",
|
||||
"display_name": "Bernd Worsch (founder)",
|
||||
"organization_relation": "Customer",
|
||||
"roles": [
|
||||
"Operator"
|
||||
],
|
||||
"groups": [
|
||||
"group:qonto-assistant-readers"
|
||||
],
|
||||
"tenant": "tenant:friendly:binky",
|
||||
"metadata": {
|
||||
"description": "Founder operator, human REST/MCP caller."
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"id": "group:qonto-assistant-readers",
|
||||
"display_name": "qonto-assistant finance.qonto.read callers",
|
||||
"members": [
|
||||
"agent-harness-binky",
|
||||
"bernd.worsch"
|
||||
],
|
||||
"tenant": "tenant:friendly:binky"
|
||||
}
|
||||
],
|
||||
"relationships": []
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue