Schema/control-catalog.schema.json

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/xGreeny/hardening-lens/v1.0.1/src/HardeningLens/Schema/control-catalog.schema.json",
  "title": "Hardening Lens control catalog",
  "type": "object",
  "required": [
    "schemaVersion",
    "catalogVersion",
    "generatedOn",
    "description",
    "controls"
  ],
  "properties": {
    "$schema": {
      "type": "string"
    },
    "schemaVersion": {
      "const": "1.0"
    },
    "catalogVersion": {
      "type": "string",
      "pattern": "^\\d+\\.\\d+\\.\\d+$"
    },
    "generatedOn": {
      "type": "string",
      "format": "date"
    },
    "description": {
      "type": "string",
      "minLength": 30
    },
    "controls": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/control"
      }
    }
  },
  "$defs": {
    "control": {
      "type": "object",
      "required": [
        "id",
        "title",
        "category",
        "severity",
        "probe",
        "description",
        "rationale",
        "remediation",
        "parameters",
        "references",
        "tags"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^HL-[A-Z]+-[0-9]{3}$"
        },
        "title": {
          "type": "string",
          "minLength": 5,
          "maxLength": 140
        },
        "category": {
          "type": "string",
          "minLength": 3,
          "maxLength": 80
        },
        "severity": {
          "enum": [
            "Critical",
            "High",
            "Medium",
            "Low",
            "Informational"
          ]
        },
        "probe": {
          "enum": [
            "AsrRules",
            "AuditPolicy",
            "AutoRun",
            "BitLocker",
            "CredentialGuard",
            "DefenderPreference",
            "DefenderSignatureAge",
            "DefenderStatus",
            "DeviceGuardService",
            "EventLog",
            "FirewallProfiles",
            "LapsAdEncryption",
            "LapsBackup",
            "LapsDsrmBackup",
            "LapsPasswordAge",
            "LocalGuestAccount",
            "PowerShellModuleLogging",
            "RegistryValue",
            "SecureBoot",
            "Service",
            "SmbClient",
            "SmbServer",
            "WinRM",
            "WindowsOptionalFeature"
          ]
        },
        "description": {
          "type": "string",
          "minLength": 20
        },
        "rationale": {
          "type": "string",
          "minLength": 20
        },
        "remediation": {
          "type": "string",
          "minLength": 20
        },
        "parameters": {
          "type": "object"
        },
        "references": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "format": "uri",
            "pattern": "^https://learn\\.microsoft\\.com/"
          }
        },
        "tags": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9-]*$"
          }
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}