Deployment hardening runbook
Goal
Walk through a step-by-step process to launch AngaraBase in a production-secure configuration, and verify the result from SQL.
Prerequisites
- Access to server configuration (TOML config and/or environment variables).
- TLS certificate and key files.
- A 256-bit master key (64 hex characters) for TDE.
- Ability to restart the server.
Security hardening checklist
Before starting, confirm each item applies to your deployment:
- TLS enabled for all remote connectivity.
- Auth mode set explicitly (
scramorcert) — not left astrustfor production. - TDE enabled with valid key material.
- Audit log path set and writable.
- DML audit policy chosen deliberately (
off,allowlist, ordenylist). - Break-glass max TTL configured appropriately.
-
angara_audit_verify_chain()runs clean.
Steps
Step 1 — Enable TLS
[tls]
enabled = true
cert_path = "/etc/angarabase/tls/server.crt"
key_path = "/etc/angarabase/tls/server.key"
require_on_remote_bind = true
This protects the wire protocol and enforces fail-closed on non-loopback bind without TLS.
See authentication.md for TLS details.
Step 2 — Set auth mode
export ANGARABASE_AUTH_MODE=scram
Disables trust-only behaviour for production. The superuser must have been bootstrapped at --init time with
a SCRAM password.
See authentication.md for auth modes and SCRAM setup.
Step 3 — Enable TDE
export ANGARABASE_TDE_ENABLE=1
export ANGARABASE_TDE_MASTER_KEY_HEX=<64-hex-secret>
export ANGARABASE_TDE_MASTER_KEY_ID=master-prod-2026q1
export ANGARABASE_TDE_LAST_ROTATION_UNIX=1760000000
Enables at-rest encryption for pages, WAL, and audit sink. Without a valid key the server refuses to start (fail-closed).
See encryption.md for TDE configuration and key management.
Step 4 — Configure audit policy
export ANGARABASE_AUDIT_LOG_PATH=/var/lib/angarabase/audit/audit.jsonl
export ANGARABASE_AUDIT_DML_MODE=allowlist
export ANGARABASE_AUDIT_DML_ALLOWLIST=public.users,public.payments
export ANGARABASE_AUDIT_EXPORT_JSON_ENABLED=1
export ANGARABASE_AUDIT_EXPORT_RATE_LIMIT_RPS=50
Sets targeted DML audit coverage and bounded JSON export.
See audit.md for audit policy options and chain verification.
Step 5 — Verify effective config from SQL
After starting the server, confirm all settings from a SQL session:
SELECT name, value
FROM sys.settings
WHERE name IN (
'tls.enabled',
'tls.require_on_remote_bind',
'security.auth_mode',
'security.tde_enabled',
'security.tde_master_key_id',
'audit.dml_mode',
'audit.export_json_enabled',
'audit.export_rate_limit_rps'
)
ORDER BY name;
Only non-secret metadata appears. The TDE hex key, passwords, and SCRAM verifiers are never exposed.
Step 6 — Verify audit chain
SELECT * FROM angara_audit_verify_chain();
A healthy deployment returns is_valid = true.
Step 7 — Verify security surfaces
SELECT * FROM angara_user_roles() LIMIT 20;
SELECT * FROM angara_break_glass_status();
Confirm that introspection functions are responsive and return expected data.
Expected result
- Server starts only in fail-closed mode for unsafe configurations.
sys.settingsshows only non-secret metadata.- Disk contains no plaintext audit payloads when TDE is enabled.
- Audit chain is intact; DML events appear for tables in the allowlist.
- Authentication rejects unauthenticated connections in
scram/certmode.
Troubleshooting
- Server does not start after enabling TDE
Verify
ANGARABASE_TDE_MASTER_KEY_HEXis exactly 64 hex characters and matches the data directory’s key. Fail-closed is expected. - Auth/TLS conflict on remote bind
If binding to a non-loopback address,
tls.enabledmust betrueor--allow-insecure-no-authmust be passed (dev only). Checktls.require_on_remote_bindandserver.host. - DML audit events missing
Verify
audit.dml_modeis notoffand that the target table matches the allowlist/denylist entries. Table names must be fully qualified (schema.table). angara_audit_verify_chain()returnsis_valid = falseThe audit chain is corrupted. Note thefirst_broken_seqand investigate the audit file.- Break-glass cannot activate The audit subsystem must be healthy. Fix the audit path or TDE key material first.
- Need a bug-report artifact? See ../reference/support.md.
Links
- Security model overview: overview.md
- Authentication: authentication.md
- Authorization: authorization.md
- Audit: audit.md
- Encryption: encryption.md
- Break-glass: break-glass.md
- Configuration reference: ../operations/configuration.md
- Security knobs registry:
angarabook/src/operations/security-operations.md