Skip to content

Fazal/tailscale node attestor server#6691

Draft
FazalAAli wants to merge 3 commits intospiffe:mainfrom
FazalAAli:fazal/tailscale-node-attestor-server
Draft

Fazal/tailscale node attestor server#6691
FazalAAli wants to merge 3 commits intospiffe:mainfrom
FazalAAli:fazal/tailscale-node-attestor-server

Conversation

@FazalAAli
Copy link
Copy Markdown

Pull Request check list

  • Commit conforms to CONTRIBUTING.md?
  • Proper tests/regressions included?
  • Documentation updated?

Affected functionality

Description of change

Which issue this PR fixes

Implement a SPIRE server node attestor for Tailscale that verifies
agent identity through certificate chain validation, challenge-response
proof of key possession, and Tailscale API device lookup. The trust
model relies on Let's Encrypt certs (issued via Tailscale ACME DNS-01)
as proof of tailnet membership, with all identity facts sourced from
the Tailscale API rather than agent self-reporting.
Replace the cert-based attestation (TLS certs + external Tailscale API)
with a simpler approach that leverages the tailscaled local whois API.
Since both SPIRE server and agent are on the same Tailscale network, the
WireGuard tunnel provides mutual authentication at the network layer.

The server V1 wrapper now forwards the peer address via gRPC metadata
(X-Forwarded-Peer-Addr), allowing the plugin to identify connecting
peers through tailscaled's whois endpoint. This eliminates the need for
API keys, CA bundles, cert loading, and challenge-response flows.

Agent plugin: sends a minimal {} payload (no config needed).
Server plugin: extracts peer IP, validates it's a Tailscale address,
calls WhoIs, and builds selectors from the response.
@sorindumitru
Copy link
Copy Markdown
Collaborator

Thanks @FazalAAli for opening this. Would you mind also opening an issue for this so we can discuss some details? Can you add some details about the attestation model and what guarantees we can get about the node?

@sorindumitru
Copy link
Copy Markdown
Collaborator

@FazalAAli, checking in again to see if you're still interested in this. We'll like to understand a bit more how you see the attestation working here before looking at the PR in depth.

@FazalAAli
Copy link
Copy Markdown
Author

@FazalAAli, checking in again to see if you're still interested in this. We'll like to understand a bit more how you see the attestation working here before looking at the PR in depth.

Hi @sorindumitru, sorry I missed this. Let me start a thread in the slack to get some intial discussion :)

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants