Skip to main content
Buying documents

What your reviewer needs, in one place

These answers describe RotorLab as of October 29, 2026 and are provided for information. They are not a warranty or part of any agreement; the Terms of Service, the Privacy Policy, the Data Processing Addendum and any Government Customer Addendum or signed agreement control. RotorLab holds no third-party attestation.

Our answers to a standard security questionnaire, the agreements that govern the service, and the list of subprocessors. Read them here, print them, or download the questionnaire as a spreadsheet.

How we protect the record, in plain words, is on the Trust Center.

Security questionnaire

Answers as of October 29, 2026. Where a question reads "Available on request," ask our sales team and we will answer it for your review. Where it reads "No," the control is not in place today.

1. Governance and company

NumberQuestionAnswer
1.1Legal name, address and security contactRotorLab, Inc., 7709 Commerce Park, Suite 1, Dubuque, IA 52002. Security reports: security@rotorlab.app, published in /.well-known/security.txt (RFC 9116).
1.2Is there a written information security policy, and who owns it?Yes. The document, and who owns it, are available on request.
1.3How many people have production access?Available on request. The product has one platform operator seat.
1.4Are personnel background-checked, under confidentiality terms, and trained in security?Everyone RotorLab allows to access Records is bound to confidentiality (Data Processing Addendum, Section 3). Background checks and training: Available on request.
1.5Do you carry cyber liability insurance?Yes. A certificate of insurance is available on request.
1.6Physical and environmental security of the data centerInherited from Microsoft Azure, the hosting provider: the production server is in Central US (Iowa), and the offsite database replica and offsite backups are in East US 2 (Virginia), as the Data Processing Addendum, Section 5, names them.

2. Access control

NumberQuestionAnswer
2.1What roles exist?Three authority tiers: the platform operator, organization administrator and member. Below organization administrator, eight built-in roles (All areas, Member, Auditor, Pilot, Maintenance, Billing, Dispatcher and Operator-maintainer) and custom roles composed from a permission catalog, checked at every gate. The last Administrator of an organization cannot be removed.
2.2Is customer data separated between tenants?Every read or write by identifier takes the organization and filters on it, and the organization is taken from the signed-in session, never from the request. This is checked by automated tests. It has not been independently audited.
2.3Is multi-factor authentication supported? Enforced?Yes: an authenticator app (TOTP) and security keys (WebAuthn), with recovery codes. An organization can require it, with a grace period, and can require security keys only.
2.4Is MFA required for privileged (operator) access?Yes. The platform operator account requires two-factor authentication unless a host setting lifts it; its sessions last 8 hours with a 30-minute idle limit.
2.5Is single sign-on supported?Yes, OpenID Connect with PKCE: Google Workspace, Microsoft Entra and Okta. The identity token's issuer, audience, expiry, nonce and signature are verified. Only email addresses under a domain the organization proved can sign in. Just-in-time accounts and group-to-role mapping are optional and never make anyone an administrator.
2.6Is SAML supported? Is SCIM?SAML is not offered; single sign-on is OpenID Connect. SCIM 2.0 provisioning of users and groups is built in: the organization's directory adds members whose addresses are under a domain the organization proved (a person who already has a RotorLab sign-in is invited instead), updates them, sets their role through the same group-to-role map as single sign-on, and deactivates them, which ends their sessions and revokes their personal API keys at once and keeps the records they made. It never makes anyone an administrator, never deactivates the organization's last active administrator and never changes a member's email address.
2.7How are passwords stored?Never stored as entered: a per-user random salt with scrypt, with a PBKDF2-SHA256 fallback at 600,000 iterations, and constant-time comparison.
2.8Is there brute-force protection?Yes. A sign-in throttle with lockout holds across both web workers, and the web server rate-limits the sign-in routes to 10 requests a minute per address.
2.9How are sessions protected?Server-side sessions stored as hashes. The cookie is HttpOnly, SameSite=Strict and Secure in production. Default session is 14 days; an organization can set an idle limit (default 12 hours) and a lifetime.
2.10Can your staff read customer data?Not by routine. The operator account is kept out of organization pages. Without an open grant, support does not look at your records except under emergency access. An organization administrator can grant support access for 24 hours, 72 hours or 7 days, with a reason, and end it at any time. Emergency access needs a written reason, lasts at most a day, is logged, and every administrator of the organization is emailed at once. For a public body, emergency access is used only at its request or where the law requires it (Government Customer Addendum, Section 6). Everything support reads or changes is written to the organization's own activity log. This is a posture, not a hard boundary: whoever holds the database host can read the database.
2.11API accessAPI keys are stored as hashes, scoped (status, flights, checklists, engine, builds, live, jobs) and optionally expiring. Every API route maps to a permission, checked by automated tests.
2.12Access reviews and joiner/leaver process for your staffAvailable on request.

