๐Ÿ‘ Allowlists

Set what specific data does not need to be obfuscated by the Helios SDK. Only data that matches an expression in the JSONPaths configured will be collected in a plain manner.

Control what data is not obfuscated

Non-sensitive information can be skipped when obfuscating data, by providing JSONPath expressions in this list (JavaScript, Python).
Every node in the service's DTOs, across all instrumentation-supported frameworks, that matches an expression in the list is skipped and not changed.

Example

Consider the following DTO as an example:

{
    collection: 'users',
    metadata: {
        numberOfUsers: 2,
        lastUpdateDate: '2022-04-01T00:00:00.000Z'
    },
    users: [
        {
            id: 12345,
            name: 'John Smith',
            age: 36
        },
        {
            id: 67890,
            name: 'Alice Wilson',
            age: 42
        }
    ]
}

To skip obfuscation of the collection value, use the expression $.collection.
$.metadata.* ensures the entire tree under metadata is not changed.
To leave the user IDs as-is, add the expression $.users[*].id.
When including all 3 JSONPath expressions, the obfuscated DTO looks like this:

{
    collection: 'users',
    metadata: {
        numberOfUsers: 2,
        lastUpdateDate: '2022-04-01T00:00:00.000Z'
    },
    users: [
        {
            id: 12345,
            name: '2d3ab0b7',
            age: 'e4f5a6b7'
        },
        {
            id: 67890,
            name: 'c8d9e0f1',
            age: 'a2b3c4d5'
        }
    ]
}

Additional allowlist capabilities (Python only)

Not all use cases are supported by JSONPath, specifically conditions on root nodes of DTOs are not always possible.
Therefore, the allowlist can also include (JSONPath expression, expected value) ordered pairs. If a DTO includes a node that matches one of these JSONPath expressions, and the node's value is equal to the corresponding expected value, the entire DTO will be skipped and not obfuscated.
For example, the following DTO will not be changed if the allowlist includes the ordered pair ('$.type', 'unclassified'):

{
    type: 'unclassified',
    name: 'Alice Wilson',
    age: 42,
    address: 'Tokyo'
}