GitLab for financial services

Self-managed GitLab for banks and payment firms, planned around SOX and PCI DSS change evidence, separation of duties, Geo disaster recovery and keeping source code in-house.

On this page

Why financial services teams self-manage GitLab

Banks and payment firms usually self-manage GitLab when their source code, CI/CD pipelines and approval records fall inside audit scope. Under SOX Section 404, management must assess internal control over financial reporting each year, and the SEC's guidance names program development, program changes, computer operations and access to programs and data as example IT general control areas. Under PCI DSS, any system that could affect the security of the cardholder data environment may be in scope, which can include build runners and deployment tooling. The fit comes from keeping repositories, runners and merge approvals in infrastructure the firm controls, so the firm can show who changed what, when, and who approved it. Your first task is to ask your external auditor and QSA which IT general controls and scope boundaries they expect to test, then map GitLab's audit events, protected branches and approval rules to those answers.

Self-managing changes the build in three concrete ways. First, GitLab's source is open core: content under the ee/ directory is covered by the GitLab Enterprise Edition license, while the rest is under the MIT Expat license. Legal and procurement teams should confirm which edition and features the controls depend on before design starts. Second, upgrades must pass through required upgrade stops, which fall at versions x.2, x.5, x.8 and x.11 since GitLab 17.5, for example 19.5, 19.8 and 19.11. Each stop is a change event that needs a plan, a rollback path and retained evidence, so schedule them as controlled changes rather than routine patching. Third, the Linux package and the other install methods differ in how they handle backups and node roles, so the team should pick one method and document it in the change record.

Which financial requirements shape a GitLab build

This table maps each financial requirement in scope to what it means for repositories, approvals, runners and hosting in a self-managed GitLab build. Read each row as a design question to answer before installation, not as a statement that a control passes or that a regulator is satisfied. The main takeaway is that most of these requirements land on the same few decisions: where evidence is kept, who can approve changes, which runners touch cardholder or production data, and where the instance and its backups physically sit.

RequirementWhat it asks forBuild implication in GitLab
SOX Section 404 and SEC Release 33-8810Management assesses internal control over financial reporting, including IT general control areas such as program changes and access to programs and dataTreat merge requests, protected branches and pipeline history as change records. Confirm with your auditors which IT general controls apply to your facts and circumstances
Program change controls (SEC Release 33-8810)Changes to financial systems follow a controlled, traceable processEnforce merge request approvals and protected branches, and keep deployment jobs tied to approved commits. Ask your auditors which evidence they will request
Access to programs and data (SEC Release 33-8810)Access to source code and systems is limited to appropriate people and reviewedConnect the instance to corporate identity, plan role assignments per project, and confirm how group membership changes are recorded
PCI DSS v4.0.1 scopeSystems that store, process or transmit cardholder data, or could affect that environment, are in scopeDecide which repositories, runners and deployment targets fall inside the cardholder data environment. Isolate those runners and keep out-of-scope projects separate
FTC Safeguards Rule (16 CFR 314.4(c)(5))Multi-factor authentication for anyone accessing an information system, unless the Qualified Individual approves an equivalent control in writingEnforce two-factor authentication on the instance and on any SSO path. Record any written exception for an equivalent control before it is used
DORA Article 28(3) and 28(8)A register of ICT contracts, plus documented, tested exit strategies for services supporting critical or important functionsRecord the self-managed GitLab deployment and its supporting providers in the register. Plan and test an exit path that includes repository export and pipeline migration
DORA Article 30(2)Contracts state where services are provided and data is processed, with advance notice of changes and data return on terminationChoose and document hosting locations for the instance, runners, backups and Geo secondary. Confirm data return terms with any vendor or hosting provider
Swift Customer Security Controls FrameworkIndependent assessment of Swift controls, with annual attestation for Swift users in scopeIf the GitLab instance supports Swift-connected applications, map its hardening, access and change evidence to the relevant controls. Confirm the control set with Swift's current documentation

Edition and tier choices for regulated change control