3. Network and application security

NumberQuestionAnswer
3.1What sits in front of the application?Microsoft's Azure Front Door edge (Standard tier), with web application firewall custom rules, including a sign-in flood rule and a site-wide rate rule; then a load-balanced origin that admits requests only from RotorLab's own Front Door profile, reached over TLS; then a web server with per-address rate limits; then two web workers.
3.2Security headersContent security policy with frame-ancestors none, base-uri none and form-action self, and an allow-list of outside hosts widened only when a feature is on; X-Content-Type-Options nosniff; Referrer-Policy no-referrer; HSTS; a host allow-list.
3.3Outbound callsAddresses an organization enters (webhooks, alert hooks) go through a guarded opener: public addresses only, no redirects. Offline mode stops every outside call.
3.4Container hardeningThe application image runs as a non-root user; the runtime stage has no installer; no service mounts the Docker socket; every service has a memory limit and a log size cap.
3.5Penetration testAn independent penetration test is planned for Q4 2026. None has been completed.
3.6Vulnerability disclosuresecurity.txt with a contact and policy link. No bug bounty.

4. Encryption

NumberQuestionAnswer
4.1Encryption in transitTLS twice over: from the browser to Microsoft's Azure Front Door edge, and again from the edge to the production server. The edge decrypts the traffic to route and filter it and encrypts it again. Outbound mail uses STARTTLS by default or SSL/TLS; an administrator can also choose no encryption for a relay. The edge TLS version and cipher policy: Available on request.
4.2Encryption at rest: what is sealed?When the deployment's key is set: precise flight positions, stored flight log files (including files waiting to be filed), live recordings, saved missions, area outlines, authenticator secrets, and stored credentials (any setting named as a secret). Items stored before the key was set stay unsealed until they are written again or a sealing pass seals them. Other fields (names, record text) are not field-sealed.
4.3With what algorithm?AES-256-GCM through the cryptography library, with keys derived by HKDF-SHA256 from each key version's secret (separately for text and for each organization's files), a random 12-byte nonce per value and per file, and each value's header (format and key version) bound as associated data. Values sealed earlier with RotorLab's previous construction (authenticated encryption built from HMAC-SHA256 in counter mode with an independent MAC key and a random 16-byte nonce) are still read, and are re-sealed with AES-256-GCM by the background pass described in 4.7. It is not a FIPS 140 validated module.
4.4Where is the key?In the host environment (an environment variable or a mounted secret file), never in the database, with one secret per key version, so a copied database or backup carries no tracks. It does not protect against a compromised host.
4.5Full-disk or volume encryptionAvailable on request.
4.6Backup encryptionAvailable on request. Sealed values stay sealed inside any backup.
4.7Key management (rotation, custody, HSM)Keys are versioned: each value sealed with AES-256-GCM names the key version that sealed it, and values in the earlier format belong to version 1. A new version is made current from the operator console, which refuses until AES-256-GCM is on and every running application server holds that version; a background pass then re-seals values sealed under earlier versions, and earlier versions still open what they sealed. Files kept only for a day or for one analysis job are not re-sealed and expire under the version that sealed them. RotorLab holds the keys. Customer-managed keys, an HSM and a key management service are not in place today.

5. Logging and audit

