Bow Tie Kreative SECURITY Grammar

JSON Schemas

LAKA Security Program

security-program 8 required 9 properties

Required properties

  • version
  • program_id
  • client_id
  • objectives
  • assets
  • profiles
  • rules
  • feedback_loops

The schema in full

schemas/security-program.schema.json · draft 2020-12
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://bowtiekreative.example/schemas/laka-security/security-program.schema.json",
  "title": "LAKA Security Program",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "version",
    "program_id",
    "client_id",
    "objectives",
    "assets",
    "profiles",
    "rules",
    "feedback_loops"
  ],
  "properties": {
    "version": {
      "type": "string"
    },
    "program_id": {
      "type": "string",
      "minLength": 3
    },
    "client_id": {
      "type": "string",
      "minLength": 1
    },
    "owner": {
      "type": "string"
    },
    "objectives": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "string"
      }
    },
    "assets": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "asset_id",
          "kind",
          "environment",
          "criticality",
          "owner"
        ],
        "properties": {
          "asset_id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "environment": {
            "type": "string"
          },
          "criticality": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "owner": {
            "type": "string"
          },
          "classification": {
            "type": "string"
          },
          "internet_exposed": {
            "type": "boolean"
          },
          "dependencies": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "profiles": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "profile",
          "applies_to"
        ],
        "properties": {
          "profile": {
            "type": "string"
          },
          "applies_to": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "target_level": {
            "type": "string"
          }
        }
      }
    },
    "rules": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "rule_id",
          "if",
          "then",
          "else"
        ],
        "properties": {
          "rule_id": {
            "type": "string"
          },
          "if": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "then": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "else": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "feedback_loops": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "trigger",
          "action"
        ],
        "properties": {
          "trigger": {
            "type": "string"
          },
          "action": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}

Validate against it

curl -X POST https://security.bowtiekreative.com/v1/validate \
  -H 'content-type: application/json' \
  --data '{"schema": "security-program", "document": { … }}'

This schema as JSON →