GitLab Self-Managed is offered in three tiers: Free, Premium and Ultimate. The published pricing lists GitLab Free at no cost, Premium at 29 US dollars per user per month billed annually, and Ultimate as custom priced. All three tiers are available for self-managed installations, so the choice is about feature scope rather than where the software runs. For a bank or payment firm, the tier decision should be made against a written list of the controls and evidence the change process must produce, not against the headline price.

  • Free: Covers core source control, merge requests and basic CI/CD for teams whose evidence needs are limited.
  • Premium: Adds advanced CI/CD and priority support, and includes Geo for disaster recovery.
  • Ultimate: Adds application security testing, software supply chain security, vulnerability management and compliance features.
  • Pricing basis: Premium cost is per user, so the number of licensed accounts, including contractors and service accounts, drives the annual figure.
  • Quote requests: Ask for Ultimate pricing in writing against your user count and named feature list.

Confirm the current feature placement for each tier on the GitLab pricing page before you write the procurement request, because tier contents change over time.

Configuration that matters for banks and payment firms

Six configuration areas decide whether a self-managed GitLab instance supports change evidence, access control and recovery for a regulated financial firm. Each card names the decision to make early and the point to confirm with the vendor before the design is fixed.

Separation of duties with protected branches

Developers, reviewers and release approvers should be distinct roles in GitLab. Protected branches, required approvals and merge rules enforce who can change production code, so the approval trail can be shown to an auditor. Decide early which approval rules apply to which repositories, and confirm with GitLab how approval rules and merge request settings behave on your edition and version.

Federated sign-in and provisioning

Map GitLab roles to your corporate identity provider rather than local accounts. The supported options include SAML, LDAP, generic OAuth 2.0, Kerberos, JWT, smart card authentication and SCIM provisioning. Confirm which combination your identity team will operate, and how leavers are deprovisioned, because access removal is usually tested in IT general control reviews.

PCI scoping of runners and environments

Any runner, job or environment that touches cardholder data environment systems can bring GitLab into PCI DSS scope. Keep payment deployment pipelines on dedicated runners in segmented networks, and document which projects and variables are in scope. Ask your QSA how they want the boundary described before you agree the network design.

Geo for a warm-standby secondary region

Geo provides a continuously synchronized secondary site in another region for disaster recovery. It is available on Premium and Ultimate for self-managed instances. Define the recovery objectives your business continuity plan requires, then confirm with GitLab what replicates, what needs manual steps during failover and how the secondary is tested.

Backups and secrets handling

A backup that omits the secrets file cannot restore encrypted CI variables or two-factor data. Plan backups of repositories, the database, object storage and the configuration secrets together, store them outside the primary failure domain, and rehearse restores. Confirm with GitLab the exact backup components and the steps for restoring secrets on a rebuilt node.

Offline and air-gapped install path

Some payment firms keep build and source systems in segregated zones with no internet egress. GitLab documents offline environments, including separate guidance for security scanners and the self-hosted AI features. Confirm early which install method your platform team will use, how packages and scanner data reach the network, and which features are unavailable offline.

How a regulated GitLab rollout is phased

