mirror of
https://github.com/juanfont/headscale.git
synced 2026-04-28 03:27:15 +02:00
policy/v2: add SSH compatibility testdata from Tailscale SaaS
Add 39 test fixtures captured from Tailscale SaaS API responses to validate SSH policy compilation parity. Each JSON file contains the SSH policy section and expected compiled SSHRule arrays for 5 test nodes (3 user-owned, 2 tagged). Test series: SSH-A (basic), SSH-B (specific sources), SSH-C (destination combos), SSH-D (localpart), SSH-E (edge cases), SSH-F (multi-rule), SSH-G (acceptEnv). The data-driven TestSSHDataCompat harness uses cmp.Diff with principal order tolerance but strict rule ordering (first-match-wins semantics require exact order). Updates #3049
This commit is contained in:
240
hscontrol/policy/v2/testdata/ssh_results/SSH-E6.json
vendored
Normal file
240
hscontrol/policy/v2/testdata/ssh_results/SSH-E6.json
vendored
Normal file
@@ -0,0 +1,240 @@
|
||||
{
|
||||
"test_id": "SSH-E6",
|
||||
"policy_file": "ssh_policies/ssh_e6.json",
|
||||
"ssh_section": [
|
||||
{
|
||||
"action": "check",
|
||||
"src": [
|
||||
"autogroup:member"
|
||||
],
|
||||
"dst": [
|
||||
"tag:server"
|
||||
],
|
||||
"users": [
|
||||
"localpart:*@passkey"
|
||||
],
|
||||
"checkPeriod": "1h"
|
||||
}
|
||||
],
|
||||
"nodes": {
|
||||
"user1": {
|
||||
"rules": [
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.90.199.68"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"root": ""
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.90.199.68"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"kratail2tid": "kratail2tid"
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"user-kris": {
|
||||
"rules": [
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.110.121.96"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::1737:7960"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"root": ""
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"user-mon": {
|
||||
"rules": [
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.103.90.82"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::9e37:5a52"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"root": ""
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.103.90.82"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::9e37:5a52"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"monitorpasskeykradalby": "monitorpasskeykradalby"
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"tagged-server": {
|
||||
"rules": [
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.90.199.68"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"root": ""
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.90.199.68"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::2d01:c747"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"kratail2tid": "kratail2tid"
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.110.121.96"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::1737:7960"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"root": ""
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.103.90.82"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::9e37:5a52"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"root": ""
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"principals": [
|
||||
{
|
||||
"nodeIP": "100.103.90.82"
|
||||
},
|
||||
{
|
||||
"nodeIP": "fd7a:115c:a1e0::9e37:5a52"
|
||||
}
|
||||
],
|
||||
"sshUsers": {
|
||||
"monitorpasskeykradalby": "monitorpasskeykradalby"
|
||||
},
|
||||
"action": {
|
||||
"holdAndDelegate": "unused-server-url/machine/ssh/action/from/$SRC_NODE_ID/to/$DST_NODE_ID?ssh_user=$SSH_USER&local_user=$LOCAL_USER",
|
||||
"allowAgentForwarding": true,
|
||||
"allowLocalPortForwarding": true,
|
||||
"allowRemotePortForwarding": true,
|
||||
"sessionDuration": 3600000000000
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"tagged-prod": {
|
||||
"rules": []
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user