ACLs Introduction
Larktun ACLs follows a policy style similar to Headscale/Tailscale, with additional tenant-scoped guarantees for SaaS multi-tenancy. Each tenant has an independent ACL document, policy compilation flow, and audit trail.
What ACLs solves
- Define who can access which resources
- Restrict access by protocol, port, and destination scope
- Apply unified authorization to advanced capabilities such as subnet routers and exit nodes
Multi-tenant ACLs design principles
- Each tenant owns a complete ACL policy space:
groups,hosts,tagOwners,acls,autoApprovers, and more - Policies are fully isolated across tenants with no cross-tenant object references
- Policy compilation, distribution, and enforcement are tenant-scoped
- Audit data is retained per tenant for governance and compliance
Policy structure
groups: user group definitionstagOwners: tag ownership and assignment rightshosts: alias-to-IP/CIDR mappingsacls: core network access rules (src->dst)autoApprovers: automatic approvals for subnet routes and exit nodesssh: SSH session authorization rules (optional)tests: policy regression checks (optional)
Example: single-tenant ACLs policy
{
"groups": {
"group:dev": ["alice@", "bob@"],
"group:ops": ["carol@"]
},
"tagOwners": {
"tag:router": ["group:ops"],
"tag:exit": ["group:ops"]
},
"hosts": {
"db.prod": "10.20.0.10/32",
"nas.office": "192.168.6.20/32",
"exit.hk": "100.64.0.30/32"
},
"acls": [
{
"action": "accept",
"src": ["group:dev"],
"dst": ["db.prod:5432", "nas.office:445"]
},
{
"action": "accept",
"src": ["group:ops"],
"dst": ["autogroup:internet:*"]
}
],
"autoApprovers": {
"routes": {
"192.168.6.0/24": ["tag:router"]
},
"exitNode": ["tag:exit"]
}
}
Subnet router and exit node authorization
- Subnet route access can be tightly scoped in
aclsvia host aliases or route targets - Exit node usage can be controlled with
autogroup:internetor explicit exit-node targets autoApproverscan auto-approve routes or exit-node capabilities from tagged nodes
Policy rollout and validation flow
- Maintain ACLs policy changes within a tenant
- Run policy validation and
testschecks - Publish and compile policy in control plane, then distribute to tenant nodes
- Verify effective results through audit logs