Skip to content

redact: decide whether a unix group name is an identity, and treat it the same in both places #69

Description

@Behnam-RK

control.group ships unredacted in a default bundle, in two entries:

// config.json
"control": { "enabled": true, "group": "vpnadmins" }
// doctor.json
"summary": "reachable (…, group \"vpnadmins\") — routine ops need no password."

This is filed as a question rather than a bug because both answers are defensible and the wrong move is to fix one place and not the other.

The case for leaving it

A unix group is a host or organisation attribute, not a VPN provider and not a person. On macOS the default is admin, which names nobody. Redacting it makes the control check's diagnosis worse — "you are not in the profile-1 group" is not an instruction anyone can act on, and the check's whole purpose is to tell you which group to join.

The case for redacting it

A site-chosen group name can carry an organisation (acme-vpn-ops), and an --include-network bundle is the one that already warns about identity. The bundle's README lists what is replaced; a group name is the kind of thing a reader would assume was covered.

What must not happen

Redacting it in doctor's prose but not in config.json, or the reverse. The two entries carry the same value, and a reader comparing them would see one token and one name for the same thing — which is exactly the "one identifier, two tokens" confusion internal/redact/json.go's free comment exists to prevent.

If the answer is "redact it"

It needs a key-aware case, not the literal replay — the same shape ADR-0016 settled for everything else. config.json's control.group already has a key (group); doctor's control check would need to carry it as a field the way doctorDetail now carries iface/profile/endpoint, rather than interpolating it into Summary.

Raised repeatedly during the review loop on #67 and deliberately left out of that PR: a one-sided fix would have been incoherent, and it is a product decision rather than a defect.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions