Security
Understanding Arctic's security and trust model
Security
This article explains Arctic's security model, authentication mechanisms, and trust relationships.
Trust Model
Arctic's trust model is based on cryptographic verification:
License-Based Trust
Trust flows from the license:
- Tillered signs licenses with cryptographic keys
- Agents verify license signatures at bootstrap
- Peers verify each other against the same license
- Only peers with valid, matching licenses can join
Why License-Based?
- No central authority: Peers verify independently
- Offline capable: No network call to verify membership
- Cryptographic: Cannot be forged without private keys
- Revocable: License expiration limits access
Cryptographic Security
Arctic uses industry-standard cryptographic algorithms throughout:
- Digital signatures for license signing, peer identity, and handshake authentication
- Authenticated encryption for transport security between peers
- Modern key exchange protocols with perfect forward secrecy for IP tunnels
All cryptographic implementations use well-audited libraries and follow current best practices.
Peer Authentication
Key Generation
During bootstrap, each peer:
- Generates a cryptographic key pair
- Stores the private key securely in
$DATA_DIR/peer.key - Registers the public key with the cluster
Handshake Authentication
When peers connect:
Both peers must have valid signatures to complete the handshake.
API Authentication
OAuth2 Client Credentials
API authentication uses OAuth2:
- Client sends
client_idandclient_secret - Server validates credentials
- Server issues JWT access token
- Client uses token for subsequent requests
Token Structure
Access tokens are JWTs containing:
- Peer ID (issuer)
- Client ID (subject)
- Scopes (permissions)
- Expiration (1 hour default)
Scope-Based Authorization
Credentials can be limited to specific operations:
| Scope | Permissions |
|---|---|
admin | Full access |
peers.read | List/get peers |
peers.write | Add/update/delete peers |
services.read | List/get services |
services.write | Create/update/delete services |
credentials.read | List credentials |
credentials.write | Create/revoke credentials |
Transport Security
API (HTTPS)
For production deployments:
- Use a reverse proxy with TLS
- Arctic agent serves HTTP by default
- TLS termination at load balancer recommended
Peer Communication
Peer-to-peer traffic is always encrypted:
- TCP traffic: Encrypted headers and payload
- Non-TCP traffic: Encrypted tunnel with forward secrecy
- No plaintext between peers
Data Security
At Rest
Sensitive data stored on disk:
| Data | Location | Protection |
|---|---|---|
| Private key | peer.key | File permissions (600) |
| Credentials | arctic.db | Application-level |
| License | license.json | Signed, not encrypted |
Recommendations
- Restrict file system access to Arctic data directory
- Use full-disk encryption for hosts
- Regular backups of
arctic.db
License Security
License Structure
Licenses contain:
{
"license_id": "lic_...",
"customer_id": "cust_...",
"issued_at": "2024-01-01T00:00:00Z",
"expires_at": "2025-12-31T23:59:59Z",
"max_nodes": 10,
"max_services": 100,
"signature": "base64..."
}Verification
Agents verify:
- Signature is valid
- Signing key is known (embedded public keys)
- License has not expired
- Limits are not exceeded
Key Rotation
License signing keys rotate quarterly:
- New keys are embedded in agent releases
- Old keys remain valid for existing licenses
- Agents support multiple public keys
Threat Mitigations
Unauthorized Cluster Access
Threat: Attacker joins cluster without valid license.
Mitigation: Handshake requires valid license signature verification. Without a properly signed license, handshake fails.
Credential Theft
Threat: Attacker obtains API credentials.
Mitigation:
- Credentials have scopes (limit blast radius)
- Credential rotation supported
- 24-hour grace period allows recovery
- Revocation immediately invalidates credentials
Man-in-the-Middle
Threat: Attacker intercepts peer communication.
Mitigation:
- All peer traffic is encrypted
- Peers verify each other's identities
- Forward secrecy protects past sessions
License Tampering
Threat: Attacker modifies license to increase limits.
Mitigation:
- Licenses are cryptographically signed
- Signature verification fails for modified licenses
- Cannot forge without private signing key
Best Practices
Production Deployment
- Use HTTPS: TLS termination at reverse proxy
- Rotate credentials: Regular rotation schedule
- Limit scopes: Least privilege for automation
- Monitor access: Log and alert on API access
- Protect keys: Secure
peer.keyfile
Credential Management
- Create specific credentials for each use case
- Use read-only credentials for monitoring
- Revoke unused credentials promptly
- Rotate shared cluster credential periodically
Network Security
- Firewall non-essential ports
- Use private networks between agents
- Consider VPN for management access
- Monitor for unusual traffic patterns
See Also
- Authentication - API auth details
- Create Credentials - Credential management
- Clustering - Peer trust