Design Tailscale ACL Policies
Advancedv1.0.0
Master Tailscale ACL design — groups, tags, autogroups, port-based access, subnet policies, and testing ACL changes before deployment.
Content
Overview
Tailscale ACL (Access Control List) policies define who can access what on your tailnet. They follow zero-trust principles: deny everything by default, then explicitly allow specific access paths between groups, tags, and ports.
Why This Matters
- -Zero trust — no implicit trust between devices
- -Least privilege — each role only accesses what it needs
- -Auditable — access rules are explicit and reviewable
- -Scalable — tags and groups manage thousands of devices
How It Works
Step 1: Define Groups
Step 2: Define Tag Owners
Step 3: Define ACL Rules
Step 4: Configure Auto-Approvers
Step 5: Test ACL Changes
Best Practices
- -Start with deny-all, add specific allows incrementally
- -Use groups for people, tags for devices and services
- -Test ACL changes before applying (Tailscale has built-in testing)
- -Use port-specific rules (not wildcard ports unless needed)
- -Document the purpose of each ACL rule with comments
- -Review ACLs quarterly as team and infrastructure evolve
- -Use autoApprovers for automated infrastructure (CI, autoscaling)
Common Mistakes
- -Starting with
*:*(allow all) and planning to restrict later - -Not using tags (ACLs based on individual device names)
- -Forgetting to update ACLs when team members change roles
- -No ACL tests (changes break access unexpectedly)
- -Using wildcarded ports when specific ports would suffice
FAQ
Discussion
Loading comments...