userdb: mark PII fields as sensitive in user records

Mark realName, emailAddress, and location as sensitive in JSON user
records so that they are excluded from debug log output. These fields
contain personally identifiable information that should not be leaked
in logs, which are generally more accessible than the user database
itself.
This commit is contained in:
Dylan M. Taylor
2026-03-11 10:22:27 +09:00
committed by Yu Watanabe
parent a1d806efcb
commit c72860d5f6
+11 -4
View File
@@ -1491,10 +1491,17 @@ int user_group_record_mangle(
if (USER_RECORD_STRIP_MASK(load_flags) == _USER_RECORD_MASK_MAX) /* strip everything? */
return json_log(v, json_flags, SYNTHETIC_ERRNO(EINVAL), "Stripping everything from record, refusing.");
/* Extra safety: mark the "secret" part (that contains literal passwords and such) as sensitive, so
* that it is not included in debug output and erased from memory when we are done. We do this for
* any record that passes through here. */
sd_json_variant_sensitive(sd_json_variant_by_key(v, "secret"));
/* Extra safety: mark sensitive parts of the JSON as such, so that they are not included in debug
* output and erased from memory when we are done. We do this for any record that passes through here. */
FOREACH_STRING(key,
/* This section contains literal passwords and such in plain text */
"secret",
/* Personally Identifiable Information (PII) — avoid leaking in logs */
"realName",
"location",
"emailAddress")
sd_json_variant_sensitive(sd_json_variant_by_key(v, key));
/* Check if we have the special sections and if they match our flags set */
FOREACH_ELEMENT(i, mask_field) {