NumberQuestionAnswer
5.1Is there an audit log?Yes. Every notable action is a row in the activity log and a line in a rotating host log. An organization administrator reads the organization's log; standard members have none; the operator sees platform events.
5.2Is it tamper-evident?Hash-chained: each row carries a hash over its content and the previous row, verifiable for the whole log or one organization. Once a day the newest row and the day's records are reduced to one SHA-256 hash sent to an RFC 3161 time-stamping authority and to OpenTimestamps. Rows are never deleted; the only updates are two recorded redactions. The chain shows a record has not changed since it was recorded; it does not show the record is true.
5.3Are log writes lost under failure?A locked write is retried; a refused row spills to a file and is written later; the backlog shows on the health check and the console.
5.4Log retentionActivity log rows are kept, and redacted in place on organization deletion, never deleted. Container logs are capped at 100 MB per container. Host log retention: Available on request.
5.5Do you monitor and alert?Every five minutes each worker checks database writes, disk floor, refused log rows, analysis backlog, backups off, failing or stale, error bursts, timestamps not sent and clock jumps; by default a rule must hold on two passes four minutes apart before the operator is told by email or webhook. No SIEM.

6. Backup and recovery

NumberQuestionAnswer
6.1How is data backed up?Three layers. (1) A transactionally consistent database snapshot every 24 hours, keeping 7 by default, each integrity-checked and hashed with SHA-256. (2) An optional continuous replica to off-site object storage (Azure Blob Storage in East US 2, Virginia): changes copied about every 10 seconds, snapshots every 6 hours kept 30 days. (3) A host job copies the stored file stores and snapshots to off-site object storage (Azure Blob Storage in East US 2, Virginia). Which layers run in production: Available on request.
6.2Is backup failure detected?Yes. A failed backup is logged, counted in the daily error digest and raised as an outage alert.
6.3RPORecovery point and recovery time targets are published once a restore drill proves them. Until then: Available on request. Without the off-site replica, the newest copy is the daily snapshot. If the server itself is taken over, the newest copy the server's own credentials cannot reach is the daily backup in the backup vault, so up to a day of changes can be lost in that case.
6.4RTOSee 6.3. Available on request until a restore drill proves it.
6.5Is restore tested?A restore drill is documented step by step, with an integrity check and a row count. Date of the last drill: Available on request.
6.6Do restores bring back deleted customers?A restored copy is deleted again from a signed deletion journal, kept apart from the database, by the next scheduled check.
6.7Business continuity and disaster recovery planYes. The document is available on request.
6.8Availability targetA 99.5 percent monthly target, measured by the service's own heartbeat and published at /status. The Terms carry no uptime warranty or service credits.

7. Vulnerability management and supply chain

NumberQuestionAnswer
7.1Third-party dependenciesStandard library, plus Pillow and cryptography (with the packages it needs, cffi and pycparser, each locked by hash) in the application image, and torch with the packages it needs, each locked by hash, in the analysis sidecar image.
7.2Are dependencies pinned?Every shipping package is pinned to an exact version and every container image to a digest; the release refuses an unpinned install.
7.3Are dependencies checked for known vulnerabilities?Yes, at every release: each pinned version is checked against the OSV database, and a known advisory stops the build until the pin moves or the advisory is reviewed and acknowledged.
7.4SBOMA CycloneDX 1.6 software bill of materials ships with every release.
7.5Container image scanningImages are scanned on every push and weekly. The scan reports and does not block a release.
7.6Patch timelines by severityAvailable on request.
7.7Host OS patchingAvailable on request.

8. Secure development

NumberQuestionAnswer
8.1Automated testsAn automated suite run before every release, including tenant isolation, role routes, request limits, the sign-in throttle across workers, schema parity on upgrade, supply-chain pins and production settings.
8.2Release gateA release ships only after a passing automated run on the exact commit, including a production image build, or a full local run that records a digest of every shipped file.
8.3Code reviewChanges are checked by the automated suite and by review tooling before release. Who approves each change: Available on request.
8.4Separation of environmentsAutomated tests run on a throwaway database, never on production data. Demonstration organizations used for sales demonstrations run in the production service. Their records are invented; the only real personal details in them are the sign-ins of the people invited to use them. Other environment separation: Available on request.
8.5Secrets in sourceThe deployment secrets file is never committed. Secret settings are write-only in the console and never returned by the settings interface.

9. Incident response

NumberQuestionAnswer
9.1Do you have an incident response plan?Yes. The document is available on request.
9.2How do you detect incidents?Outage alert rules on the heartbeat, and security-level events in the activity log.
9.3How are customers told?If a personal data breach affects a customer's Records, its administrators are told without undue delay and within seventy-two hours of RotorLab confirming it (Data Processing Addendum, Section 7). Service incidents are posted on /status in plain words.
9.4Have you had a breach?No, not to RotorLab's knowledge.

