Open Cybersecurity Schema Framework (OCSF) Schema

repository·main·Indexed 21 days ago

https://github.com/ocsf/ocsf-schema

An open standard for cybersecurity event logging and data normalization. The framework provides a standardized, extensible, and format-agnostic way to represent security events using categories, event classes, objects, and attributes. It includes documentation on creating schema extensions, managing the extensions registry, and navigating the repository structure.

Tokens
908
Snippets
1
Records
8
Agent score
25%

What's inside OCSF Schema

  1. Identify target use cases for OCSF

    main

    OCSF is designed to be used across the entire security data lifecycle by:

    • Log Producers: Applications, devices, and systems generating security events.
    • Security Tools: SIEM, SOAR, EDR, and other security platforms.
    • Analytics Platforms: Tools processing and analyzing security data.
    • Data Pipelines: ETL processes normalizing security data.
  2. How OCSF Extensions work

    main
    OCSF Extensions allow you to augment the core schema to meet vendor-specific or customer-specific requirements. You can use extensions to define additional attributes, objects, profiles, event classes, and categories. Extensions function similarly to the core schema, meaning they can create new categories, profiles, or event classes using the framework's dictionary. Each extension maintains its own unique ID and versioning to prevent collisions with the core schema or other extensions.
  3. Understand the OCSF Framework structure

    main

    The Open Cybersecurity Schema Framework (OCSF) is an open standard for cybersecurity event logging and data normalization. It provides a standardized, extensible, and format-agnostic (JSON, Parquet, Avro, etc.) way to represent security events.

    The framework is composed of four primary building blocks:

    • Categories: High-level groupings such as Network, System, or Application.
    • Event Classes: Specific event types located within a category.
    • Objects: Reusable data structures used across different events.
    • Attributes: Individual data fields with standardized definitions.
  4. Create an OCSF Extension directory and definition

    main

    Once a UID and Name are reserved, create a new subdirectory within the extensions/ directory. Inside this subdirectory, you must create an extension.json file to define the extension's metadata.

    Example extension.json:

    {
      "caption": "New Extension",
      "name": "new_ex",
      "uid": 123,
      "version": "0.0.0"
    }
    {
      "caption": "New Extension",
      "name": "new_ex",
      "uid": 123,
      "version": "0.0.0"
    }
  5. Reserve a UID and Name for your extension

    main

    To make your extension public and prevent ID collisions with the core schema or other extensions, you must reserve a unique identifier and name in the OCSF Extensions Registry. This is done by adding a row to the registry table in extensions.md within the repository.

    Example registry entry format:

    CaptionNameUIDNotes
    New Extensionnew_ex123The development schema extensions
  6. Navigate the OCSF Schema Repository

    main

    The repository is organized into the following directory structure:

    • events/: Event class definitions organized by category.
    • objects/: Reusable object definitions.
    • profiles/: Schema profiles for specific use cases.
    • extensions/: Schema extensions (e.g., Linux, Windows).
    • metaschema/: Schema validation rules.
    • templates/: Template definitions.
    • categories.json: Event category definitions.
    • dictionary.json: Attribute dictionary.
    • version.json: Current schema version.
  7. Extension directory structure and file types

    main

    An extension's directory structure mirrors the top-level schema directory. Depending on what you are extending, you can include the following files and subdirectories:

    NameDescription
    categories.jsonDefines new categories. Note: To avoid collisions with core schema categories, category IDs must be $\ge 30$.
    dictionary.jsonDefines new attributes.
    eventsDefines new event classes.
    includesDefines new shared data.
    objectsDefines new objects.
    profilesDefines new profiles.