Skip to content
Security & trust

Security as engineering,
not paperwork.

We build the platforms behind this site the way we’d want any vendor handling our own data to build them. The same standards apply to engagement files, time entries, portal access, and the Salesforce work we do on your behalf.

This page is the working version of what we’d send a security team during a procurement review. If something here matters to you, it’s worth a fifteen-minute call — we’re happy to walk through the specifics.

At a glance.

The architectural facts that determine everything below.

Cloud
Amazon Web Services, us-east-1 (N. Virginia)
Architecture
Single-tenant serverless — no shared compute, no multi-tenant data stores
Encryption at rest
AES-256 on every datastore (S3 SSE-S3, DynamoDB native)
Encryption in transit
TLS 1.2+ enforced at the CloudFront edge
Identity
Amazon Cognito, TOTP multi-factor required for all portal access
Backups
DynamoDB point-in-time recovery; versioned S3 with deletion protection
Audit trail
AWS CloudTrail across all accounts; CloudWatch Logs with 30-day retention
Data residency
All persistent customer data remains in us-east-1
How we build

Four principles, applied everywhere.

These aren’t aspirations. They’re visible in the Terraform, the IAM policies, and the code review history.

Least privilege, enforced in code

Every Lambda runs under its own IAM role with the narrowest policy the workload needs — not a shared “app role.” Permissions are reviewed every time a function is added or its behavior changes. The same is true for client-side: tokens issued to portal users only carry the scopes their role actually requires.

Defense in depth, not perimeter trust

Each request is authenticated and authorized at the API layer, regardless of where it came from. There is no “internal” network where authentication is skipped. CloudFront enforces TLS and security headers at the edge; API Gateway enforces request shape; Lambda enforces auth and tenancy; DynamoDB and S3 enforce row-level and prefix-level access in IAM.

Infrastructure as code

Every piece of infrastructure — IAM policies, encryption settings, retention, network configuration — is defined in Terraform and version-controlled. Console-only changes are audited and reconciled. This makes drift visible and makes “what is our security posture today?” a question you can answer by reading a file, not by asking around.

Minimum viable data

We collect only what the work requires. Files uploaded for an engagement live in S3 with deletion protection; we don’t move them, we don’t mine them for analytics, we don’t share them. When an engagement ends, your data is returned and removed on request.

Salesforce work

Trust standards a Salesforce admin would recognize.

We work in your org the way we’d expect a senior consultant to work in ours.

Credentials stay inside Salesforce

We never copy a Salesforce password, security token, or session ID out of the org. Authentication uses OAuth 2.0 via Connected Apps with refresh tokens scoped to the minimum permissions; outbound calls use Named Credentials, not literal endpoints with embedded secrets. If you revoke our Connected App, our access is gone in seconds — nothing to clean up.

Built to Salesforce Security Review standards

Anything we build that’s a candidate for AppExchange or a managed package follows Salesforce’s Lightning component security guidance, CRUD/FLS enforcement, sharing keyword discipline, and CSP-safe coding patterns. We use the Salesforce Checkmarx scanner against our managed-package source on every meaningful change.

No client-side secrets, ever

Lightning Web Components never embed API keys, OAuth client secrets, or third-party tokens. Anything that needs credentials runs server-side — in Apex with Named Credentials, or in a backend Lambda authenticated via the user’s session.

Sandboxes for everything risky

Schema changes, data loads, integration testing, anything that touches a record at scale — happens in a sandbox first, every time. Production changes go through a documented change window with rollback steps written in advance.

Your data

Plain answers to the questions a data-protection team asks.

What we store
Account profile (email, name, role), engagement metadata (project name, dates, members), files uploaded by you or your team, time entries you provide for monthly reporting, and audit logs of administrative actions.
What we don’t store
Salesforce passwords, Salesforce security tokens, session IDs, OAuth client secrets, payment card information, or any client data we have not been explicitly authorized to handle.
Where it lives
DynamoDB tables and S3 buckets in AWS us-east-1, each scoped to a single application and protected by IAM. There is no shared database across customers and no third-party data warehouse.
How long
Engagement files: retained for the life of the engagement plus a configurable retention period (default 90 days) — or until you ask us to delete. Logs: 30 days. Audit trail: 1 year. Account data: until you close the account.
Who can see it
Engagement files and time entries are visible only to engagement members and the blufyre.com owner. Cognito enforces this in every API call — there is no “admin view” that bypasses tenancy checks.
AI handling

How we use AI — and how we don’t.

Owner-only, opt-in

AI assistance (currently used to parse owner-supplied consultant time entries into structured rows) is an Owner-only feature. No client data is sent to a model without an explicit Owner action.

Hosted on AWS, not third-party APIs

All AI calls run on Amazon Bedrock, which keeps the request and response inside AWS’s US regions. We do not send data to OpenAI, Anthropic’s public API, or any other third-party LLM endpoint.

No training on your data

Amazon Bedrock’s service terms prohibit using customer prompts and responses to train foundation models. The inputs and outputs are not used to improve any model.

Identity & access

Every account, every action, accountable.

Multi-factor, not optional

Every portal account — owner, consultant, client — requires TOTP-based multi-factor authentication. There is no “skip MFA” toggle and no SMS fallback. Compromised passwords alone cannot grant access.

Separated by role

Owner, consultant, and client portals are served from distinct hostnames and use distinct Cognito groups. A client account cannot reach owner APIs even with a valid token; group membership is checked on every request, server-side.

Short-lived tokens

Access tokens issued to portals are short-lived and refreshed against Cognito. Revoking a user disables their sessions immediately at the next refresh. We do not issue long-lived service tokens to any portal client.

Auditable administrative actions

Every administrative action — creating a user, granting access to an engagement, deleting a file — is logged with the actor, timestamp, and target. The audit trail is queryable and retained for one year minimum.

Found something?

Report it — we want to know.

If you believe you’ve found a security vulnerability in anything we run — this site, the portals, the APIs — tell us. Please don’t exploit it, don’t exfiltrate data, and don’t go public before we’ve had a chance to fix it.

We respond within one business day. Coordinated disclosure preferred; we will credit researchers who follow responsible-disclosure practice in any public writeup of the issue.

Report to
david@blufyre.com
Response window
One business day, acknowledged.
Sub-processors

Who we trust with what.

We use the smallest possible vendor set on purpose. The fewer vendors in the path, the fewer trust boundaries to defend.

Amazon Web Services
Primary infrastructure: compute (Lambda), storage (DynamoDB, S3), identity (Cognito), email (SES), CDN (CloudFront), AI (Bedrock).
us-east-1 (cross-region inference for Bedrock may route within US regions)
Squarespace Domains
Authoritative DNS for blufyre.com. No customer data is transmitted to or stored at Squarespace.
Distributed

Material changes to this list — adding or removing a sub-processor — are reflected here within seven days.

Want the long version?

Procurement team has follow-up questions? Need a walkthrough of the architecture or a copy of our standard MNDA? Book a fifteen-minute call.

Book the call