Skip to main content

Security

Platform-wide controls (isolation, encryption, SSRF, audit, compliance) live in the Security section. This page is the application-builder contract: what you can trust from Qefro, and what your /qefro process must enforce itself.

Also read Application security and Solution security.

Trust boundary

PartyTrusted for
Qefro platformSigning invokes, tenancy headers, injecting platform bindings
Your applicationDomain logic, whatever data plane you connect (ERP, ctx.storage)
End userOnly via channel identity + challenges — never raw signing secret

An external connector is a privileged peer: it can return tool outputs the AI will trust. Protect your webhook network path; rotate secrets; validate inputs; apply SSRF controls on your outbound calls.

Tenant & workspace isolation

  • Storage documents scoped by platform.storage.context (tenant/workspace/installation/solution)
  • ACS SDK connections are per organization/tenant
  • Managed installs bind per tenant/workspace
  • Pure external tools without install scope should not assume managed storage
  • Never trust client-supplied tenant ids over platform context
  • Do not share mutable global state across tenants inside one process without explicit multi-tenant design

See Tenancy and workspaces and Tenant isolation.

Connection authentication

HMAC v1= over v1:{ts}:{body}authentication.md. Reject skew outside the configured window (default 300s). HTTP 401 invalid_signature on failure.

This authenticates Qefro → your /qefro. It does not replace customer OTP, org user JWTs, or storage bearer tokens.

Secrets

SecretExternalManaged
/qefro signing secretCustomer env + ACS encrypted secretPlatform-injected env
ERP credentialsCustomer secret storePrefer platform secret mechanisms / install settings — not git
Storage bearerN/A or platform token when scopedplatform.storage.token / service token

Never commit real secrets. Docs and demos use placeholders like dev-secret. Rotation: PATCH /api/v1/org/sdk-connections/{id} then redeploy. Details: Secrets.

Permissions

Managed manifests declare permissions / capabilities (storage, organization, marketing, workflow). Runtime enforces platform-side authorization for gated APIs.

Tool permissions: string[] is advertised metadata (default []). Do not confuse it with solution-service install permission grants.

Customer Hub isolation

Hub operations require platform.customer binding and Hub feature enablement. Apps must not invent cross-tenant customer ids.

Design checklist

  • Validate every tool argument server-side — treat the model as untrusted
  • Return the minimum fields required for the assistant (tool output may enter transcripts)
  • Least capabilities at publish time; treat permission escalation as a major version
  • Keep tenant URLs and credentials out of signed package files
  • Log authorization allow/deny on your API; Qefro logs the invoke attempt