--- layout: default title: obfuscate parent: Processors grand_parent: Pipelines nav_order: 71 --- # obfuscate The `obfuscate` process enables obfuscation of fields inside your documents in order to protect sensitive data. ## Usage In this example, a document contains a `log` field and a `phone` field, as shown in the following object: ```json { "id": 1, "phone": "(555) 555 5555", "log": "My name is Bob and my email address is abc@example.com" } ``` To obfuscate the `log` and `phone` fields, add the `obfuscate` processor and call each field in the `source` option. To account for both the `log` and `phone` fields, the following example uses multiple `obfuscate` processors because each processor can only obfuscate one source. In the first `obfuscate` processor in the pipeline, the source `log` uses several configuration options to mask the data in the log field, as shown in the following example. For more details on these options, see [configuration](#configuration). ```yaml pipeline: source: http: processor: - obfuscate: source: "log" target: "new_log" patterns: - "[A-Za-z0-9+_.-]+@([\\w-]+\\.)+[\\w-]{2,4}" action: mask: mask_character: "#" mask_character_length: 6 - obfuscate: source: "phone" sink: - stdout: ``` When run, the `obfuscate` processor parses the fields into the following output: ```json { "id": 1, "phone": "***", "log": "My name is Bob and my email address is abc@example.com", "newLog": "My name is Bob and my email address is ######" } ``` ## Configuration Use the following configuration options with the `obfuscate` processor. | Parameter | Required | Description | | :--- | :--- | :--- | | `source` | Yes | The source field to obfuscate. | | `target` | No | The new field in which to store the obfuscated value. This leaves the original source field unchanged. When no `target` is provided, the source field updates with the obfuscated value. | | `patterns` | No | A list of regex patterns that allow you to obfuscate specific parts of a field. Only parts that match the regex pattern will obfuscate. When not provided, the processor obfuscates the whole field. | | `action` | No | The obfuscation action. As of Data Prepper 2.3, only the `mask` action is supported. | You can customize the `mask` action with the following optional configuration options. | Parameter | Default | Description | | :--- | :--- | :--- | `mask_character` | `*` | The character to use when masking. Valid characters are !, #, $, %, &, *, and @. | `mask_character_length` | `3` | The number of characters to mask in the field. The value must be between 1 and 10. | ## Predefined patterns When using the `patterns` configuration option, you can use a set of predefined obfuscation patterns for common fields. The `obfuscate` processor supports the following predefined patterns. You cannot use multiple patterns for one obfuscate processor. Use one pattern for each obfuscate processor. {: .note} | Pattern name | Examples | |-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | %{EMAIL_ADDRESS} | abc@test.com
123@test.com
abc123@test.com
abc_123@test.com
a-b@test.com
a.b@test.com
abc@test-test.com
abc@test.com.cn
abc@test.mail.com.org | | %{IP_ADDRESS_V4} | 1.1.1.1
192.168.1.1
255.255.255.0 | | %{BASE_NUMBER} | 1.1
.1
2000 | | %{CREDIT_CARD_NUMBER} | 5555555555554444
4111111111111111
1234567890123456
1234 5678 9012 3456
1234-5678-9012-3456 | | %{US_PHONE_NUMBER} | 1555 555 5555
5555555555
1-555-555-5555
1-(555)-555-5555
1(555) 555 5555
(555) 555 5555
+1-555-555-5555
| | %{US_SSN_NUMBER} | 123-11-1234