Security

Architecture-level security, written honestly.

What BCDock does for security today, at the architecture level: tenant isolation, per-region Key Vaults, HTTPS environments, immutable provisioning logs. Plus a clear line between shipped and audited by a third party so partner-questionnaire and procurement teams know exactly what they are getting.

8 architecture controls shippedSandbox-only · synthetic dataSOC 2 · future milestone
Shipped today

Eight architecture controls.

What's built and running in production, not what's planned. Each card describes the mechanism, not the marketing pitch.

Tenant

Company-scoped query isolation

Every database query in the Platform API carries a company-scoped filter applied automatically at the data-access layer. No per-query opt-out path. Cross-company access from a customer credential is structurally impossible.

EF query filter · no API-side opt-out
Secrets

Per-region Azure Key Vaults

Secrets partitioned by scope across three Key Vaults: platform-wide, core (shared TLS), and per-region. Each pool has just-enough access via managed identity. No long-lived Azure credentials in api-tier containers.

90-day soft-delete · managed identity · zero secrets in containers
Environments

Unique admin password per environment

Each BC environment gets a unique Administrator password generated at provisioning, stored in regional Key Vault, never logged, never written to file. Surfaced via portal and `bcdock env get -o json`.

fetched on demand · rotate via BC interface
Auth

httpOnly cookies + scoped API keys

Portal sessions use httpOnly+SameSite=Lax cookies with 15-min access / 7-day refresh. CLI and agents use long-lived API keys with explicit scopes (env:read, env:write, usage:read, admin). OTP exchange is hashed and rate-limited.

JS cannot read tokens · Secure flag in prod
Network

HTTPS from minute zero

Every environment is reachable at https://<env-name>-<shortId>.bcdock.io from the moment it's provisioned. Platform-managed wildcard TLS - customers never provision, rotate, or renew certificates.

wildcard cert · TLS in Core KV
Audit

Immutable provisioning log

Every stage of every provision, hibernate, resume, and delete writes an append-only line into the platform audit trail. No API surface edits or deletes log lines. Used for support investigations and post-mortems.

append-only · operational-only scope
Backup

Storage soft-delete on hibernation blobs

Hibernation snapshot blobs live in per-region Azure Storage with soft-delete enabled. If a blob is deleted, it is operator-recoverable for 7 days, then hard-purged. An operator-error safeguard, not a self-serve restore feature.

7-day operator-recovery grace · per-region storage
Region

Your environment stays in your region

The environment, its admin password, and its hibernation backups live in the region you pick (US or AU), partitioned per-region. Your account and control-plane data - identity, billing, usage - live in BCDock's primary region, currently Australia, and are never copied across regions.

env region-pinned · account data in primary region · no cross-region copy
The boundary

What we don't claim.

We are deliberate about the line between "in the architecture" and "audited by a third party." These are the things we'd rather tell you about now than have you find out later.

SOC 2 / ISO 27001

Not certified yet.

Azure (the underlying cloud) carries these certifications; BCDock at the platform level is best-effort. Pursuing certification is a future milestone, tied to at least one enterprise contract that justifies the audit cost.

Talk to us if you need a timeline.
HIPAA / PCI

Out of scope.

Sandbox containers are not in scope for regulated-data regimes. Use synthetic or anonymised data only. Production workloads with regulated data must run on Business Central SaaS.

See FAQ - Compliance and data.
Pen-test reports

No formal pen-test yet.

Internal review and standard hardening (Key Vault, RBAC, company-scoped query isolation, parameterised queries) is what's shipped. A formal third-party pen-test is timelined against early enterprise engagements.

Coordinated disclosure is open today.
Coordinated disclosure

Found a security issue? Tell us first.

If you've found something, please tell us before telling anyone else. Here's the contact, what to include, what we commit to in return, and how we triage by severity.

Contact

Where to send it.

security@bcdock.io

Include:

  • A clear description of the issue
  • Steps to reproduce - commands, requests, account context
  • The impact you observed or suspect
  • Any patches, mitigations, or hardening you'd recommend

If it's sensitive, ask first and we'll arrange an encrypted channel.

Our side

What we commit to.

AckA real human reads everything in security@. We reply within two business days.FixInvestigate and remediate proportional to severity. Critical issues drop everything else.CreditPublic credit at the time of fix or disclosure, if you'd like. Anonymous is also fine.LegalNo legal threats for good-faith research within scope. We treat you as a friend of the platform.
SeverityExamplesTarget time-to-fix
CriticalCross-tenant data access · auth bypass · secret leak · RCE on a pool VMHours-to-days
HighPrivilege escalation · persistent XSS in portalDays-to-1 week
MediumReflected XSS · CSRF (non-destructive) · non-PII info disclosure1-4 weeks
LowVerbose error messages · missing security headers · cosmetic CSPNext feature bundle

These are guidance, not a contract. We make case-by-case calls and tell you what we're doing.

Security | BCDock