Pre-Production Security Hardening Checklist
The production go-live checklist verifies that your integration is ready for live traffic. This companion checklist walks the security posture decisions behind it. Every item below is a control your organization owns: each one ships default-off or with a permissive default, and enabling it is your decision, not a Devotel mandate. The checklist exists so that each decision is made deliberately, with a named owner, before customers and agents touch the workspace. Assign an owner to every checkbox before you start, and verify each item in your own organization’s settings rather than on paper.1. Session-auth posture
- Per-role two-factor enforcement is decided for every role. Orbit can require 2FA per role across the whole organization. Require it at minimum for the roles that change settings, mint keys, or see billing (owner, admin, developer), then make an explicit call for viewer and billing-only roles instead of leaving the question unanswered. The role model is described in Account security model; the enrollment and enforcement controls sit on Settings → Security. Owner: Administrator.
- Enforcement is staged so it strands nobody. Open an enrollment window first, confirm every member has an active second factor and backup codes stored somewhere durable, and only then switch enforcement on per role. Enforcing before enrollment converts a posture decision into a lockout incident. See Settings → Security for the enrollment and step-up flows. Owner: Administrator.
2. Dashboard perimeter
- The org-wide IP allowlist covers the real access footprint. Under Settings → Security → IP Allowlist, restrict which source IPs may open the dashboard and start a SAML login: office egress, VPN ranges, and bastion hosts as IPv4/IPv6 addresses or CIDR ranges. An empty list means unrestricted, which is the out-of-the-box state. The allowlist governs session (dashboard) traffic only; programmatic keys carry their own list (section 3). See Settings → Security. Owner: Administrator.
- The lockout recovery path is understood before it is needed. A blocked dashboard request returns
403and lands in your audit log asauth.ip_blocked, so attempted access outside the perimeter is visible. Support can reach a locked-out org only through a logged override that also appears in your audit log. Owner: Administrator.
3. Programmatic perimeter
-
Every live key carries its own
allowed_ipslist. The per-key allowlist gates programmatic API authentication separately from the dashboard allowlist, so CI runners and SDK egress IPs belong on the keys that use them, not on the org list. Decide which source IPs may use each live credential and set them under Settings → API Keys; see API key IP allowlist. Owner: Engineering. - Usage budget alerts would reach someone if a key misbehaves. A leaked key usually shows up as a traffic or spend spike before anything else. Configure per-key usage budget alerts so the spike lands in a monitored inbox while the key is rotated; see API key usage budget alerts. Owner: Engineering.
4. Provisioning posture
- SCIM defaults encode least privilege before sync is enabled. Set
defaultRoletoviewerso any user without a group mapping lands on the least-privilege floor, map IdP groups to elevated roles withgroupMapping, and keep the role ceiling atadminsoownerassignment stays a deliberate dashboard action that a directory sync can never perform. See SCIM provisioning and the defaults table in Settings → Security. Owner: Administrator.
5. Assistance posture
- Support access follows a written policy. Decide whether support sessions start denied until explicitly granted, or open only inside bounded windows you define, and name the roles (keep it to owner) that may grant them. Every grant, and every support override past a locked-out org, is recorded in your audit log with actor and timestamp; see Audit log. Owner: Administrator.
6. Data display posture
- Each surface has a deliberate redaction choice: display-time or write-time. Display-time redaction masks sensitive fields per role while the underlying data is retained; write-time redaction removes it irreversibly as it lands. Make the call per surface rather than globally: conversation and inbox views, exports, and call recordings each have different retention consequences. See On-demand message redaction and Recording redaction. Owner: Compliance.
7. Recurring reviews
- A monthly session sweep is on the calendar. Review active sessions and login history for departed members, unrecognized devices, and unexpected source IPs, and revoke what you cannot explain; session anomaly alerts surface the outliers between sweeps. Owner: Administrator.
- The audit log is filtered monthly for posture changes. Run these filters in Settings → Audit log and review every hit; the action names are the same ones each control writes when it changes (see Settings → Security and Audit log): Owner: Administrator.
Every control on this page is tenant-decided and default-off: until you configure it, enforcement is off, allowlists are empty and unrestricted, provisioning defaults are permissive, and redaction follows each surface’s default. Re-run this checklist on every material change to your team or architecture, and hand the outcome to the production go-live checklist as its security sign-off.
See also
- Production go-live checklist — the launch gate this checklist feeds
- Settings → Security — the console every control above lives in
- Account security model — roles, sessions, and per-role 2FA enforcement
- Security — roles and auditability overview