4.3 Test Redaction Processor
The redaction
processor gives precise control over which attributes and values are permitted or removed from telemetry data.
In this exercise, we will redact the Start the Gateway: In your Gateway terminal window start the Gateway. Enable the Start the Agent: In your Agent terminal window start the Agent. Start the Load Generator: In the Loadgen terminal window start the Check the debug output: For both the Agent and Gateway confirm the values for By including Check file output: Using Notice that These are just a couple of examples of how user.visa
& user.mastercard
values in the span data before it is exported by the Agent.
Exercise
../otelcol --config=gateway.yaml
redaction/redact
processor: In the Agent terminal window, edit agent.yaml
and remove the #
we inserted in the previous exercise. traces:
receivers:
- otlp
processors:
- memory_limiter
- attributes/update # Update, hash, and remove attributes
- redaction/redact # Redact sensitive fields using regex
- resourcedetection
- resource/add_mode
- batch
exporters:
- debug
- file
- otlphttp
../otelcol --config=agent.yaml
loadgen
:../loadgen -count 1
user.visa
& user.mastercard
have been updated. Notice user.amex
attribute value was NOT redacted because a matching regex pattern was not added to blocked_values
-> user.name: Str(George Lucas)
-> user.phone_number: Str(UNKNOWN NUMBER)
-> user.email: Str(62d5e03d8fd5808e77aee5ebbd90cf7627a470ae0be9ffd10e8025a4ad0e1287)
-> payment.amount: Double(69.71)
-> user.visa: Str(****)
-> user.amex: Str(3782 822463 10005)
-> user.mastercard: Str(****)
-> redaction.masked.keys: Str(user.mastercard,user.visa)
-> redaction.masked.count: Int(2)
-> user.name: Str(George Lucas)
-> user.phone_number: Str(+1555-867-5309)
-> user.email: Str(george@deathstar.email)
-> user.password: Str(LOTR>StarWars1-2-3)
-> user.visa: Str(4111 1111 1111 1111)
-> user.amex: Str(3782 822463 10005)
-> user.mastercard: Str(5555 5555 5555 4444)
-> payment.amount: Double(65.54)
Note
summary:debug
in the redaction processor, the debug output will include summary information about which matching key values were redacted, along with the count of values that were masked. -> redaction.masked.keys: Str(user.mastercard,user.visa)
-> redaction.masked.count: Int(2)
jq
verify that user.visa
& user.mastercard
have been updated in the gateway-traces.out
.jq '.resourceSpans[].scopeSpans[].spans[].attributes[] | select(.key == "user.visa" or .key == "user.mastercard" or .key == "user.amex") | {key: .key, value: .value.stringValue}' ./gateway-traces.out
user.amex
has not been redacted because a matching regex pattern was not added to blocked_values
:{
"key": "user.visa",
"value": "****"
}
{
"key": "user.amex",
"value": "3782 822463 10005"
}
{
"key": "user.mastercard",
"value": "****"
}
attributes
and redaction
processors can be configured to protect sensitive data.
Important
Stop the Agent and the Gateway processes by pressing Ctrl-C
in their respective terminals.