Security and Privacy
This chapter describes the security mechanisms the platform ships with, what the infrastructure operator is expected to provide, and the known limits.
Shared Responsibilities
Operaide runs as a containerized HTTP application. Some security concerns are handled by the platform itself; others are handled by the infrastructure operator (for example, a cloud provider, a managed-services partner, or an internal platform team running Operaide on-premises).
| Concern | Platform (Operaide) | Operator (Infrastructure) |
|---|---|---|
| TLS termination | No — speaks plain HTTP internally | Yes — reverse proxy / load balancer |
| Volume and database-at-rest encryption | No | Yes — disk, volume, or KMS-level |
| Application-layer credential hashing | Yes (SHA-256) | — |
| Authentication / SSO / MFA | Delegated to external identity provider | — |
| Role-based access control | Yes | — |
| Tenant isolation (org, app instance, process) | Yes | — |
| Workflow-level audit trails | Yes | — |
| Infrastructure metrics, host-level logs | — | Yes |
| Backup and disaster recovery | — | Yes |
| Network segmentation, firewalls, WAF | — | Yes |
This split matters: when the question is "how is data encrypted at rest?", the answer has two parts — Operaide hashes sensitive credentials inside the application, and the infrastructure operator encrypts the underlying volumes.
Authentication and User Provisioning
Operaide supports three ways to sign in:
- Email and password, handled by the platform's built-in accounts system. New accounts receive a verification email before they can sign in.
- OpenID Connect (OIDC) is the recommended single-sign-on integration. Operaide works with any OIDC-compliant identity provider, including Microsoft Entra ID, Keycloak, Google Workspace, and Okta. Sign-in uses an OAuth 2.0 authorization-code flow with PKCE. Multi-factor authentication, conditional access, and session-related security signals are enforced by the provider. Operaide does not see or store the user's password. See SSO Setup for configuration.
- Legacy Entra-specific integration predates the generic OIDC path. It is retained only for existing internal deployments and will be removed once they have migrated to OIDC. Do not enable it on new deployments.
Users are added to an organization in one of three ways:
- Invitation. An organization member with the appropriate role (for example,
MemberManager) invites a user by email. The invited user appears with statusinviteduntil they accept the invitation. - Email-domain auto-assignment. An organization administrator can configure an email-domain regex on the organization. When a new user self-registers with an email address that matches the regex, the user is automatically assigned to that organization. Auto-assigned users initially receive a
roleUnverifiedUserglobal role and must confirm their registration through the verification email before gaining active access. - First-user bootstrap. In development and in controlled bootstrapping scenarios, a configuration setting (
MAKE_FIRST_USER_ADMIN_REGEX) lets the very first user of a fresh deployment come up with the permission to become a platform administrator. This is meant for initial setup only.
For machine-to-machine access, Operaide issues API keys:
- Generated with cryptographically secure random bytes.
- Stored as SHA-256 hashes — the plain-text value is shown once at creation and cannot be retrieved afterwards, not even by administrators.
- Scoped to an organization and revocable at any time from the admin console, without redeploying.
- Usable in
Authorization: Bearer, basic auth, header, or query-parameter form, depending on the client.
Sessions are token-based, with expiry and secure token storage on the server side.
Authorization
Every server-side method in Operaide enforces permission checks. There are no unprotected business-logic endpoints.
Roles are organized into two layers — see Roles and Rights for the full catalog:
- Global roles:
SuperAdmin,SystemAdmin, and internal developer roles that govern platform-wide configuration. - Organization roles:
Member,MemberManager,AppManager,CredentialManager,ReportingManagerand related roles that apply within a single tenant.
Three properties of the RBAC model are worth highlighting from a security standpoint:
Transitive hierarchy
Roles are hierarchical. A higher role implicitly grants the permissions of lower roles in the same hierarchy. This reduces configuration drift and the risk of permissions being accidentally forgotten when a role is renamed or extended.