Zero Trust · Schema
Zero Trust Access Decision
The result returned by a Zero Trust Policy Decision Point (PDP) for a single access request, capturing the verdict and the signals that produced it.
Access ControlCloud SecurityCybersecurityFederalIdentity and Access ManagementNetwork SecuritySecurityZero Trust
Properties
| Name | Type | Description |
|---|---|---|
| request_id | string | |
| evaluated_at | string | |
| decision | string | |
| ttl_seconds | integer | How long this decision is valid before re-evaluation |
| subject | object | |
| device | object | |
| resource | object | |
| context | object | |
| signals | array | The individual signals consulted by the PDP |
| policy_id | string | Identifier of the policy that produced the decision |
| obligations | array |
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://raw.githubusercontent.com/api-evangelist/zero-trust/main/json-schema/zero-trust-access-decision-schema.json",
"title": "Zero Trust Access Decision",
"description": "The result returned by a Zero Trust Policy Decision Point (PDP) for a single access request, capturing the verdict and the signals that produced it.",
"type": "object",
"required": ["request_id", "subject", "resource", "decision", "evaluated_at"],
"properties": {
"request_id": { "type": "string", "format": "uuid" },
"evaluated_at": { "type": "string", "format": "date-time" },
"decision": { "type": "string", "enum": ["allow", "deny", "step_up", "isolate", "monitor"] },
"ttl_seconds": { "type": "integer", "minimum": 0, "description": "How long this decision is valid before re-evaluation" },
"subject": {
"type": "object",
"required": ["id", "type"],
"properties": {
"id": { "type": "string" },
"type": { "type": "string", "enum": ["user", "service_account", "workload"] },
"identity_provider": { "type": "string" },
"groups": { "type": "array", "items": { "type": "string" } },
"mfa_method": { "type": "string" }
}
},
"device": {
"type": "object",
"properties": {
"id": { "type": "string" },
"managed": { "type": "boolean" },
"posture": { "type": "string", "enum": ["compliant", "non_compliant", "unknown"] },
"edr": { "type": "string" }
}
},
"resource": {
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "string" },
"type": { "type": "string", "enum": ["application", "data", "host", "api", "saas"] },
"classification": { "type": "string" }
}
},
"context": {
"type": "object",
"properties": {
"geo": { "type": "string" },
"ip": { "type": "string" },
"risk_score": { "type": "integer", "minimum": 0, "maximum": 100 },
"client_app": { "type": "string" }
}
},
"signals": {
"type": "array",
"description": "The individual signals consulted by the PDP",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"value": {},
"weight": { "type": "number" }
}
}
},
"policy_id": { "type": "string", "description": "Identifier of the policy that produced the decision" },
"obligations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": { "type": "string", "description": "e.g. require_mfa, log, redact, isolate" },
"params": { "type": "object", "additionalProperties": true }
}
}
}
}
}