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