The sequence moves from control scope to a tested, evidenced production instance, so each phase hands the next one settled decisions. Auditors and internal audit see the controls designed before data and teams arrive.

  1. Scope the controls and map them to evidence

    Compliance, internal audit, the change advisory function and the GitLab owners agree which systems fall under SOX, PCI DSS or other obligations, which financial reporting risks depend on GitLab, and which evidence each control must produce, such as approvals, merge records and deployment logs. The work is done when every in-scope control has a named owner, a stated evidence source and a written decision on what stays out of scope. Ask your assessor to review this map before any build starts, since the IT general control areas that matter depend on your own facts and circumstances.

  2. Design identity and role model

    The team defines how people sign in through corporate identity, how groups map to GitLab roles, and who may approve merges, change protected branches and administer the instance. Separation of duties is written down here: developers, reviewers, release approvers and administrators are distinct, and no single account can both change and approve production code. The phase closes when a role matrix has been reviewed by compliance and tested with sample accounts in a non-production instance. Confirm provisioning and deprovisioning behavior with your identity provider before users are onboarded.

  3. Install and harden the instance

    The platform team installs self-managed GitLab on infrastructure you control, using the install method and sizing chosen for your user count, then applies the hardening settings for application, CI/CD, configuration files and the operating system. Each change is recorded in configuration management so the baseline can be reproduced and shown to an auditor. The phase is complete when the hardened baseline passes an internal checklist and every deviation has a documented, approved exception. Hardening guidance is described as a work in progress, so roll it out gradually and record which settings you adopted.

  4. Isolate the runner fleet

    The team places runners in segmented networks, separates runners for production deployments from those for development, and sets how secrets, environments and job images are scoped to each group. Runner and GitLab versions are kept aligned, and protected variables are limited to protected branches. Done means a test pipeline from an unprivileged project cannot reach production credentials or the production network, and the isolation test is repeatable. Record the runner configuration as evidence, because deployment controls rely on it.

  5. Test Geo failover and backup restore

    Operations runs backup jobs, restores them into an isolated environment and, where a Geo secondary is in scope, performs a planned failover and failback. The team measures what was restored, checks repository, database and object storage consistency, and confirms that secrets needed for restore are recoverable. The phase closes with a written test report that names the recovery objectives the business accepted and any gaps still open. Ask your resilience and operational risk owners to define those objectives before testing, and keep the results with your ICT service records.

  6. Run a pilot with selected teams

    A small group of teams uses the new instance for real work under the agreed approval rules, and the team collects feedback on pipelines, approvals and access requests. Compliance samples pilot changes and confirms the evidence trail is complete from request to deployment. The phase is done when the pilot has produced a clean evidence sample, the identified defects are fixed or accepted in writing, and the runbooks have been used at least once for a real support task. Migration of existing repositories should be proven here rather than during cutover.

  7. Cut over and collect evidence

    Teams move to the production instance in agreed waves, the legacy system is set to read-only for in-scope code, and the change record for the cutover itself is captured. Compliance confirms that approvals, access reviews and runner logs flow into the evidence store from the first day. Cutover is complete when all in-scope teams are live, the legacy write path is closed and the first evidence package has been reviewed by internal audit. Keep the evidence cycle running after cutover, since assessors will request samples from both the old and new periods.

Keeping upgrades and recovery inside change control

Every GitLab upgrade is a production change, and for a bank or payment firm it belongs in the same change record, approval path and evidence file as any other change to a system that supports financial reporting or cardholder data. GitLab ships a minor release on the third Thursday of each month and patch releases twice a month, and it currently maintains 19.5, 19.4 and 19.3. Bug fixes are backported only to the current stable release, but security fixes also reach the previous two monthly releases. That means a firm running an older minor version may receive security fixes while missing bug fixes, so the change calendar should set a target version and a maximum lag, and the firm should confirm both with its own risk function. Required upgrade stops fall at x.2, x.5, x.8 and x.11 (for example 19.5, 19.8 and 19.11), so a jump across a stop is not a shortcut the firm can take.

Each upgrade step needs a written rollback plan that has been rehearsed on a non-production copy. Before the change, take a backup with the GitLab backup and restore tooling and confirm the gitlab-secrets.json file is captured separately, because a restore without it leaves encrypted data unreadable. Record the version path, the staging test results, the approver and the rollback decision point. Restore testing should be performed on a schedule, not only before upgrades, and each test should produce a record of the restore time, the data checked and any gaps. The firm must confirm its own recovery time and recovery point objectives with the business owners and then check that the Geo secondary, if used, and the backup procedure can meet them. Geo provides a warm-standby secondary in another region, and failover should be exercised as a documented, approved drill whose results are kept with the change evidence.

Compliance considerations DeployOpen prepares for

