Skip to main content

saluki_components/config_registry/datadog/
trace_obfuscation.rs

1//! Annotations for trace obfuscation transform configuration keys.
2use crate::config_registry::{
3    generated::schema, structs, Pipeline, PipelineAffinity, SalukiAnnotation, Schema, SchemaEntry, SupportLevel,
4    ValueType,
5};
6
7// Custom statics for SQL obfuscation fields: no corresponding entries exist in the
8// vendored Agent schema, so these are defined manually with the correct paths.
9
10static SQL_DBMS: SchemaEntry = SchemaEntry {
11    schema: Schema::Saluki,
12    yaml_path: "apm_config.obfuscation.sql.dbms",
13    env_vars: &[],
14    value_type: ValueType::String,
15    default: None,
16};
17
18static SQL_DOLLAR_QUOTED: SchemaEntry = SchemaEntry {
19    schema: Schema::Saluki,
20    yaml_path: "apm_config.obfuscation.sql.dollar_quoted_func",
21    env_vars: &[],
22    value_type: ValueType::Bool,
23    default: None,
24};
25
26static SQL_KEEP_ALIAS: SchemaEntry = SchemaEntry {
27    schema: Schema::Saluki,
28    yaml_path: "apm_config.obfuscation.sql.keep_sql_alias",
29    env_vars: &[],
30    value_type: ValueType::Bool,
31    default: None,
32};
33
34static SQL_REPLACE_DIGITS: SchemaEntry = SchemaEntry {
35    schema: Schema::Saluki,
36    yaml_path: "apm_config.obfuscation.sql.replace_digits",
37    env_vars: &[],
38    value_type: ValueType::Bool,
39    default: None,
40};
41
42static SQL_TABLE_NAMES: SchemaEntry = SchemaEntry {
43    schema: Schema::Saluki,
44    yaml_path: "apm_config.obfuscation.sql.table_names",
45    env_vars: &[],
46    value_type: ValueType::Bool,
47    default: None,
48};
49
50crate::declare_annotations! {
51    /// `apm_config.obfuscation.credit_cards.enabled`
52    CONFIG_CREDIT_CARDS_ENABLED = SalukiAnnotation {
53        schema: &schema::APM_CONFIG_OBFUSCATION_CREDIT_CARDS_ENABLED,
54        support_level: SupportLevel::Full,
55        additional_yaml_paths: &[],
56        env_var_override: None,
57        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
58        value_type_override: None,
59        test_json: Some("true"),
60        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
61    };
62
63    /// `apm_config.obfuscation.credit_cards.keep_values`
64    CONFIG_CREDIT_CARDS_KEEP_VALUES = SalukiAnnotation {
65        schema: &schema::APM_CONFIG_OBFUSCATION_CREDIT_CARDS_KEEP_VALUES,
66        support_level: SupportLevel::Full,
67        additional_yaml_paths: &[],
68        env_var_override: None,
69        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
70        value_type_override: None,
71        test_json: None,
72        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
73    };
74
75    /// `apm_config.obfuscation.credit_cards.luhn`
76    CONFIG_CREDIT_CARDS_LUHN = SalukiAnnotation {
77        schema: &schema::APM_CONFIG_OBFUSCATION_CREDIT_CARDS_LUHN,
78        support_level: SupportLevel::Full,
79        additional_yaml_paths: &[],
80        env_var_override: None,
81        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
82        value_type_override: None,
83        test_json: None,
84        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
85    };
86
87    /// `apm_config.obfuscation.elasticsearch.enabled`
88    CONFIG_ES_ENABLED = SalukiAnnotation {
89        schema: &schema::APM_CONFIG_OBFUSCATION_ELASTICSEARCH_ENABLED,
90        support_level: SupportLevel::Full,
91        additional_yaml_paths: &[],
92        env_var_override: None,
93        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
94        value_type_override: None,
95        test_json: Some("true"),
96        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
97    };
98
99    /// `apm_config.obfuscation.elasticsearch.keep_values`
100    CONFIG_ES_KEEP_VALUES = SalukiAnnotation {
101        schema: &schema::APM_CONFIG_OBFUSCATION_ELASTICSEARCH_KEEP_VALUES,
102        support_level: SupportLevel::Full,
103        additional_yaml_paths: &[],
104        env_var_override: None,
105        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
106        value_type_override: None,
107        test_json: None,
108        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
109    };
110
111    /// `apm_config.obfuscation.elasticsearch.obfuscate_sql_values`
112    CONFIG_ES_OBFUSCATE_SQL_VALUES = SalukiAnnotation {
113        schema: &schema::APM_CONFIG_OBFUSCATION_ELASTICSEARCH_OBFUSCATE_SQL_VALUES,
114        support_level: SupportLevel::Full,
115        additional_yaml_paths: &[],
116        env_var_override: None,
117        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
118        value_type_override: None,
119        test_json: None,
120        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
121    };
122
123    /// `apm_config.obfuscation.http.remove_paths_with_digits`
124    CONFIG_HTTP_REMOVE_PATH_DIGITS = SalukiAnnotation {
125        schema: &schema::APM_CONFIG_OBFUSCATION_HTTP_REMOVE_PATHS_WITH_DIGITS,
126        support_level: SupportLevel::Full,
127        additional_yaml_paths: &[],
128        env_var_override: None,
129        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
130        value_type_override: None,
131        test_json: None,
132        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
133    };
134
135    /// `apm_config.obfuscation.http.remove_query_string`
136    CONFIG_HTTP_REMOVE_QUERY_STRING = SalukiAnnotation {
137        schema: &schema::APM_CONFIG_OBFUSCATION_HTTP_REMOVE_QUERY_STRING,
138        support_level: SupportLevel::Full,
139        additional_yaml_paths: &[],
140        env_var_override: None,
141        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
142        value_type_override: None,
143        test_json: None,
144        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
145    };
146
147    /// `apm_config.obfuscation.memcached.enabled`
148    CONFIG_MEMCACHED_ENABLED = SalukiAnnotation {
149        schema: &schema::APM_CONFIG_OBFUSCATION_MEMCACHED_ENABLED,
150        support_level: SupportLevel::Full,
151        additional_yaml_paths: &[],
152        env_var_override: None,
153        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
154        value_type_override: None,
155        test_json: Some("true"),
156        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
157    };
158
159    /// `apm_config.obfuscation.memcached.keep_command`
160    CONFIG_MEMCACHED_KEEP_COMMAND = SalukiAnnotation {
161        schema: &schema::APM_CONFIG_OBFUSCATION_MEMCACHED_KEEP_COMMAND,
162        support_level: SupportLevel::Full,
163        additional_yaml_paths: &[],
164        env_var_override: None,
165        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
166        value_type_override: None,
167        test_json: None,
168        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
169    };
170
171    /// `apm_config.obfuscation.mongodb.enabled`
172    CONFIG_MONGO_ENABLED = SalukiAnnotation {
173        schema: &schema::APM_CONFIG_OBFUSCATION_MONGODB_ENABLED,
174        support_level: SupportLevel::Full,
175        additional_yaml_paths: &[],
176        env_var_override: None,
177        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
178        value_type_override: None,
179        test_json: Some("true"),
180        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
181    };
182
183    /// `apm_config.obfuscation.mongodb.keep_values`
184    CONFIG_MONGO_KEEP_VALUES = SalukiAnnotation {
185        schema: &schema::APM_CONFIG_OBFUSCATION_MONGODB_KEEP_VALUES,
186        support_level: SupportLevel::Full,
187        additional_yaml_paths: &[],
188        env_var_override: None,
189        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
190        value_type_override: None,
191        test_json: None,
192        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
193    };
194
195    /// `apm_config.obfuscation.mongodb.obfuscate_sql_values`
196    CONFIG_MONGO_OBFUSCATE_SQL_VALUES = SalukiAnnotation {
197        schema: &schema::APM_CONFIG_OBFUSCATION_MONGODB_OBFUSCATE_SQL_VALUES,
198        support_level: SupportLevel::Full,
199        additional_yaml_paths: &[],
200        env_var_override: None,
201        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
202        value_type_override: None,
203        test_json: None,
204        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
205    };
206
207    /// `apm_config.obfuscation.opensearch.enabled`
208    CONFIG_OPEN_SEARCH_ENABLED = SalukiAnnotation {
209        schema: &schema::APM_CONFIG_OBFUSCATION_OPENSEARCH_ENABLED,
210        support_level: SupportLevel::Full,
211        additional_yaml_paths: &[],
212        env_var_override: None,
213        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
214        value_type_override: None,
215        test_json: Some("true"),
216        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
217    };
218
219    /// `apm_config.obfuscation.opensearch.keep_values`
220    CONFIG_OPEN_SEARCH_KEEP_VALUES = SalukiAnnotation {
221        schema: &schema::APM_CONFIG_OBFUSCATION_OPENSEARCH_KEEP_VALUES,
222        support_level: SupportLevel::Full,
223        additional_yaml_paths: &[],
224        env_var_override: None,
225        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
226        value_type_override: None,
227        test_json: None,
228        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
229    };
230
231    /// `apm_config.obfuscation.opensearch.obfuscate_sql_values`
232    CONFIG_OPEN_SEARCH_OBFUSCATE_SQL_VALUES = SalukiAnnotation {
233        schema: &schema::APM_CONFIG_OBFUSCATION_OPENSEARCH_OBFUSCATE_SQL_VALUES,
234        support_level: SupportLevel::Full,
235        additional_yaml_paths: &[],
236        env_var_override: None,
237        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
238        value_type_override: None,
239        test_json: None,
240        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
241    };
242
243    /// `apm_config.obfuscation.redis.enabled`
244    CONFIG_REDIS_ENABLED = SalukiAnnotation {
245        schema: &schema::APM_CONFIG_OBFUSCATION_REDIS_ENABLED,
246        support_level: SupportLevel::Full,
247        additional_yaml_paths: &[],
248        env_var_override: None,
249        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
250        value_type_override: None,
251        test_json: Some("true"),
252        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
253    };
254
255    /// `apm_config.obfuscation.redis.remove_all_args`
256    CONFIG_REDIS_REMOVE_ALL_ARGS = SalukiAnnotation {
257        schema: &schema::APM_CONFIG_OBFUSCATION_REDIS_REMOVE_ALL_ARGS,
258        support_level: SupportLevel::Full,
259        additional_yaml_paths: &[],
260        env_var_override: None,
261        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
262        value_type_override: None,
263        test_json: None,
264        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
265    };
266
267    /// `apm_config.obfuscation.sql.dbms`
268    CONFIG_SQL_DBMS = SalukiAnnotation {
269        schema: &SQL_DBMS,
270        support_level: SupportLevel::Full,
271        additional_yaml_paths: &[],
272        env_var_override: None,
273        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
274        value_type_override: None,
275        test_json: None,
276        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
277    };
278
279    /// `apm_config.obfuscation.sql.dollar_quoted_func`
280    CONFIG_SQL_DOLLAR_QUOTED_FUNC = SalukiAnnotation {
281        schema: &SQL_DOLLAR_QUOTED,
282        support_level: SupportLevel::Full,
283        additional_yaml_paths: &[],
284        env_var_override: None,
285        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
286        value_type_override: None,
287        test_json: None,
288        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
289    };
290
291    /// `apm_config.obfuscation.sql.keep_sql_alias`
292    CONFIG_SQL_KEEP_SQL_ALIAS = SalukiAnnotation {
293        schema: &SQL_KEEP_ALIAS,
294        support_level: SupportLevel::Full,
295        additional_yaml_paths: &[],
296        env_var_override: None,
297        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
298        value_type_override: None,
299        test_json: None,
300        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
301    };
302
303    /// `apm_config.obfuscation.sql.replace_digits`
304    CONFIG_SQL_REPLACE_DIGITS = SalukiAnnotation {
305        schema: &SQL_REPLACE_DIGITS,
306        support_level: SupportLevel::Full,
307        additional_yaml_paths: &[],
308        env_var_override: None,
309        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
310        value_type_override: None,
311        test_json: None,
312        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
313    };
314
315    /// `apm_config.obfuscation.sql.table_names`
316    CONFIG_SQL_TABLE_NAMES = SalukiAnnotation {
317        schema: &SQL_TABLE_NAMES,
318        support_level: SupportLevel::Full,
319        additional_yaml_paths: &[],
320        env_var_override: None,
321        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
322        value_type_override: None,
323        test_json: None,
324        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
325    };
326
327    /// `apm_config.obfuscation.valkey.enabled`
328    CONFIG_VALKEY_ENABLED = SalukiAnnotation {
329        schema: &schema::APM_CONFIG_OBFUSCATION_VALKEY_ENABLED,
330        support_level: SupportLevel::Full,
331        additional_yaml_paths: &[],
332        env_var_override: None,
333        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
334        value_type_override: None,
335        test_json: Some("true"),
336        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
337    };
338
339    /// `apm_config.obfuscation.valkey.remove_all_args`
340    CONFIG_VALKEY_REMOVE_ALL_ARGS = SalukiAnnotation {
341        schema: &schema::APM_CONFIG_OBFUSCATION_VALKEY_REMOVE_ALL_ARGS,
342        support_level: SupportLevel::Full,
343        additional_yaml_paths: &[],
344        env_var_override: None,
345        used_by: &[structs::TRACE_OBFUSCATION_CONFIGURATION],
346        value_type_override: None,
347        test_json: None,
348        pipeline_affinity: PipelineAffinity::Pipelines(&[Pipeline::Traces]),
349    };
350}