Access control

Tailscale Grants: make access decisions readable, testable and owned.

A Grant combines a source, an optional posture condition, a destination and an ip and/or app capability. A production-ready model also requires ownership for groups and tags, whole-policy allow/deny tests and an approved change path.

Principle

Allow only access explicitly named in policy.

The Grants rule model is deny by default: access is allowed only when it matches the complete published policy. However, a new tailnet's pre-created policy initially allows broad device-to-device connectivity, so it must be replaced and tested before it represents least privilege. Grants are recommended for new policies, while ACL syntax remains supported.

{
  "src": ["group:ops"],
  "srcPosture": ["posture:managed"],
  "dst": ["tag:prod-web"],
  "ip": ["tcp:22"]
}

Four questions

  • Who or what is the source?
  • Which source-device conditions are required?
  • Which resource can be accessed?
  • Which network or application capability is allowed?

An app capability is opaque JSON to Tailscale. The destination application must read and enforce it; normal application authorisation remains a separate control.

Production readiness

Policy syntax alone is not enough.

Every group, tag, resource and exception needs a named owner and a removal process. Grants are additive: a narrow rule never overrides access allowed elsewhere.

Model

  • groups, tags and privileged tagOwners
  • resource-specific destinations
  • posture and ip/app capabilities

Test the complete policy

  • the intended connection is allowed
  • the wrong user or device is denied
  • the wrong destination and port are denied

Govern

  • Git version control and review
  • rationale and approver for each change
  • controlled rollback to a validated policy version

AIM model

How Defense First uses Grants.

Advice designs the group, tag, posture and ownership model. Integrate implements the policy, tests and GitOps validation. Manage reviews and changes policy through the agreed pull-request and testing model.

Review the policy

Can the current access model be tested?

Advice assesses the current policy and produces a target model without production changes.

Request an Advice proposal