Safeguard
Security Guides•

Separation of duties in a ten-person fintech: who holds which access?

A small fintech can still split who writes, approves, deploys and holds keys. Here is a practical split using least privilege, MFA and logging.

Safeguard Security Team
5 min read

A ten person fintech can separate duties without hiring a security team. Make sure the person who writes a payment change is not the sole person who approves it, deploys it, or holds the production keys. Enforce multifactor authentication, least privilege and logging across source control, CI and cloud.

Why small teams need it

The OWASP Software Supply Chain cheat sheet calls compromised accounts, particularly privileged ones, a significant threat. Account takeover can let an attacker inject code into legitimate dependencies, manipulate CI/CD pipeline execution, or swap a benign artifact for a malicious one. Its recommended basics include least privilege, separation of duties, enforcing MFA, rotating credentials and never storing credentials in clear text or in source control.

In a tiny team, everyone has every permission because it is convenient. That convenience is exactly what an attacker, or one honest mistake, can exploit.

Four roles to keep apart

DutyWho typically does itControl that separates it
Write the changeAny engineerPull requests required, no direct pushes
Approve the changeA different engineer, a code owner for payment pathsRequired approvals and code owner review
Deploy the changeA pipeline, approved by someone other than the authorEnvironment reviewers with self-review blocked
Hold production secretsThe runtime and a very small groupSecrets manager with fine-grained access

You will not always have enough people for four separate individuals. The goal is that no single person, and no single compromised account, can complete the whole path from writing to production alone.

Practical settings

  1. Enforce MFA on source control, CI, cloud consoles and the secrets system.
  2. Make production access a role that people request and lose, rather than a standing default. Time boxed access is easier to defend.
  3. Require pull request approvals with code owner review on payment paths, as covered in our post on two person review.
  4. Use a production environment that needs approval from someone other than the author.
  5. Give CI designated service accounts scoped to the secrets they need. OWASP's secrets guidance says each pipeline run should be attributable to the person who defined or triggered it.
  6. Limit who can edit workflow files, since those files control what runs.

Logging that supports the split

OWASP's supply chain guidance says all systems in the supply chain, including source control, build tools, delivery mechanisms, artifact repositories and runtime systems, should log authentication attempts, configuration changes and other events useful for spotting anomalous behavior. It adds that logging is not enough: logs must be monitored and acted upon, ideally in a central place.

For a small team, that can mean a short list of alerts: a new admin added to the repository, a change to a branch rule, a new deploy key, a production secret read outside normal hours.

Handling the awkward cases

  • The founder with admin everywhere. Use a separate admin account for administration and a normal one for daily work. Review that the admin account has MFA and a recovery plan.
  • On call emergencies. Define a break-glass path with named people and a record. Do not leave an unrecorded shared administrator login.
  • Contractors. Give the lowest role that works on the specific repository, with an end date.
  • Automation accounts. Give each a name, an owner and a purpose.

Review quarterly

Access drifts. Once a quarter, list who can approve, deploy and read production secrets, and remove anyone who no longer needs it. Write down the date and the changes. That record is useful if a partner or customer asks how access is controlled.

Be honest about the limits

Separation of duties reduces single points of failure. It does not stop collusion, and it depends on the underlying tools being configured as you believe. Test it: ask an engineer without special rights to try to deploy to production directly and confirm it fails.

Where Safeguard fits

Safeguard's agent identity feature helps you track automated actors, and its policies and gates enforce checks at the pull request. A free scan is available at gold.safeguard.sh/scan.

Try it yourself

Click through it at your own pace, or open it full screen.

Click through and note who or what must approve before a change can move forward.

Quick check

Can one person be both approver and deployer?

It is better to avoid it for payment code. If the team is too small, add a compensating control such as a recorded second review after the fact.

What is the quickest first step?

Turn on MFA everywhere and require pull request approval on your payment repository.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.