Finding the answer should not require a security engineer.

Every readiness question below explains where to look, what the setting means, and when the answer is something your team needs to decide or document rather than find in a dashboard.

Data isolation

01

Is Row-Level Security enabled on every table holding customer data?

If you use Supabase (most common for small teams): go to supabase.com and log in → click into your project → in the left-hand menu click Table Editor or Authentication → open the Policies tab. Each table shows a green "RLS enabled" tag, or a warning that it's off. A table with no policies listed counts as "no."

If you use a different database host (AWS RDS, Google Cloud SQL, PlanetScale, etc.): this is a developer-level setting inside the database console, usually under something called "row security" or "permissions." It's faster to just ask whoever set up the database.

Not sure who manages your database? Check your hosting bill for a company name - Supabase, AWS, and Google Cloud are the most common - or ask whoever built the product.

Has anyone tested whether one customer can reach another customer's data by changing an ID?
Not a dashboard setting - it's a quick test. Log in as one test account and note an ID from something you own (an order, a profile). Log in as a second test account and try changing that ID in the address bar or app. If you can see the first account's data, that's a "no." Ask a developer to try this once if you're not comfortable doing it yourself.
Are your service-role / admin API keys scoped down, or do they have full access?

If you use Supabase: supabase.com → your project → Settings (gear icon) → API. You'll see two keys - anon (safe to expose publicly) and service_role (full access, must stay secret). Ask your developer where the service_role key is used. It should only run on a server you control, never inside code a visitor's browser can see.

If you use Firebase: Project Settings → Service Accounts.

Quick question to ask instead of digging in yourself: "Where does our admin key get used?" - if the answer is "in the website code," that's a "no."

Backups & resilience

02

Do you have automated backups, and has anyone tested a restore?

If you use Supabase: supabase.com → your project → SettingsDatabase → scroll to Backups. It shows whether backups are on, how often, and whether Point-in-Time Recovery is available (usually a paid-plan feature).

If you use AWS RDS: your database's page in the AWS console → Maintenance & backups tab.

Testing a restore isn't a dashboard check. It means actually restoring a backup once, usually to a spare copy, to confirm it works. Ask your developer if this has ever been done.
Do you have a written RTO/RPO for your main database?
Nothing to look up here - it's a decision to write down. A one-sentence version is enough to start: "If our database goes down, we aim to be back up within [X hours], and we're OK losing at most [Y minutes] of data." Put that sentence somewhere your team can find it.
If a critical dependency goes down, does your app degrade gracefully or break?
Not a setting - a test. Ask a developer to temporarily turn off a non-critical outside service in a test environment (never your live site) - like the email sender - and see what happens. Everything else still working is a "yes"; the whole site breaking is a "no."

Access governance

03

Is MFA required - not just available - for everyone with access?

For your own team's logins to tools like GitHub, Supabase, or your hosting provider, check each one separately - most have this under an admin or organization security setting:

GitHub: your organization → SettingsAuthentication security → look for "Require two-factor authentication for members."

Google Workspace: admin.google.comSecurity2-Step Verification → check the enforcement setting.

For your product's own users (if you use Supabase Auth): AuthenticationProviders / Settings - check whether MFA is required or just offered.

Is there a written checklist for revoking access when someone leaves?
This is a checklist you write once, not something you'll find. A starting version: when someone leaves, remove their access from every tool on a short list - email, GitHub, your database, hosting, payment processor. Write that list down somewhere the team can find it.
Do you rotate API keys on a schedule, or only after an incident?

Check the "created on" date next to each key: Supabase (Settings → API), Stripe (Developers → API keys), AWS (IAM → Users → Security credentials). A key that's a year or more old and has never been replaced is worth flagging.

Engineering process

04

Is your main code branch protected - review required, no direct pushes?

If your code is on GitHub: your repository → Settings tab → Branches (left menu) → look under Branch protection rules for your main branch. Nothing listed there means it's not protected.

If you use GitLab: Settings → Repository → Protected branches.

Are secrets (API keys, passwords) kept out of your code repository?

In your GitHub repository, use the search bar (magnifying glass icon) and search the repo for words like API_KEY or password. If real key values show up in the code itself, that's a "no." Keys should live in your hosting provider's Environment Variables page instead - in Vercel or Netlify: your project → SettingsEnvironment Variables.

Do you verify signatures on webhooks from third parties?

If you use Stripe: DevelopersWebhooks → click into each endpoint and confirm a "signing secret" is set up. Ask your developer to confirm the code actually checks it - having a secret listed isn't the same as using it.

People & policy

05

Do you have a written incident response plan?
Not something to find - something to write. One page is enough: who gets notified first, and what's the first thing they do. Save it somewhere the whole team can reach, even during an outage.
Has anyone documented a risk assessment in the last 12 months?
Also a document, not a dashboard. A first pass can be a short list: the five things most likely to go wrong, and how bad each would be. Revisit it once a year.
Do new hires and contractors get security or privacy training?
Doesn't need to be formal. A short document new hires read in their first week - covering passwords, phishing, and who to tell if something looks wrong - is enough to start.

Vendor management

06

Do you have a list of every vendor that touches customer data?

The fastest way to build this: open your company card or billing statement and write down every recurring software charge - that covers most of it. Add anything else that touches customer data even if it's free, like an email or analytics tool.

Do you have signed DPAs with those vendors?

Most vendors publish their Data Processing Agreement on their own site - search "[vendor name] DPA" or look under Legal, Trust, or Privacy on their homepage. Supabase, Stripe, and Google Workspace all publish one without needing to contact anyone.

Has anyone reviewed your critical vendors' security posture?

Search "[vendor name] trust center" or "[vendor name] SOC 2." Most larger vendors - Supabase, Stripe, AWS, Google, GitHub - publish a security or trust page, and some let you request their own SOC 2 report directly from it.

Steps here reflect how these providers' dashboards commonly work at the time of writing. Provider menus change, so if a step doesn't match what you see, search the provider's help site for the setting name in bold.