The controls below are the places where a self-managed GitLab instance produces or holds evidence that financial regulators, auditors and assessors examine. DeployOpen prepares the systems, controls and evidence for each area. It does not issue audit reports, attestations or certifications, and independent auditors and assessors decide conformity.

SOX ICFR change evidence

Under SOX Section 404, management assesses internal control over financial reporting, and IT general controls over program changes and access to programs and data are often in scope. For GitLab, that means merge request approvals, protected branches and pipeline records must be configured so that every production-affecting change has a traceable reviewer and approver. Confirm with your auditor which change populations they will sample before you define the approval rules and retention you rely on.

Separation of duties in merge approvals

Developers who write a change should not be the only people who approve or deploy it. The design work is to decide which groups can approve, whether authors can approve their own merge requests, who can change protected branch rules, and who administers the instance. Document these decisions as part of the change-control design so that the configuration itself becomes evidence, and test it with the people who will actually raise changes.

PCI DSS v4.0.1 scope and runner isolation

If pipelines build, test or deploy anything that touches the cardholder data environment, the CI/CD system may fall inside PCI DSS scope. Shared runners, Docker-in-Docker and deploy credentials are the usual scope questions, so plan dedicated runners for cardholder workloads and keep their network path separate from general build jobs. Confirm scope with your QSA before building the pipeline.

DORA register and exit strategy inputs

Where GitLab is an ICT service supporting a critical or important function, DORA expects the institution to record it in its register of information and to hold a tested exit strategy. For a self-hosted GitLab, the useful inputs are documented data locations, export paths for repositories, issues and pipelines, and a restore procedure. Your legal team should confirm which contractual terms apply to any hosting or support provider you use.

FTC Safeguards MFA

Non-bank financial institutions under FTC jurisdiction must require multi-factor authentication for anyone accessing an information system unless the Qualified Individual approves an equivalent control in writing. For GitLab, that means enforcing two-factor authentication for all accounts, including service-linked accounts that can reach repositories, and documenting any exception. Confirm with your Qualified Individual which accounts and access paths are in scope.

What financial firms ask before hiring a GitLab partner

What drives the cost of a self-managed GitLab project for a bank or payment firm?

Scope drives most of the cost: how many sites, how many users, how large the runner fleet is, and how many systems GitLab must connect to. Each added integration, such as an identity provider, a secrets manager or a Kubernetes cluster, adds design, build and test work. Licensing is a separate line. GitLab Free costs 0 US dollars, while the Premium tier is listed at 29 US dollars per user per month billed annually according to the GitLab pricing page, and Ultimate is custom priced. Ask the partner to separate one-time work (design, installation, migration, hardening, evidence set-up) from recurring work (upgrades, backups testing, support) and to price each integration and each site on its own line.

Can our internal platform team run this without an outside partner?

Often yes, if the team already runs Linux, PostgreSQL, object storage and CI at production standard and has time for a planned project. The hard parts are usually not the installation. They are the upgrade discipline, the required upgrade stops, backup restore testing, runner isolation and building evidence for change management. GitLab publishes a maintenance policy and upgrade paths, so the team needs someone who reads them every month, not once. Compare the internal estimate with a written scope from a partner, and check whether the internal team can stay on the work after go-live.

What does the firm itself need to provide during the project?

A project of this kind needs named people from several groups, and the firm should commit them before work starts. Typical needs include:

  • Control owners who define which changes need approval, which evidence auditors will ask for, and how separation of duties applies to merges and deployments.
  • Identity administrators who manage SAML, LDAP or SCIM connections to the corporate directory.
  • Network and cloud staff who provide hosts, storage, DNS, certificates and firewall rules inside the firm's accounts.
  • Change board time to approve the cutover, the upgrade plan and the disaster recovery test.

Ask the partner to list these roles and the hours they will be needed, in the written scope.

How long does a self-managed GitLab rollout take for a financial firm?

