qubit_redact/policy/field/
sensitive_field_preset.rs1use super::Sensitivity;
11
12#[non_exhaustive]
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
15pub enum SensitiveFieldPreset {
16 Credentials,
18 CredentialContainers,
20 AuthTokens,
22 Http,
24 Session,
26}
27
28const CREDENTIALS_FIELDS: [(&str, Sensitivity); 17] = [
30 ("password", Sensitivity::Secret),
31 ("password_confirmation", Sensitivity::Secret),
32 ("passwd", Sensitivity::Secret),
33 ("passphrase", Sensitivity::Secret),
34 ("pgpassword", Sensitivity::Secret),
35 ("secret", Sensitivity::Secret),
36 ("client_secret", Sensitivity::Secret),
37 ("credential", Sensitivity::Secret),
38 ("credentials", Sensitivity::Secret),
39 ("private_key", Sensitivity::Secret),
40 ("privatekey", Sensitivity::Secret),
41 ("security_key", Sensitivity::Secret),
42 ("secret_key", Sensitivity::Secret),
43 ("secret_access_key", Sensitivity::Secret),
44 ("access_key", Sensitivity::High),
45 ("accesskey", Sensitivity::High),
46 ("access_key_id", Sensitivity::Medium),
47];
48
49const CREDENTIAL_CONTAINER_FIELDS: [(&str, Sensitivity); 11] = [
51 ("dsn", Sensitivity::Secret),
52 ("database_dsn", Sensitivity::Secret),
53 ("redis_url", Sensitivity::Secret),
54 ("mongodb_uri", Sensitivity::Secret),
55 ("mongodb_url", Sensitivity::Secret),
56 ("amqp_url", Sensitivity::Secret),
57 ("broker_url", Sensitivity::Secret),
58 ("http_proxy", Sensitivity::Secret),
59 ("https_proxy", Sensitivity::Secret),
60 ("all_proxy", Sensitivity::Secret),
61 ("docker_auth_config", Sensitivity::Secret),
62];
63
64const AUTH_TOKEN_FIELDS: [(&str, Sensitivity); 11] = [
66 ("api_key", Sensitivity::High),
67 ("apikey", Sensitivity::High),
68 ("x_api_key", Sensitivity::High),
69 ("token", Sensitivity::High),
70 ("access_token", Sensitivity::High),
71 ("refresh_token", Sensitivity::High),
72 ("id_token", Sensitivity::High),
73 ("jwt", Sensitivity::High),
74 ("jwt_token", Sensitivity::High),
75 ("auth_token", Sensitivity::High),
76 ("bearer", Sensitivity::High),
77];
78
79const HTTP_FIELDS: [(&str, Sensitivity); 4] = [
81 ("authorization", Sensitivity::High),
82 ("proxy_authorization", Sensitivity::High),
83 ("cookie", Sensitivity::High),
84 ("set_cookie", Sensitivity::High),
85];
86
87const SESSION_FIELDS: [(&str, Sensitivity); 3] = [
89 ("session", Sensitivity::High),
90 ("session_id", Sensitivity::High),
91 ("session_token", Sensitivity::High),
92];
93
94impl SensitiveFieldPreset {
95 #[inline(always)]
101 #[must_use]
102 pub const fn fields(self) -> &'static [(&'static str, Sensitivity)] {
103 match self {
104 Self::Credentials => &CREDENTIALS_FIELDS,
105 Self::CredentialContainers => &CREDENTIAL_CONTAINER_FIELDS,
106 Self::AuthTokens => &AUTH_TOKEN_FIELDS,
107 Self::Http => &HTTP_FIELDS,
108 Self::Session => &SESSION_FIELDS,
109 }
110 }
111}