LAKA Authorized Security Test Plan
test-plan 14 required 16 properties
Required properties
- version
- test_plan_id
- authorization_id
- client_id
- target
- environment
- mode
- objective
- test_cases
- limits
- stop_conditions
- evidence
- cleanup
- status
The schema in full
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://bowtiekreative.example/schemas/laka-security/test-plan.schema.json",
"title": "LAKA Authorized Security Test Plan",
"type": "object",
"additionalProperties": false,
"required": [
"version",
"test_plan_id",
"authorization_id",
"client_id",
"target",
"environment",
"mode",
"objective",
"test_cases",
"limits",
"stop_conditions",
"evidence",
"cleanup",
"status"
],
"properties": {
"version": {
"type": "string"
},
"test_plan_id": {
"type": "string"
},
"authorization_id": {
"type": "string"
},
"client_id": {
"type": "string"
},
"target": {
"type": "string"
},
"environment": {
"type": "string"
},
"mode": {
"enum": [
"inventory",
"passive",
"audit",
"active",
"recovery"
]
},
"objective": {
"type": "string"
},
"scope": {
"type": "object",
"additionalProperties": false,
"properties": {
"allowed_hosts": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed_paths": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed_accounts": {
"type": "array",
"items": {
"type": "string"
}
},
"allowed_data": {
"type": "array",
"items": {
"type": "string"
}
},
"excluded_dependencies": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"test_cases": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"test_id",
"family",
"control_objective",
"interaction",
"expected_result",
"evidence_required",
"default_enabled"
],
"properties": {
"test_id": {
"type": "string"
},
"family": {
"type": "string"
},
"references": {
"type": "array",
"items": {
"type": "string"
}
},
"control_objective": {
"type": "string"
},
"interaction": {
"type": "string"
},
"preconditions": {
"type": "array",
"items": {
"type": "string"
}
},
"permitted_methods": {
"type": "array",
"items": {
"type": "string"
}
},
"prohibited_effects": {
"type": "array",
"items": {
"type": "string"
}
},
"expected_result": {
"type": "string"
},
"evidence_required": {
"type": "array",
"items": {
"type": "string"
}
},
"cleanup": {
"type": "array",
"items": {
"type": "string"
}
},
"default_enabled": {
"type": "boolean"
}
}
}
},
"limits": {
"type": "object",
"additionalProperties": false,
"required": [
"requests_per_second",
"concurrency",
"duration_minutes"
],
"properties": {
"requests_per_second": {
"type": "number",
"exclusiveMinimum": 0
},
"concurrency": {
"type": "integer",
"minimum": 1
},
"duration_minutes": {
"type": "integer",
"minimum": 1
},
"max_error_rate": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"max_latency_ms": {
"type": "integer",
"minimum": 1
},
"max_test_records": {
"type": "integer",
"minimum": 0
}
}
},
"stop_conditions": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"evidence": {
"type": "object",
"additionalProperties": false,
"required": [
"destination",
"redact",
"integrity"
],
"properties": {
"destination": {
"type": "string"
},
"redact": {
"type": "array",
"items": {
"type": "string"
}
},
"integrity": {
"type": "string"
},
"retention_days": {
"type": "integer",
"minimum": 0
}
}
},
"cleanup": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"active_approval": {
"type": "object",
"additionalProperties": false,
"required": [
"approved_by",
"approved_at",
"approved_test_ids",
"approval_reference"
],
"properties": {
"approved_by": {
"type": "string"
},
"approved_at": {
"type": "string",
"format": "date-time"
},
"approved_test_ids": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
}
},
"approval_reference": {
"type": "string"
}
}
},
"status": {
"enum": [
"draft",
"authorized",
"running",
"stopped",
"completed",
"failed",
"expired"
]
}
},
"allOf": [
{
"if": {
"properties": {
"mode": {
"const": "active"
}
},
"required": [
"mode"
]
},
"then": {
"required": [
"active_approval"
]
}
}
]
}
Validate against it
curl -X POST https://security.bowtiekreative.com/v1/validate \
-H 'content-type: application/json' \
--data '{"schema": "test-plan", "document": { … }}'