10. Data retention and deletion

NumberQuestionAnswer
10.1Can customers export their data?Yes, while the plan is active or in the ninety-day read-only period: an organization export of JSON and CSV, raw flight logs, the audit binder, packages and the API, and a per-person export.
10.2What happens when a contract ends?90 days read-only with export, then 12 months retained with no access, then deletion after an alert 30 days and a final notice 7 days before. Deletion is never automatic; records on legal hold are kept.
10.3How is deletion done and evidenced?One purge driven by a map that names a rule for every table; a table the map does not name stops the purge. A deletion certificate (name, time, actor, reason and basis, counts per table and file store, SHA-256) is kept twelve months. The former administrators are emailed that the records were deleted, with the counts.
10.4What remains after deletion?Activity log rows with content removed, timestamp hashes, an issued-document tombstone, billing records for the accounting period (seven years by default), and a journal line with no customer data.
10.5Do backups outlive deletion?Yes, for a bounded time. Snapshots expire on their schedule (7 days by default; replica snapshots 30 days). Offsite we keep 30 days of restorable history: the database replica, the copies of stored files and a daily copy in a backup vault each reach back 30 days. Backup copies are protected against early deletion, so a Record deleted from the application is gone from every one of its backup copies within 90 days of its deletion (Data Processing Addendum, Section 8). A restore deletes again from the journal.
10.6Stored flight log retentionThe organization chooses; 90 days by default, and keep forever by default for a public body.

11. Data location

NumberQuestionAnswer
11.1Where is customer data stored and processed?The United States, on Microsoft Azure: the production server in Central US (Iowa), and the offsite database replica and offsite backups in East US 2 (Virginia), as the Data Processing Addendum, Section 5, names them. A request may be handled first at an edge location outside the United States (see 11.3).
11.2Can a customer keep data inside its own network?Yes. A government or defense customer can run its own copy in offline mode, which makes no outside connection.
11.3Transfers outside the USA request from outside the United States, and the response to it, may be decrypted and routed at a Microsoft edge location in the visitor's region on the way between the visitor and the server in the United States; Records are stored only in the United States. Optional outside lookups send limited data to other countries when switched on: MET Norway (weather coordinates, Norway) and DJI (key identifiers, China; optional, off by default, enabled only by a customer administrator, no Records, and nothing is sent in offline mode or when left off). An organization can switch weather and lookups off for its members. Standard contractual clauses (Module Two) and the UK addendum apply for EU, UK and Swiss customers (Data Processing Addendum, Section 10).

12. Subprocessors

NumberQuestionAnswer
12.1List your subprocessorsMicrosoft Azure (hosting, backups and the Azure Front Door edge), Stripe (payments), Google Workspace (email delivery) and, only where a customer administrator switches it on, DJI (key identifiers). The full list, with what each receives, is published on RotorLab's buying documents page and in the Data Processing Addendum, Section 5. The outside services the Service calls, with what each receives, are listed in the Privacy Policy, Section 4A.
12.2Notice of changeThirty days' notice of a new subprocessor by email to administrators, with a right to object and to terminate the affected part with a pro-rata refund (Data Processing Addendum, Section 5).

13. Privacy

NumberQuestionAnswer
13.1Do you sign a DPA?Yes, the Data Processing Addendum, and a Government Customer Addendum for public bodies.
13.2Data-subject requestsPer-person export, correction with history, deactivation, and referral to the customer within five business days.
13.3Location privacy controlsAn organization chooses what a flight keeps of where it flew: exact position, rounded area or none. It can switch outside maps, weather, lookups, autocomplete and analytics off for its members.
13.4Analytics and cookiesGoogle Analytics loads only after the visitor accepts; the product's own counts are cookieless.
13.5Do you use customer data to train models?Only if the organization opts in; off by default and revocable. Scores are advisory and never gate anything.

14. Accessibility

NumberQuestionAnswer
14.1Do you have an accessibility conformance report?Yes, a self-assessed report on the VPAT 2.4 template (Section 508 and WCAG editions), available on request. It is based on automated checks and code review. No assistive-technology testing has been done yet; those criteria are marked Not Evaluated. It is not an independent audit.
14.2Target standardWCAG 2.1 level AA. A reported barrier is answered within thirty days.

