Skip to main content

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 definitions
  • tagOwners: tag ownership and assignment rights
  • hosts: alias-to-IP/CIDR mappings
  • acls: core network access rules (src -> dst)
  • autoApprovers: automatic approvals for subnet routes and exit nodes
  • ssh: 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 acls via host aliases or route targets
  • Exit node usage can be controlled with autogroup:internet or explicit exit-node targets
  • autoApprovers can auto-approve routes or exit-node capabilities from tagged nodes

Policy rollout and validation flow

  1. Maintain ACLs policy changes within a tenant
  2. Run policy validation and tests checks
  3. Publish and compile policy in control plane, then distribute to tenant nodes
  4. Verify effective results through audit logs

Reference model

Continue reading