Security

Access, MFA and an audit trail you can review

Your workspace comes from your signed session, cloud access is read-only unless you allow changes, cloud keys and MFA secrets are encrypted, and sensitive actions are recorded.

There is no SAML single sign-on; sign-in is email and password.

The problem

A FinOps tool reads your bill and can change your cloud, so it has to pass a security review before anyone connects it. That review needs specific answers about access, credentials and records.

How it works

  1. Sign in

    Email and password, then a second factor where MFA is on: an authenticator code, or Auth0 where the installation offers it. Sign-in attempts are rate-limited per IP address.

  2. Work in your workspace

    Every request uses the workspace in your signed session, and your role decides what you can see and change.

  3. Leave a record

    Sensitive actions go into the audit trail, which you can filter in the app and the owner can export.

  • Read-only

    cross-account role GetFinOps asks you to create, unless you turn on remediation

  • AES-256-GCM

    encrypts Google Cloud keys, the Slack bot token and authenticator-app secrets

  • 10

    single-use recovery codes with the built-in authenticator-app option (TOTP)

  • 2 hours

    limit on a GetFinOps staff support-access grant; 30 minutes by default

Capabilities

Workspace isolation, MFA, encrypted credentials and a tamper-evident audit trail.

  1. Workspace isolation

    Your workspace is taken from your signed session, not from anything a request supplies, and reads are scoped to it. GetFinOps staff can enter a workspace only through a named, time-limited grant that is recorded.

  2. Roles and MFA

    Owner, admin, member and viewer roles set what each person can do. Multi-factor authentication uses an authenticator app with single-use recovery codes, or Auth0 where the installation offers it, which can require a paid plan and a separate add-on.

  3. Credentials handled carefully

    AWS access uses temporary credentials from a role you create, guarded by an External ID. Google Cloud service-account keys, the Slack bot token and authenticator secrets are encrypted with AES-256-GCM. Passwords are hashed with Argon2id.

  4. A tamper-evident audit trail

    Sign-ins, MFA events, approvals, executions, configuration changes, data exports and support access are recorded. Each entry stores a checksum computed with SHA-256 over its core fields, so a change to them can be detected.

In depth

Who can see a workspace

When you are signed in, every request uses the workspace in your signed session. A different workspace in the web address or a request header does not change it, and database reads are scoped to your workspace.

Inside a workspace, four roles set what people can do: owner, admin, member and viewer. Deleting the workspace, changing roles, creating API tokens and exporting the workspace’s records are owner-only.

GetFinOps staff have no standing access to customer workspaces. A named operator must create a grant for one workspace, lasting 30 minutes by default and two hours at most, and creating or revoking it is recorded in the audit trail.

Signing in and MFA

Passwords are hashed with Argon2id. Session cookies are HttpOnly, Secure and SameSite=Lax, and sign-in attempts are rate-limited per IP address. A token issued partway through sign-in, before the second factor, cannot be used as a session.

Whether MFA is required is set for the installation. It can be phased in by workspace, role and start date, and new users can be required to enrol before their first session. It comes in two forms:

  • An authenticator app (TOTP). The secret is stored encrypted, a code cannot be used twice, and each challenge allows five attempts. Ten recovery codes are shown once and stored only as salted hashes.
  • Auth0, which a workspace admin can choose for new enrolments where the installation offers it; it can require a paid plan and a separate add-on. People already enrolled keep the factor they have.

Cloud access and stored credentials

For AWS, you create an IAM role that trusts GetFinOps and requires your workspace’s External ID, and GetFinOps assumes it for temporary credentials. No AWS access keys are stored. The role is read-only unless you turn on EnableRemediation, which adds a short list of write permissions.

GetFinOps encrypts these stored credentials with AES-256-GCM before they reach the database: Google Cloud service-account keys, the Slack bot token and authenticator-app secrets. API tokens are stored only as SHA-256 hashes, carry a read or write scope, and can expire. On the hosted service, the database is encrypted at rest and is not reachable from the internet.

The audit trail

GetFinOps records sign-ins and failed sign-ins, MFA enrolment and verification, approvals and denials, executions and rollbacks, configuration changes, data exports, Slack connections and support-access grants. In the app you can filter recent entries by event type and person, and open the full trail for a single execution. The API also filters by action, resource and date.

Each entry stores a SHA-256-based checksum over its entry ID, event type, workspace, run ID, actor, time and details when it is written, so an edit to those fields no longer matches. When personal details are removed, the checksum is recomputed and the original kept, so a lawful redaction can be told apart from tampering.

Data sent to the AI model

Narratives, the daily brief, board chat and the in-app assistant use Anthropic’s models. Before a prompt is sent, identifiers in known formats are replaced with placeholders: AWS ARNs and account IDs; EC2 instance, volume, snapshot and security-group IDs; and Google Cloud resource paths, service-account addresses and project numbers.

This is pattern-based, plus an exact match on your workspace ID and each connected account’s number or project ID. It covers the report and audience narratives, including budget names, daily briefs on every plan, board chat, the in-app assistant, the brief on your first scan, and report narratives sent back as context. The onboarding assistant sends your company name and account label as stored, and the cross-account analysis checks an account’s label only against that account’s own identifiers. Resource names, tags, labels and anything you type are sent unchanged. Privacy Policy §7 lists what is sent.

Exporting and deleting your data

Any signed-in user can download their own data. The workspace owner can download the workspace’s records, including members, the audit trail and cloud-account settings. Both come as JSON, or as CSV one table at a time, and every export is recorded.

The owner can delete the workspace. It is suspended first and can be restored during the recovery window, 14 days by default. After that, a purge job cancels the subscription, removes the workspace’s people from any external MFA provider, and erases the workspace’s data. The audit trail is kept with personal details removed, along with a record that the erasure happened.

What it does not do

  • The audit checksum is not a signature: someone with database access could recompute it.
  • MFA is not required for every user by default.
  • Identifier replacement is not anonymisation.
  • There is no SAML single sign-on; sign-in is email and password.
  • Deleting a workspace does not remove copies in encrypted backups until those backups expire.

FAQ

Questions

Do you support MFA?

Yes. The built-in option is an authenticator app (TOTP) with ten single-use recovery codes. A workspace admin can choose Auth0 for new enrolments where the installation offers it, which can require a separate add-on. Whether MFA is required is set for the installation; people who are not yet required to enrol can sign in and are prompted to set it up.

How is our data kept apart from other customers’ data?

On the hosted service, customers share one database, and the application scopes what it reads to the workspace in your signed session. A self-hosted install runs in your own account and is meant for one workspace.

Is our data sent to an AI provider?

Yes, to Anthropic, to write narratives and briefs and to answer questions. Before sending, account numbers, ARNs, common EC2 resource IDs, Google Cloud resource paths and service-account addresses, your workspace ID and each connected account’s number or project ID are replaced with placeholders, including in budget names and in report narratives sent back as context. The onboarding assistant sends your company name and account label as stored, the cross-account analysis checks an account’s label only against that account’s own identifiers, and resource names, tags, labels and anything you type are sent unchanged.

Can we export our data, or have it deleted?

Any user can export their own data, and the owner can export the workspace’s records, as JSON or as CSV one table at a time. Deleting a workspace suspends it for a recovery window, 14 days by default, and a purge then erases its data.

Are you SOC 2 or ISO 27001 certified?

Not today. GetFinOps does not hold a SOC 2 report or an ISO 27001 certification. Our Security Policy describes the practices we follow.

Try free — no credit card

Create a workspace and connect an AWS or GCP account, or book a demo first.