15. Attestations and certifications

NumberQuestionAnswer
15.1Do you hold a third-party security attestation, audit report or certification?None held. RotorLab has no ISO 27001 certificate and no FedRAMP or GovRAMP authorization, and it has not been assessed against the CJIS Security Policy. The controls in this questionnaire are described by RotorLab, and many can be seen working in the product.
15.2Do you plan to obtain one?No commitment today. A formal attestation will be announced on the trust page when it exists, with its scope, not before.
15.3Third-party assessments the customer may receiveUnder the Data Processing Addendum (Section 9) the customer may ask once a year for the results of any third-party assessment RotorLab holds. None is held today.

Download the questionnaire as a spreadsheet (CSV), or print this page.

Agreements

These documents control. Where an answer above and an agreement differ, the agreement governs.

Terms of Service

The agreement for using RotorLab: plans, payment, your records, and what each side is responsible for.

Privacy Policy

What RotorLab collects, why, and every outside service the product calls, with what each receives (Section 4A).

Data Processing Addendum

How RotorLab processes your organization's records for you: security, subprocessors, breach notice, deletion and transfers.

Government Customer Addendum

The terms a public body adds: governing law, public records and retention, appropriations, data location and access, accessibility and payment.

Subprocessors and outside services

Who else handles data, and what each receives.

These are the subprocessors the Data Processing Addendum, Section 5, authorizes. We give your organization's administrators thirty days' notice of a new subprocessor, and you may object in writing within that period (Data Processing Addendum, Section 5). Records are stored only in the United States.

PartyCountryWhat it doesWhat it receives
Microsoft Corporation (Microsoft Azure)United StatesFor hosting: the production server in Central US (Iowa), which may run in East US 2 (Virginia) while Central US is unavailable; the offsite database replica and offsite backups in East US 2 (Virginia); and Azure Front Door, the edge network that every request to the Service and every response from it passes through, which decrypts that traffic to route and filter it and encrypts it again before passing it on. Front Door handles traffic at the Microsoft edge location nearest the user, which can be outside the United States; it caches no Records; and its request logs are stored in Central US (Iowa). RotorLab's status page runs on the same Microsoft service.Every Record, stored in the United States, and every request and response between a browser, API client or ground station and the Service
Stripe, Inc.United StatesCard payments, subscriptions and invoices, and orders in RotorLab's website shopBilling name, email, address and tax identifier, the plan, and the organization's name and identifier. Card numbers go to Stripe only. Never Records
Google LLC (Google Workspace), the email delivery provider configured on the ServiceUnited StatesSends invitations, password resets, notices, replies to support requests, billing email and outage alertsAddresses and the contents of those messages, which can include details from the Records a notice is about, and no other Records
SZ DJI Technology Co., Ltd.ChinaOptional, off by default, enabled only by a customer administrator. Returns the keys needed to read current-format DJI flight recordsKey identifiers only, no Records. A copy run in offline mode, and a customer that leaves it off, send nothing
The identity provider your organization connects for single sign-onChosen by the customerTakes part in the OpenID Connect sign-in exchange. It is your organization's own processorThe sign-in exchange OpenID Connect defines

RotorLab's own sales and account contacts, including the website's quote, contact and sales forms and the newsletter, are kept in GoHighLevel (HighLevel, Inc., United States), where RotorLab is the controller; it receives no Record. The outside services the Service calls, and what each receives, are listed in the Privacy Policy, Section 4A.

The agreements behind this list: the Data Processing Addendum, Section 5, and the Privacy Policy, Section 4A.

Accessibility

Our accessibility conformance report is available on request. Ask for the current one through Support and a person sends it by email.

Support

Where your organization has signed an order form, its support terms, such as hours and response targets, are set there; otherwise, a person answers by email.

Attestations

None held. RotorLab has no ISO 27001 certificate and no FedRAMP or GovRAMP authorization, and it has not been assessed against the CJIS Security Policy. The controls in this questionnaire are described by RotorLab, and many can be seen working in the product.

Need an answer marked on request?

Ask our sales team, or send your own questionnaire, and a person answers by email, usually within one business day.