A conceptual generic overview of DaC#

DaC is much younger, and so not yet as mature as the other as-code or code-centric paradigms. The challenge this presents is that high level concepts are less discussed and agreed upon, with most of the attention being anecdotal or focused on very specific implementations within specific technologies and products. It would benefit the industry to establish more conceptual workflows or reference architectures at a higher level.

In order to simplify the understanding of DaC and to be able to approach it from a conceptualized model prior to putting it into practice, we will first aim to establish that higher level conceptualized overview, including defining a hierarchical relationship between major components and structuring some common lexicon.

Note: for the sake of simplicity, we will refer to rules throughout this DaC section, when in reality, they mostly can be replaced by any detection capability.

Core components of DaC delineation#

The core components are the top level of a full hierarchy of components and considerations.

First, the top level hierarchy can be broken down as follows:

../_images/47-dac-hierarchy.png

Fig. 47 Mind map of the related components of DaC#

The core components set the foundation for DaC and establishing a hierarchical relationship of components and considerations. They should be applicable across any environment or technology stack.

The core components consist of the following:

#

Core Component

Description

1

Maintaining rules within VCS

Rules managed in version control such as GitHub

2

Syncing rules from VCS to security platform

How the rule updates get to the platform

3

Maintaining rules within security platform

Rules are managed within the respective security platform

4

Syncing from security platform to VCS

How the rule updates get from the platform

To get a better understanding of the core components as well as the full hierarchy, here is an example broken down to the consideration level:

Core Components

Sub-components (optional)

Options

Considerations

Maintaining rules within VCS

Creating Detection Rules

Manually Creating Rules Based on Template

Copy template file

Generate template dynamically from schema

Auto suggest and validate with VSCode extension

Dynamic rule builder

Generate interactively with CLI

Generate from web form

File format

TOML

YAML

JSON

Rule versioning

Abstracted implicit versioning

Hash rule changes and lock on release builds

Insert version on specific merge flows

Manually versioning

Add to the rule file

Syncing rules from VCS to security platform

Cron based syncing

GitHub action workflow

Buildkite automation

Pull from platform

Sync on merge flow

Push on merge to main

Push to Kibana space based on branch name

The difference between a sub-component and an option is that all components and sub-components must be accounted for, whereas options are mechanisms to solve the component piece.

The further down the hierarchy is traversed, the less exhaustive and specific it becomes, as it will be more dependent on the specifics of the implementation. For the sake of showcasing their purposes, we will focus on some of the more common ones, which likely will be present in most scenarios.

Governance models of DaC Delineation#

The next most important consideration is the control of the flow of updates. There are many options and discrete interactions across the entirety of DaC, so it is imperative that the expectations and assumptions of the authoritative flow of data are compliant. For this, we introduce three governance models which account for the majority of use cases.

#

Governance Models

Description

1

VCS as authoritative

Updates flow from VCS to platform

2

Platform as authoritative

Updates flow from platform to VCS

3

Dual sync between VCS and the platform

Updates can be made within the platform or VCS but sync collisions must be handled

The decision on what governance model to apply should be made early, because many of the considerations from the previously discussed hierarchy have a lot of implementation details which will differ based on this decision.

A diagram of what the governance models look like across the core components can be found below:

../_images/48-dac-core-components.png

Fig. 48 DaC core components and governance models#

Implementation flow#

The final high level concept is the implementation flow, which is the exact flow implemented, across the individual components, options, and considerations.

Bringing it all together#

To summarize the relationship between the major topics:

  • The core components of DaC

    • Primary considerations across all use cases

    • Consists of options and considerations

  • The governance models of DaC

    • Dictates the authoritative flow of updates across the core components

  • The implementation flow of DaC

    • Details the specific flow of updates based on implemented criteria