Duration depends on scope rather than on the GitLab product itself: the number of sites, the number of users, the scale of the reference architecture, the volume of repositories and pipelines to migrate, and how many approvals the change board requires. Geo disaster recovery and high availability add testing time, because failover must be proven, not assumed. No supplied figure sets a typical timeline, so ask the partner for a phased plan with milestones, a named exit criterion for each phase and the dates on which the change board must approve each one. Ask what happens to the schedule if identity or network approvals arrive late.

Can we keep our source code and pipelines inside our own infrastructure?

Yes. Self-managed GitLab runs in the cloud accounts, data centers or air-gapped networks that the firm controls, so repositories, merge request history, artifacts and CI logs stay there. Under DORA Article 30(2), an ICT services contract must state where services are provided and data processed, and that clause applies to any outside partner that touches the system. Confirm in the contract who has access to production hosts, who holds administrator credentials and where backups are stored. Note that GitLab's open-source core is available under the MIT Expat license outside the ee/ directory, while the ee/ content is under the GitLab Enterprise Edition license, so ask the partner to confirm which edition and license terms apply to your deployment.

How do we check that Geo disaster recovery will work before an incident?

Geo provides a warm-standby secondary site in another region that is continuously synchronized, according to GitLab's Geo documentation, and it is available in the Premium and Ultimate tiers for self-managed GitLab. A standby that has never been promoted is not proof of recovery. Ask the partner to plan a scheduled failover test, a backup restore test and a record of the recovery time and data loss observed. Also ask who owns the decision to promote the secondary, and how that decision fits the firm's operational resilience and incident reporting obligations.

What should we ask for in a written quote for a GitLab project?

Ask for a quote that follows from a written scope and names every deliverable. The document should list the environments, the number of sites, the users and reference architecture size, the runner fleet and executors, each integration, the migration sources, the hardening baseline, the backup and Geo tests, the upgrade plan and the evidence pack. It should state which items are one-time and which recurring, what support and upgrade retainers cover, which items the firm must provide, and what is excluded. Ask how changes to scope are priced and approved. DeployOpen plans and delivers most engagements under a fixed scope agreed in writing before work starts, and ongoing support and upgrades are available as retainers.

Does DeployOpen issue the SOX or PCI DSS attestation for our GitLab environment?

No. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications. Under the Sarbanes-Oxley framework, management performs the annual ICFR assessment and the external auditor performs any attestation, and under PCI DSS the Qualified Security Assessor or the firm's self-assessment process produces the Report on Compliance or Self-Assessment Questionnaire and the Attestation of Compliance. Ask the partner which change records, access reviews and pipeline logs will be produced, and confirm with your auditor which of them they expect to sample.

How DeployOpen works on this

DeployOpen plans, implements, hardens, backs up, documents and supports self-managed GitLab inside your own cloud accounts, data centers or air-gapped networks. For financial services, we start from the controls your auditors, assessors and regulators will test, then build the GitLab configuration and evidence around them.

How we scope

  • Engagements are fixed-scope, with the scope, deliverables and timelines agreed in writing before work starts.
  • Scope maps which repositories, pipelines and approvals fall under change management or PCI DSS cardholder data environment boundaries.
  • Scope records the identity model, separation of duties rules, and whether Geo disaster recovery is in or out of the build.

How we build

  • We install and configure self-managed GitLab on the install method and reference architecture your scope selects.
  • We configure protected branches, approval rules, and runner isolation so segregation of duties is enforced in the tool.
  • We test backup, restore and Geo failover steps in your environment and record the results as part of the deliverables.

How we hand over

  • You receive configuration documentation, runbooks for upgrades and restores, and a written record of the controls implemented.
  • We document the evidence GitLab produces, such as merge request approvals and audit events, and where your team must retain it.
  • We train the administrators and platform engineers who will operate the instance after the engagement closes.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers, scoped in writing like the original build.
  • Retainers can cover required upgrade stops, patch releases and periodic restore tests against your recovery objectives.
  • We prepare systems and evidence for compliance assessments, while independent auditors and certification bodies issue the opinions.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.