policy/v2: recapture SSH data captures

Every ssh_results row captured again from SaaS. SaaS now maps login "0"
to no local user in rules that map root, quotes a refused checkPeriod as
written and rewords its tailnet-domain refusal.
This commit is contained in:
Kristoffer Dalby committed 2026-11-02 16:09:00 +01:00
1 parent 363ba7be44
commit 5b578fe95f
112 files changed
+503034 -423051

No files matched your search

@@ -128,9 +128,138 @@ var sshSkipReasons = map[string]string{
"ssh-b5": "headscale has no passkey authentication; user:*@passkey wildcard unsupported",
"ssh-d10": "headscale has no passkey authentication; user:*@passkey wildcard unsupported",
"ssh-duplicate-rules/beedrill/uid-zero": sshUIDZero,
"ssh-duplicate-rules/kakuna/uid-zero": sshUIDZero,
"ssh-equal-src-aliases/beedrill/uid-zero": sshUIDZero,
"ssh-a1/bulbasaur/uid-zero": sshUIDZero,
"ssh-a1/ivysaur/uid-zero": sshUIDZero,
"ssh-a1/venusaur/uid-zero": sshUIDZero,
"ssh-a2/bulbasaur/uid-zero": sshUIDZero,
"ssh-a2/ivysaur/uid-zero": sshUIDZero,
"ssh-a2/venusaur/uid-zero": sshUIDZero,
"ssh-a3/bulbasaur/uid-zero": sshUIDZero,
"ssh-a3/ivysaur/uid-zero": sshUIDZero,
"ssh-a3/venusaur/uid-zero": sshUIDZero,
"ssh-a4/beedrill/uid-zero": sshUIDZero,
"ssh-a5/beedrill/uid-zero": sshUIDZero,
"ssh-a6/bulbasaur/uid-zero": sshUIDZero,
"ssh-a6/ivysaur/uid-zero": sshUIDZero,
"ssh-a6/venusaur/uid-zero": sshUIDZero,
"ssh-a7/bulbasaur/uid-zero": sshUIDZero,
"ssh-a7/ivysaur/uid-zero": sshUIDZero,
"ssh-a7/venusaur/uid-zero": sshUIDZero,
"ssh-a8/bulbasaur/uid-zero": sshUIDZero,
"ssh-a8/ivysaur/uid-zero": sshUIDZero,
"ssh-a8/venusaur/uid-zero": sshUIDZero,
"ssh-acceptenv-null/beedrill/uid-zero": sshUIDZero,
"ssh-acceptenv-omitted/beedrill/uid-zero": sshUIDZero,
"ssh-b1/beedrill/uid-zero": sshUIDZero,
"ssh-b2/beedrill/uid-zero": sshUIDZero,
"ssh-b3/beedrill/uid-zero": sshUIDZero,
"ssh-b6/beedrill/uid-zero": sshUIDZero,
"ssh-c1/bulbasaur/uid-zero": sshUIDZero,
"ssh-c1/ivysaur/uid-zero": sshUIDZero,
"ssh-c1/venusaur/uid-zero": sshUIDZero,
"ssh-c2/beedrill/uid-zero": sshUIDZero,
"ssh-c3/ivysaur/uid-zero": sshUIDZero,
"ssh-c4/beedrill/uid-zero": sshUIDZero,
"ssh-c4/kakuna/uid-zero": sshUIDZero,
"ssh-checkperiod-null/beedrill/uid-zero": sshUIDZero,
"ssh-d11/beedrill/uid-zero": sshUIDZero,
"ssh-d11/bulbasaur/uid-zero": sshUIDZero,
"ssh-d11/ivysaur/uid-zero": sshUIDZero,
"ssh-d11/venusaur/uid-zero": sshUIDZero,
"ssh-d12/beedrill/uid-zero": sshUIDZero,
"ssh-d12/bulbasaur/uid-zero": sshUIDZero,
"ssh-d12/ivysaur/uid-zero": sshUIDZero,
"ssh-d12/venusaur/uid-zero": sshUIDZero,
"ssh-d2/beedrill/uid-zero": sshUIDZero,
"ssh-d2/bulbasaur/uid-zero": sshUIDZero,
"ssh-d2/ivysaur/uid-zero": sshUIDZero,
"ssh-d2/venusaur/uid-zero": sshUIDZero,
"ssh-d3/beedrill/uid-zero": sshUIDZero,
"ssh-d3/bulbasaur/uid-zero": sshUIDZero,
"ssh-d3/ivysaur/uid-zero": sshUIDZero,
"ssh-d3/venusaur/uid-zero": sshUIDZero,
"ssh-d4/beedrill/uid-zero": sshUIDZero,
"ssh-d4/bulbasaur/uid-zero": sshUIDZero,
"ssh-d4/ivysaur/uid-zero": sshUIDZero,
"ssh-d4/venusaur/uid-zero": sshUIDZero,
"ssh-d5/beedrill/uid-zero": sshUIDZero,
"ssh-d5/bulbasaur/uid-zero": sshUIDZero,
"ssh-d5/ivysaur/uid-zero": sshUIDZero,
"ssh-d5/venusaur/uid-zero": sshUIDZero,
"ssh-d6/beedrill/uid-zero": sshUIDZero,
"ssh-d6/bulbasaur/uid-zero": sshUIDZero,
"ssh-d6/ivysaur/uid-zero": sshUIDZero,
"ssh-d6/venusaur/uid-zero": sshUIDZero,
"ssh-d7/beedrill/uid-zero": sshUIDZero,
"ssh-d7/bulbasaur/uid-zero": sshUIDZero,
"ssh-d7/ivysaur/uid-zero": sshUIDZero,
"ssh-d7/venusaur/uid-zero": sshUIDZero,
"ssh-d8/bulbasaur/uid-zero": sshUIDZero,
"ssh-d8/ivysaur/uid-zero": sshUIDZero,
"ssh-d8/venusaur/uid-zero": sshUIDZero,
"ssh-d9/bulbasaur/uid-zero": sshUIDZero,
"ssh-d9/ivysaur/uid-zero": sshUIDZero,
"ssh-d9/venusaur/uid-zero": sshUIDZero,
"ssh-dst-trailing-whitespace/beedrill/uid-zero": sshUIDZero,
"ssh-duplicate-rules/beedrill/uid-zero": sshUIDZero,
"ssh-duplicate-rules/kakuna/uid-zero": sshUIDZero,
"ssh-e5/beedrill/uid-zero": sshUIDZero,
"ssh-e5/kakuna/uid-zero": sshUIDZero,
"ssh-e6/beedrill/uid-zero": sshUIDZero,
"ssh-e6/bulbasaur/uid-zero": sshUIDZero,
"ssh-e6/ivysaur/uid-zero": sshUIDZero,
"ssh-e6/venusaur/uid-zero": sshUIDZero,
"ssh-equal-src-aliases/beedrill/uid-zero": sshUIDZero,
"ssh-f1/beedrill/uid-zero": sshUIDZero,
"ssh-f1/bulbasaur/uid-zero": sshUIDZero,
"ssh-f1/ivysaur/uid-zero": sshUIDZero,
"ssh-f1/venusaur/uid-zero": sshUIDZero,
"ssh-f2/beedrill/uid-zero": sshUIDZero,
"ssh-f3/beedrill/uid-zero": sshUIDZero,
"ssh-f3/bulbasaur/uid-zero": sshUIDZero,
"ssh-f3/ivysaur/uid-zero": sshUIDZero,
"ssh-f3/venusaur/uid-zero": sshUIDZero,
"ssh-f4/beedrill/uid-zero": sshUIDZero,
"ssh-f4/bulbasaur/uid-zero": sshUIDZero,
"ssh-f4/ivysaur/uid-zero": sshUIDZero,
"ssh-f4/venusaur/uid-zero": sshUIDZero,
"ssh-f5/beedrill/uid-zero": sshUIDZero,
"ssh-f5/bulbasaur/uid-zero": sshUIDZero,
"ssh-f5/ivysaur/uid-zero": sshUIDZero,
"ssh-f5/venusaur/uid-zero": sshUIDZero,
"ssh-g1/beedrill/uid-zero": sshUIDZero,
"ssh-g2/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-acceptenv-bad-glob/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-acceptenv-glob-shapes/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-action-whitespace/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-checkperiod-exact-max/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-checkperiod-too-short/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-checkperiod-zero/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-autogroup-internet/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-autogroup-member/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-autogroup-self/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-autogroup-tagged/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-group-prefix/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-localpart-empty/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-localpart-no-at/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-localpart-no-domain/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-localpart-no-glob/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-tag-prefix/beedrill/uid-zero": sshUIDZero,
"ssh-malformed-user-whitespace-leading/beedrill/uid-zero": sshUIDZero,
"ssh-many-tags-as-dst/beedrill/uid-zero": sshUIDZero,
"ssh-many-tags-as-dst/kakuna/uid-zero": sshUIDZero,
"ssh-multi-rule-accept-then-check/beedrill/uid-zero": sshUIDZero,
"ssh-multi-rule-check-then-accept/beedrill/uid-zero": sshUIDZero,
"ssh-multi-rule-disjoint-srcs/beedrill/uid-zero": sshUIDZero,
"ssh-multi-rule-overlap-conflicting-acceptenv/beedrill/uid-zero": sshUIDZero,
"ssh-multi-rule-overlap-different-users/beedrill/uid-zero": sshUIDZero,
"ssh-multi-src-multi-dst-multi-user/beedrill/uid-zero": sshUIDZero,
"ssh-multi-src-multi-dst-multi-user/kakuna/uid-zero": sshUIDZero,
"ssh-src-autogroup-tagged-no-tagged-nodes/beedrill/uid-zero": sshUIDZero,
"ssh-src-leading-whitespace/beedrill/uid-zero": sshUIDZero,
"ssh-tab-in-user/beedrill/uid-zero": sshUIDZero,
"ssh-unicode-emoji-user/beedrill/uid-zero": sshUIDZero,
"ssh-unicode-rtl-user/beedrill/uid-zero": sshUIDZero,
}
const sshUIDZero = `SSH_UID_ZERO: SaaS maps login "0" to no local user in every rule; headscale leaves it out`
@@ -145,7 +274,8 @@ var sshRejectSkipReasons = map[string]string{
"ssh-e2": "headscale has no associated-tailnet-domains config; user:*@domain / localpart:*@domain are not domain-validated",
"ssh-malformed-user-localpart-multi-glob": "headscale has no associated-tailnet-domains config; user:*@domain / localpart:*@domain are not domain-validated",
"ssh-check-tag-src/refused": "SSH_CHECK_TAG_SRC: SaaS refuses a check rule with a tag source; headscale accepts it",
"ssh-check-tag-src/refused": "SSH_CHECK_TAG_SRC: SaaS refuses a check rule with a tag source; headscale accepts it",
"ssh-malformed-checkperiod-too-long/message": "SSH_CHECKPERIOD_TEXT: SaaS quotes a refused checkPeriod as written; headscale prints the parsed duration",
}
// TestSSHDataCompat loads every ssh-*.hujson capture, parses the policy
+6288 -4250
View File
File diff suppressed because it is too large. Load diff
+6612 -4574
View File
File diff suppressed because it is too large. Load diff
+6442 -4404
View File
File diff suppressed because it is too large. Load diff
+6558 -4518
View File
File diff suppressed because it is too large. Load diff
+6558 -4506
View File
File diff suppressed because it is too large. Load diff
+6449 -4411
View File
File diff suppressed because it is too large. Load diff
+6511 -4473
View File
File diff suppressed because it is too large. Load diff
+6686 -4648
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+6503 -4463
View File
File diff suppressed because it is too large. Load diff
+6599 -4559
View File
File diff suppressed because it is too large. Load diff
+6618 -4572
View File
File diff suppressed because it is too large. Load diff
+6401 -4319
View File
File diff suppressed because it is too large. Load diff
+6034 -3994
View File
File diff suppressed because it is too large. Load diff
+5968 -3901
View File
File diff suppressed because it is too large. Load diff
+6660 -4607
View File
File diff suppressed because it is too large. Load diff
+6554 -4514
View File
File diff suppressed because it is too large. Load diff
+6264 -4224
View File
File diff suppressed because it is too large. Load diff
+6241 -4203
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+6692 -4636
View File
File diff suppressed because it is too large. Load diff
+6269 -4216
View File
File diff suppressed because it is too large. Load diff
+6524 -4488
View File
File diff suppressed because it is too large. Load diff
+6575 -4539
View File
File diff suppressed because it is too large. Load diff
+6592 -4556
View File
File diff suppressed because it is too large. Load diff
+6151 -4100
View File
File diff suppressed because it is too large. Load diff
+6454 -4407
View File
File diff suppressed because it is too large. Load diff
+6454 -4418
View File
File diff suppressed because it is too large. Load diff
+6286 -4250
View File
File diff suppressed because it is too large. Load diff
+6707 -4671
View File
File diff suppressed because it is too large. Load diff
+6339 -4301
View File
File diff suppressed because it is too large. Load diff
+6612 -4574
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+6357 -4301
View File
File diff suppressed because it is too large. Load diff
+6272 -4216
View File
File diff suppressed because it is too large. Load diff
+6381 -4324
View File
File diff suppressed because it is too large. Load diff
+6374 -4332
View File
File diff suppressed because it is too large. Load diff
+6169 -4131
View File
File diff suppressed because it is too large. Load diff
+6162 -4126
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+6546 -4510
View File
File diff suppressed because it is too large. Load diff
+6288 -4233
View File
File diff suppressed because it is too large. Load diff
+6490 -4454
View File
File diff suppressed because it is too large. Load diff
+6543 -4507
View File
File diff suppressed because it is too large. Load diff
+6235 -4199
View File
File diff suppressed because it is too large. Load diff
+6197 -4112
View File
File diff suppressed because it is too large. Load diff
+6298 -4243
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Loaded 100 of 112 files, more files were not shown because too many files have changed in this diff. Show more