{"id":101054,"date":"2025-01-15T15:53:01","date_gmt":"2025-01-15T07:53:01","guid":{"rendered":"https:\/\/version-2.com\/?p=101054"},"modified":"2025-01-13T15:55:32","modified_gmt":"2025-01-13T07:55:32","slug":"redacting-message-fields-for-privacy-purposes","status":"publish","type":"post","link":"https:\/\/version-2.com\/en\/2025\/01\/redacting-message-fields-for-privacy-purposes\/","title":{"rendered":"Redacting Message Fields for Privacy Purposes"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"101054\" class=\"elementor elementor-101054\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-35fe5dd post-content elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"35fe5dd\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;cef08c3&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-409a2e9a\" data-id=\"409a2e9a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5a8be8f elementor-widget elementor-widget-text-editor\" data-id=\"5a8be8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp\" width=\"1200\" height=\"628\" \/><\/p><div class=\"elementor-widget-container\"><p><span style=\"font-weight: 400;\">Many organizations today have strict data privacy regulations that they must comply with. These privacy regulations can often clash with the requirements of security, application and operations teams who need detailed log information. This how to guide walks you through redacting message fields for privacy purposes.<\/span><\/p><p><span style=\"font-weight: 400;\">At Graylog, many of the organizations who use our tool are logging sensitive data that may contain personally identifiable information, health related data or financial data. Often, to ensure compliance with data privacy laws, this information must be redacted or hidden from many of the end users of the tool.<\/span><\/p><p><span style=\"font-weight: 400;\">I\u2019m going to walk through a simple way we can use processing pipelines to scrub personally identifiable information from a log message so that it is only visible to an elevated Graylog user account.<\/span><\/p><p><i><span style=\"font-weight: 400;\">Caution: To achieve this functionality we need to replicate the message. This will increase the amount of data written to OpenSearch which may impact licensing or storage requirements.<\/span><\/i><\/p><h2>Configuration<\/h2><p><span style=\"font-weight: 400;\">In my lab environment I have Auditbeat running on my host machine.. Log messages are sent to a Graylog Illuminate stream called \u201cIlluminate:Linux Auditbeat Messages\u201d.<\/span><\/p><p><picture class=\"aligncenter wp-image-11825 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture1.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11825 size-full\"><img decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture1.png\" alt=\"Message Stream\" width=\"624\" height=\"48\" \/><\/picture><\/p><p><span style=\"font-weight: 400;\">In these messages I can see my username. First in the <\/span><i><span style=\"font-weight: 400;\">user_name<\/span><\/i><span style=\"font-weight: 400;\"> field and again in the <\/span><i><span style=\"font-weight: 400;\">message<\/span><\/i><span style=\"font-weight: 400;\"> field.<\/span><\/p><p><picture class=\"aligncenter wp-image-11826 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture2.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11826 size-full\"><img decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture2.png\" alt=\"redacting message fields that require redacting\" width=\"624\" height=\"207\" \/><\/picture><\/p><h2>Pipeline Rule<\/h2><p><span style=\"font-weight: 400;\">For privacy purposes I am going to <a href=\"https:\/\/go2docs.graylog.org\/current\/making_sense_of_your_log_data\/rule_builder_use_cases.htm?Highlight=redact\">redact these usernames<\/a> and route the messages into a separate stream, \u201cAuditbeat Redacted\u201d. I\u2019ll retain the unredacted message in the \u201c<a href=\"https:\/\/graylog.org\/post\/25-linux-logs-to-collect-and-monitor\/\">Illuminate:Linux Auditbeat Messages<\/a>\u201d stream. We\u2019ll then restrict the access rights to these different streams.<\/span><\/p><p><span style=\"font-weight: 400;\">To achieve this we need to write a pipeline rule that will create a copy of the message, edit the contents, route it into the new stream and remove the copy from the original stream.<\/span><\/p><p><span style=\"font-weight: 400;\">This is what the complete pipeline rule looks like, I\u2019ll walk through it line by line:<\/span><\/p><table><tbody><tr><td><span style=\"font-weight: 400;\">rule <\/span><span style=\"font-weight: 400;\">\u201credact_usernames\u201d<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">when<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/ check whether the message has the username field and hasn\u2019t already been redacted<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 has_field(<\/span><span style=\"font-weight: 400;\">\u201cuser_name\u201d<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 AND NOT contains(<\/span><b>to_string<\/b><span style=\"font-weight: 400;\">($message.user_name), <\/span><span style=\"font-weight: 400;\">\u201cREDACTED\u201d<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">then\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/ clone the message<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 let cloned_mess = clone_message()<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/ grab the username and replace it in the message component<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 let x = to_string($message.user_name)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 let new_field = replace(<\/span><b>to_string<\/b><span style=\"font-weight: 400;\">(<\/span><b>cloned_mess<\/b><span style=\"font-weight: 400;\">.message), x, <\/span><span style=\"font-weight: 400;\">\u201cREDACTED\u201d<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 set_field(<\/span><b>field<\/b><span style=\"font-weight: 400;\">: <\/span><span style=\"font-weight: 400;\">\u201cmessage\u201d<\/span><span style=\"font-weight: 400;\">, value<\/span><span style=\"font-weight: 400;\">:new_field<\/span><span style=\"font-weight: 400;\">, message<\/span><span style=\"font-weight: 400;\">:cloned_mess<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/ replace the username field with REDACTED<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 set_field(<\/span><b>field<\/b><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201cuser_name\u201d<\/span><span style=\"font-weight: 400;\">, value:<\/span><span style=\"font-weight: 400;\">\u201cREDACTED\u201d<\/span><span style=\"font-weight: 400;\">, message<\/span><span style=\"font-weight: 400;\">:cloned_mess<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/ route into Auditbeat Redacted stream<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 route_to_stream(<\/span><b>id<\/b><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201c637e24115833463dd73bf617\u201d<\/span><span style=\"font-weight: 400;\">, message<\/span><span style=\"font-weight: 400;\">:cloned_mess<\/span><span style=\"font-weight: 400;\">, remove_from_default<\/span><span style=\"font-weight: 400;\">:true<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/ remove from original stream<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 remove_from_stream(<\/span><b>id<\/b><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201c638f5d7cacb74d540a215aa9\u201d<\/span><span style=\"font-weight: 400;\">, message<\/span><span style=\"font-weight: 400;\">:cloned_mess<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">end<\/span><\/td><\/tr><\/tbody><\/table><h2>Identify The Message<\/h2><p><span style=\"font-weight: 400;\">The first step in the rule is to identify the messages we want to modify. This is achieved by finding messages with the relevant username field and also performing a check to ensure the message hasn\u2019t already been modified. This check is important and I\u2019ll explain why in the next part:<\/span><\/p><p>\u00a0<\/p><table><tbody><tr><td><span style=\"font-weight: 400;\">when<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 \/\/<\/span><span style=\"font-weight: 400;\"> check <\/span><span style=\"font-weight: 400;\">whether the message has the username field<\/span><span style=\"font-weight: 400;\"> and <\/span><span style=\"font-weight: 400;\">hasn\u2019t already been redacted<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 has_field(<\/span><span style=\"font-weight: 400;\">\u201cuser_name\u201d<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 AND NOT contains(to_string($message.user_name), <\/span><span style=\"font-weight: 400;\">\u201cREDACTED\u201d<\/span><span style=\"font-weight: 400;\">)<\/span><\/td><\/tr><\/tbody><\/table><h2>Clone The Message<\/h2><p><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">After we have identified the message we want to process we then clone the message.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">IMPORTANT: When a message is cloned an exact copy of the message is created however it will be given a new message ID. From the view of the processing pipeline, this message has not been processed so it will flow through the pipeline as a newly seen message. If the check in the previous block was not performed, we would end up in an infinite loop of cloning the same message:<\/span><\/p><p>\u00a0<\/p><table><tbody><tr><td><span style=\"font-weight: 400;\">\/\/ clone the message<\/span><span style=\"font-weight: 400;\"><br \/><\/span> <b>let<\/b><span style=\"font-weight: 400;\"> cloned_mess = clone_message();<\/span><\/td><\/tr><\/tbody><\/table><p><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">As the <\/span><i><span style=\"font-weight: 400;\">message <\/span><\/i><span style=\"font-weight: 400;\">field in the log contains the username, we are going to first redact it from here, before removing it from the <\/span><i><span style=\"font-weight: 400;\">auditbeat_user_name <\/span><\/i><span style=\"font-weight: 400;\">field itself. I am using the original $message field to find the username, but then replacing the the <\/span><i><span style=\"font-weight: 400;\">message<\/span><\/i><span style=\"font-weight: 400;\"> field in the cloned message,<\/span><i><span style=\"font-weight: 400;\"> cloned_mess:<\/span><\/i><\/p><p>\u00a0<\/p><table><tbody><tr><td><span style=\"font-weight: 400;\">\/\/ grab the username and replace it in the message component<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 let x = to_string($message.user_name)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 let new_field = replace(<\/span><b>to_string<\/b><span style=\"font-weight: 400;\">(cloned_<\/span><b>mess<\/b><span style=\"font-weight: 400;\">.message), x, <\/span><span style=\"font-weight: 400;\">\u201cREDACTED\u201d<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 set_field(<\/span><b>field<\/b><span style=\"font-weight: 400;\">: <\/span><span style=\"font-weight: 400;\">\u201cmessage\u201d<\/span><span style=\"font-weight: 400;\">, value<\/span><span style=\"font-weight: 400;\">:new_field<\/span><span style=\"font-weight: 400;\">, message<\/span><span style=\"font-weight: 400;\">:cloned_mess<\/span><span style=\"font-weight: 400;\">)<\/span><span style=\"font-weight: 400;\">;<\/span><\/td><\/tr><\/tbody><\/table><p>\u00a0<\/p><p><span style=\"font-weight: 400;\">We then replace the username field with \u201cREDACTED\u201d:<\/span><\/p><table><tbody><tr><td><span style=\"font-weight: 400;\">\/\/ replace the username field with REDACTED<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><b>set_field<\/b><span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">field<\/span><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201cuser_name\u201d<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">value<\/span><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201cREDACTED\u201d<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">message<\/span><span style=\"font-weight: 400;\">:cloned_mess);<\/span><\/td><\/tr><\/tbody><\/table><h2>Stream Routing<\/h2><p><span style=\"font-weight: 400;\">Before routing and removing from the relevant streams:<\/span><\/p><table><tbody><tr><td><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\">\/\/ route into Auditbeat Redacted stream<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><b>route_to_stream<\/b><span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">id<\/span><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201c637e24115833463dd73bf617\u201d<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">message<\/span><span style=\"font-weight: 400;\">:cloned_mess, <\/span><span style=\"font-weight: 400;\">remove_from_default<\/span><span style=\"font-weight: 400;\">:true);<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><span style=\"font-weight: 400;\">\/\/ remove from original stream<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\">\u00a0 \u00a0 <\/span><b>remove_from_stream<\/b><span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">id<\/span><span style=\"font-weight: 400;\">:<\/span><span style=\"font-weight: 400;\">\u201c638f5d7cacb74d540a215aa9\u201d<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">message<\/span><span style=\"font-weight: 400;\">:cloned_mess);<\/span><span style=\"font-weight: 400;\"><br \/><\/span><span style=\"font-weight: 400;\"><br \/><\/span><b>end<\/b><\/td><\/tr><\/tbody><\/table><p>\u00a0<\/p><p><span style=\"font-weight: 400;\">Once we have written the rule, we need to apply it to our Auditbeat stream. Create a new pipeline, ensure you have selected the relevant stream in the Pipeline Connections, and apply the rule at an appropriate stage. In my case I only have 1 rule so I am applying it at Stage 0:<\/span><\/p><p><picture class=\"aligncenter wp-image-11827 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture3.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11827 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture3.png\" alt=\"redacting message fields pipeline\" width=\"624\" height=\"297\" \/><\/picture><\/p><h2>Search And Share<\/h2><p><span style=\"font-weight: 400;\">If we now go to the Search page, we should be able to see the redacted and non-redacted fields when switching between the <\/span><i><span style=\"font-weight: 400;\">Auditbeat <\/span><\/i><span style=\"font-weight: 400;\">stream and the <\/span><i><span style=\"font-weight: 400;\">Auditbeat Redacted<\/span><\/i><span style=\"font-weight: 400;\"> stream:<\/span><\/p><p><picture class=\"aligncenter wp-image-11828 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture4.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11828 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture4.png\" alt=\"Search and Share\" width=\"624\" height=\"167\" \/><\/picture><\/p><p><picture class=\"aligncenter wp-image-11829 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture5.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11829 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture5.png\" alt=\"search and share\" width=\"624\" height=\"205\" \/><\/picture><\/p><p><span style=\"font-weight: 400;\">We can now share these streams out with the relevant user accounts. In my example I have created a test account of an analyst who is only allowed to view the REDACTED stream. On the Streams page I can click on Share and assign this user Viewer rights to this stream:<\/span><\/p><p><picture class=\"aligncenter wp-image-11830 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture6.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11830 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture6.png\" alt=\"\" width=\"624\" height=\"53\" \/><\/picture><\/p><p><picture class=\"aligncenter wp-image-11831 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture7.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11831 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture7.png\" alt=\"Redacting message fields and sharing the information\" width=\"624\" height=\"503\" \/><\/picture><\/p><p><span style=\"font-weight: 400;\">If we log in under this user, you can see that they only have access to the Auditbeat Redacted stream:<\/span><\/p><p><picture class=\"aligncenter wp-image-11832 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture8.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11832 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture8.png\" alt=\"redacting message fields stream\" width=\"624\" height=\"151\" \/><\/picture><\/p><p><picture class=\"aligncenter wp-image-11833 size-full\"> <source srcset=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture9.png.webp\" type=\"image\/webp\" \/><\/picture> <picture class=\"aligncenter wp-image-11833 size-full\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/Picture9.png\" alt=\"redacting message fields\" width=\"624\" height=\"189\" \/><\/picture><\/p><h2>Additional Thoughts<\/h2><p><span style=\"font-weight: 400;\">Finally, with Graylog Operations and Graylog Security, you will be able to audit which users are accessing sensitive data inside of Graylog for even more control and oversight.<\/span><\/p><p><span style=\"font-weight: 400;\">As you can see, processing pipelines are a very powerful way to modify, enrich and filter your log messages. If there are particularly novel or complex pipelines that you think would be useful to the rest of the community, please share them on the Graylog Marketplace.<\/span><\/p><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2004c86 elementor-widget elementor-widget-shortcode\" data-id=\"2004c86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n\t\t<div data-elementor-type=\"page\" data-elementor-id=\"93504\" class=\"elementor elementor-93504\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6461a578 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"6461a578\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f063c39\" data-id=\"2f063c39\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-14e1df2a elementor-widget elementor-widget-text-editor\" data-id=\"14e1df2a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong>About Graylog\u00a0\u00a0<\/strong><br \/>At Graylog, our vision is a secure digital world where organizations of all sizes can effectively guard against cyber threats. We\u2019re committed to turning this vision into reality by providing Threat Detection &amp; Response that sets the standard for excellence. Our cloud-native architecture delivers SIEM, API Security, and Enterprise Log Management solutions that are not just efficient and effective\u2014whether hosted by us, on-premises, or in your cloud\u2014but also deliver a fantastic Analyst Experience at the lowest total cost of ownership. We aim to equip security analysts with the best tools for the job, empowering every organization to stand resilient in the ever-evolving cybersecurity landscape.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-elementor-type=\"page\" data-elementor-id=\"18103\" class=\"elementor elementor-18103\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-748947f elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"748947f\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[{&quot;jet_parallax_layout_image&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;_id&quot;:&quot;c4f773e&quot;,&quot;jet_parallax_layout_image_tablet&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_image_mobile&quot;:{&quot;url&quot;:&quot;&quot;,&quot;id&quot;:&quot;&quot;,&quot;size&quot;:&quot;&quot;},&quot;jet_parallax_layout_speed&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:50,&quot;sizes&quot;:[]},&quot;jet_parallax_layout_type&quot;:&quot;scroll&quot;,&quot;jet_parallax_layout_direction&quot;:&quot;1&quot;,&quot;jet_parallax_layout_fx_direction&quot;:null,&quot;jet_parallax_layout_z_index&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x&quot;:50,&quot;jet_parallax_layout_bg_x_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_x_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y&quot;:50,&quot;jet_parallax_layout_bg_y_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_y_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size&quot;:&quot;auto&quot;,&quot;jet_parallax_layout_bg_size_tablet&quot;:&quot;&quot;,&quot;jet_parallax_layout_bg_size_mobile&quot;:&quot;&quot;,&quot;jet_parallax_layout_animation_prop&quot;:&quot;transform&quot;,&quot;jet_parallax_layout_on&quot;:[&quot;desktop&quot;,&quot;tablet&quot;]}]}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7995c19\" data-id=\"7995c19\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a437045 elementor-widget elementor-widget-image-box\" data-id=\"a437045\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-image-box-wrapper\"><div class=\"elementor-image-box-content\"><h3 class=\"elementor-image-box-title\">About Version 2 Digital<\/h3><p class=\"elementor-image-box-description\">Version 2 Digital is one of the most dynamic IT companies in Asia. The company distributes a wide range of IT products across various areas including cyber security, cloud, data protection, end points, infrastructures, system monitoring, storage, networking, business productivity and communication products.\n<br><br>\nThrough an extensive network of channels, point of sales, resellers, and partnership companies, Version 2 offers quality products and services which are highly acclaimed in the market. Its customers cover a wide spectrum which include Global 1000 enterprises, regional listed companies, different vertical industries, public utilities, Government, a vast number of successful SMEs, and consumers in various Asian cities.<\/p><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Many organizations today have strict data privacy regul [&hellip;]<\/p>","protected":false},"author":149011790,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1303,1305,61],"tags":[1304,1077],"class_list":["post-101054","post","type-post","status-publish","format-standard","hentry","category-graylog","category-1305","category-press-release","tag-graylog","tag-1077"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Redacting Message Fields for Privacy Purposes - Version 2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Redacting Message Fields for Privacy Purposes - Version 2\" \/>\n<meta property=\"og:description\" content=\"Many organizations today have strict data privacy regul [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/\" \/>\n<meta property=\"og:site_name\" content=\"Version 2\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-15T07:53:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp\" \/>\n<meta name=\"author\" content=\"tracylamv2\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"tracylamv2\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2025\\\/01\\\/redacting-message-fields-for-privacy-purposes\\\/\"},\"author\":{\"name\":\"tracylamv2\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/011bc7c3731c930bcfeecd52fefb6365\"},\"headline\":\"Redacting Message Fields for Privacy Purposes\",\"datePublished\":\"2025-01-15T07:53:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/2025\\\/01\\\/redacting-message-fields-for-privacy-purposes\\\/\"},\"wordCount\":1020,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/graylog.org\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp\",\"keywords\":[\"Graylog\",\"2025\"],\"articleSection\":[\"Graylog\",\"2025\",\"Press Release\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/version-2.com\\\/2025\\\/01\\\/redacting-message-fields-for-privacy-purposes\\\/\",\"url\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/\",\"name\":\"Redacting Message Fields for Privacy Purposes - Version 2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/graylog.org\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp\",\"datePublished\":\"2025-01-15T07:53:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/graylog.org\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp\",\"contentUrl\":\"https:\\\/\\\/graylog.org\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/graylog.org\\\/post\\\/redacting-message-fields-for-privacy-purposes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9801\",\"item\":\"https:\\\/\\\/version-2.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Redacting Message Fields for Privacy Purposes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"name\":\"Version 2\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/version-2.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#organization\",\"name\":\"Version 2\",\"url\":\"https:\\\/\\\/version-2.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/version-2.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1\",\"width\":1795,\"height\":335,\"caption\":\"Version 2\"},\"image\":{\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/version-2.com\\\/zh\\\/#\\\/schema\\\/person\\\/011bc7c3731c930bcfeecd52fefb6365\",\"name\":\"tracylamv2\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g\",\"caption\":\"tracylamv2\"},\"url\":\"https:\\\/\\\/version-2.com\\\/en\\\/author\\\/tracylamv2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Redacting Message Fields for Privacy Purposes - Version 2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/","og_locale":"en_US","og_type":"article","og_title":"Redacting Message Fields for Privacy Purposes - Version 2","og_description":"Many organizations today have strict data privacy regul [&hellip;]","og_url":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/","og_site_name":"Version 2","article_published_time":"2025-01-15T07:53:01+00:00","og_image":[{"url":"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp","type":"","width":"","height":""}],"author":"tracylamv2","twitter_card":"summary_large_image","twitter_misc":{"Written by":"tracylamv2","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#article","isPartOf":{"@id":"https:\/\/version-2.com\/2025\/01\/redacting-message-fields-for-privacy-purposes\/"},"author":{"name":"tracylamv2","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/011bc7c3731c930bcfeecd52fefb6365"},"headline":"Redacting Message Fields for Privacy Purposes","datePublished":"2025-01-15T07:53:01+00:00","mainEntityOfPage":{"@id":"https:\/\/version-2.com\/2025\/01\/redacting-message-fields-for-privacy-purposes\/"},"wordCount":1020,"commentCount":0,"publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"image":{"@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#primaryimage"},"thumbnailUrl":"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp","keywords":["Graylog","2025"],"articleSection":["Graylog","2025","Press Release"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/version-2.com\/2025\/01\/redacting-message-fields-for-privacy-purposes\/","url":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/","name":"Redacting Message Fields for Privacy Purposes - Version 2","isPartOf":{"@id":"https:\/\/version-2.com\/zh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#primaryimage"},"image":{"@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#primaryimage"},"thumbnailUrl":"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp","datePublished":"2025-01-15T07:53:01+00:00","breadcrumb":{"@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#primaryimage","url":"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp","contentUrl":"https:\/\/graylog.org\/wp-content\/uploads\/2022\/12\/2305_GLLabs_MyFirstLoadBalancer20.jpg.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/graylog.org\/post\/redacting-message-fields-for-privacy-purposes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9801","item":"https:\/\/version-2.com\/"},{"@type":"ListItem","position":2,"name":"Redacting Message Fields for Privacy Purposes"}]},{"@type":"WebSite","@id":"https:\/\/version-2.com\/zh\/#website","url":"https:\/\/version-2.com\/zh\/","name":"Version 2","description":"","publisher":{"@id":"https:\/\/version-2.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/version-2.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/version-2.com\/zh\/#organization","name":"Version 2","url":"https:\/\/version-2.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","contentUrl":"https:\/\/i0.wp.com\/version-2.com\/wp-content\/uploads\/2020\/08\/v2-hk-hor-4.png?fit=1795%2C335&ssl=1","width":1795,"height":335,"caption":"Version 2"},"image":{"@id":"https:\/\/version-2.com\/zh\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/version-2.com\/zh\/#\/schema\/person\/011bc7c3731c930bcfeecd52fefb6365","name":"tracylamv2","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9d01d79cbfd8b2e878f5d701a362cc9fca466d33fec977b59706c23c1a2db15c?s=96&d=identicon&r=g","caption":"tracylamv2"},"url":"https:\/\/version-2.com\/en\/author\/tracylamv2\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbQRKm-qhU","post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/101054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/users\/149011790"}],"replies":[{"embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/comments?post=101054"}],"version-history":[{"count":7,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/101054\/revisions"}],"predecessor-version":[{"id":101061,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/posts\/101054\/revisions\/101061"}],"wp:attachment":[{"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/media?parent=101054"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/categories?post=101054"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/version-2.com\/en\/wp-json\/wp\/v2\/tags?post=101054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}