mirror of
https://github.com/juanfont/headscale.git
synced 2026-07-18 00:45:06 +00:00
policy/v2: add sshtester captures from Tailscale SaaS
32 captures. knownSSHTesterDivergences tracks sshtest-user-wildcard where SaaS rejects users:["*"] at parse and headscale does not.
This commit is contained in:
parent
90648a525d
commit
5b7e9bb9c8
33 changed files with 611203 additions and 3 deletions
|
|
@ -29,9 +29,26 @@ import (
|
|||
)
|
||||
|
||||
// knownSSHTesterDivergences tracks scenarios where headscale and SaaS
|
||||
// disagree on whether a policy is accepted. Empty until captures land
|
||||
// and any genuine engine bugs are uncovered.
|
||||
var knownSSHTesterDivergences = map[string]string{}
|
||||
// disagree on whether a policy is accepted. Each entry should describe
|
||||
// the engine area a follow-up PR needs to touch.
|
||||
var knownSSHTesterDivergences = map[string]string{
|
||||
// SaaS resolves an IP-literal sshTests src to the owning node's
|
||||
// user identity and matches it against compiled SSH principals;
|
||||
// headscale's resolveSSHTestSource returns srcUserID=0 for any
|
||||
// non-Username alias and only consults principal NodeIPs, so an
|
||||
// IP that names a user-owned node misses every accept rule keyed
|
||||
// by that user. Fix in hscontrol/policy/v2/sshtest.go — extend
|
||||
// resolveSSHTestSource to recover the owning user when the src
|
||||
// resolves to exactly one user-owned node.
|
||||
"sshtest-ip-literal-src": "headscale does not map an IP-literal sshTests src to the owning node's user; SaaS does",
|
||||
|
||||
// SaaS rejects `users: ["*"]` on an `ssh` rule at policy-parse
|
||||
// time with `user "*" is not valid`; headscale accepts the
|
||||
// wildcard and proceeds to evaluate sshTests against it. Fix in
|
||||
// hscontrol/policy/v2/types.go — reject `*` as an SSH login user
|
||||
// during SSH-rule validation.
|
||||
"sshtest-user-wildcard": "headscale accepts `users: [\"*\"]` on ssh rules; SaaS rejects with `user \"*\" is not valid`",
|
||||
}
|
||||
|
||||
func TestSSHTesterCompat(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
|
|
|||
20077
hscontrol/policy/v2/testdata/sshtest_results/sshtest-accept-fail-no-ssh-rule.hujson
vendored
Normal file
20077
hscontrol/policy/v2/testdata/sshtest_results/sshtest-accept-fail-no-ssh-rule.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20084
hscontrol/policy/v2/testdata/sshtest_results/sshtest-accept-fail-wrong-login-user.hujson
vendored
Normal file
20084
hscontrol/policy/v2/testdata/sshtest_results/sshtest-accept-fail-wrong-login-user.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20102
hscontrol/policy/v2/testdata/sshtest_results/sshtest-acceptenv-no-effect.hujson
vendored
Normal file
20102
hscontrol/policy/v2/testdata/sshtest_results/sshtest-acceptenv-no-effect.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20094
hscontrol/policy/v2/testdata/sshtest_results/sshtest-action-check-treated-as-allowed.hujson
vendored
Normal file
20094
hscontrol/policy/v2/testdata/sshtest_results/sshtest-action-check-treated-as-allowed.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20036
hscontrol/policy/v2/testdata/sshtest_results/sshtest-allpass-autogroup-self-same-user.hujson
vendored
Normal file
20036
hscontrol/policy/v2/testdata/sshtest_results/sshtest-allpass-autogroup-self-same-user.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20099
hscontrol/policy/v2/testdata/sshtest_results/sshtest-allpass-basic-user-to-tag.hujson
vendored
Normal file
20099
hscontrol/policy/v2/testdata/sshtest_results/sshtest-allpass-basic-user-to-tag.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
13577
hscontrol/policy/v2/testdata/sshtest_results/sshtest-both-tests-and-sshTests-both-pass.hujson
vendored
Normal file
13577
hscontrol/policy/v2/testdata/sshtest_results/sshtest-both-tests-and-sshTests-both-pass.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20090
hscontrol/policy/v2/testdata/sshtest_results/sshtest-both-tests-pass-sshTests-fail.hujson
vendored
Normal file
20090
hscontrol/policy/v2/testdata/sshtest_results/sshtest-both-tests-pass-sshTests-fail.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20094
hscontrol/policy/v2/testdata/sshtest_results/sshtest-checkperiod-no-effect.hujson
vendored
Normal file
20094
hscontrol/policy/v2/testdata/sshtest_results/sshtest-checkperiod-no-effect.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-deny-fail-policy-allows.hujson
vendored
Normal file
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-deny-fail-policy-allows.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20139
hscontrol/policy/v2/testdata/sshtest_results/sshtest-deny-pass-cross-user-blocked.hujson
vendored
Normal file
20139
hscontrol/policy/v2/testdata/sshtest_results/sshtest-deny-pass-cross-user-blocked.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20099
hscontrol/policy/v2/testdata/sshtest_results/sshtest-deny-pass-no-rule.hujson
vendored
Normal file
20099
hscontrol/policy/v2/testdata/sshtest_results/sshtest-deny-pass-no-rule.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20105
hscontrol/policy/v2/testdata/sshtest_results/sshtest-group-as-src.hujson
vendored
Normal file
20105
hscontrol/policy/v2/testdata/sshtest_results/sshtest-group-as-src.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20100
hscontrol/policy/v2/testdata/sshtest_results/sshtest-host-alias-as-dst.hujson
vendored
Normal file
20100
hscontrol/policy/v2/testdata/sshtest_results/sshtest-host-alias-as-dst.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20099
hscontrol/policy/v2/testdata/sshtest_results/sshtest-ip-literal-src.hujson
vendored
Normal file
20099
hscontrol/policy/v2/testdata/sshtest_results/sshtest-ip-literal-src.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20088
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-dst-autogroup-internet.hujson
vendored
Normal file
20088
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-dst-autogroup-internet.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20084
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-dst-cidr.hujson
vendored
Normal file
20084
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-dst-cidr.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20084
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-dst-with-port.hujson
vendored
Normal file
20084
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-dst-with-port.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-empty-accept-and-deny.hujson
vendored
Normal file
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-empty-accept-and-deny.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-empty-user.hujson
vendored
Normal file
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-malformed-empty-user.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-mixed-acls-tcp22-allow-no-ssh-rule.hujson
vendored
Normal file
20082
hscontrol/policy/v2/testdata/sshtest_results/sshtest-mixed-acls-tcp22-allow-no-ssh-rule.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
13556
hscontrol/policy/v2/testdata/sshtest_results/sshtest-mixed-acls-tcp22-deny-ssh-rule-allow.hujson
vendored
Normal file
13556
hscontrol/policy/v2/testdata/sshtest_results/sshtest-mixed-acls-tcp22-deny-ssh-rule-allow.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
13472
hscontrol/policy/v2/testdata/sshtest_results/sshtest-mixed-grants-app-cap-with-ssh.hujson
vendored
Normal file
13472
hscontrol/policy/v2/testdata/sshtest_results/sshtest-mixed-grants-app-cap-with-ssh.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18749
hscontrol/policy/v2/testdata/sshtest_results/sshtest-tag-as-dst.hujson
vendored
Normal file
18749
hscontrol/policy/v2/testdata/sshtest_results/sshtest-tag-as-dst.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18749
hscontrol/policy/v2/testdata/sshtest_results/sshtest-tag-as-src.hujson
vendored
Normal file
18749
hscontrol/policy/v2/testdata/sshtest_results/sshtest-tag-as-src.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18776
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-literal-multi-rule.hujson
vendored
Normal file
18776
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-literal-multi-rule.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18804
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-localpart-domain-match.hujson
vendored
Normal file
18804
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-localpart-domain-match.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18732
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-localpart-domain-mismatch.hujson
vendored
Normal file
18732
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-localpart-domain-mismatch.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18751
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-nonroot-allows-alice.hujson
vendored
Normal file
18751
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-nonroot-allows-alice.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18732
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-nonroot-blocks-root.hujson
vendored
Normal file
18732
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-nonroot-blocks-root.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18749
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-root-only.hujson
vendored
Normal file
18749
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-root-only.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
18734
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-wildcard.hujson
vendored
Normal file
18734
hscontrol/policy/v2/testdata/sshtest_results/sshtest-user-wildcard.hujson
vendored
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue