CI/CD security

Your build and deploy pipeline has access to everything. We secure it so it stops being the shortest path into your production.

We address the technical requirements of
DORANIS2UKSCSOC 2
What we secure in the pipeline
  1. Permissionswho deploys, who approves
  2. Secretsaccess for a single run
  3. Dependenciesactions pinned to SHA
  4. Environmentisolated runners
  5. Productionrequired deployment approval
  6. Audit trailwho, when, based on which change

Every deployment goes through the same checks — no “quick” exceptions.

How it looks today

This is the starting point in many companies that ship fast and are regulated.

The pipeline knows the keys to the cloud, to the repositories and to production servers. It usually grew over years, added piece by piece, and no one knows anymore who has access or what exactly it does. Taking it over gives more than breaking into a single application.

  1. Repository
  2. Pipeline
  3. Static keys
  4. Cloud
  5. Production

What we do

We define the scope after an assessment — starting with the element that lowers your risk fastest.

We put order into what holds the keys to everything.

First we establish who can trigger a deployment, who approves a change, and what passes without sign-off — usually it turns out to be more people and processes than anyone assumed. Keys hardcoded into configuration we replace with access granted for the duration of a single run, so a leaked file stops meaning a leaked production. We isolate the build environment and control what enters it from outside. We turn on logging so that after every deployment a trail remains: who, when, and based on which change.

Four stages

Each stage leaves you with a concrete result, not meeting notes.

  1. 01

    We put permissions in order

    Who can trigger a deployment, who approves a change, what happens without sign-off.

    ResultA permission map: who can deploy, who approves, what goes through without sign-off

  2. 02

    We remove static secrets

    Keys hardcoded into configuration we replace with access granted for the duration of a single run.

    ResultA pipeline without static keys — access valid only for the run

  3. 03

    We secure the build environment

    Isolation, control of external dependencies, and verification of what enters the process.

    ResultAn isolated build environment with control over what comes in

  4. 04

    We turn on logging

    A trail after every deployment — who, when, based on which change.

    ResultAn audit trail for every deployment, ready to show an auditor

What you get in practice

Implementation ends with working configuration and evidence, not a report full of recommendations. Here is an example.

Deployment without static keysdeploy.yml · excerpt
permissions:
  id-token: write      # short-lived OIDC token
  contents: read
jobs:
  deploy:
    environment: production   # requires approval
    runs-on: ubuntu-latest
    steps:
      - uses: aws-actions/configure-aws-credentials@<SHA>
        with:
          role-to-assume: arn:aws:iam::123456789012:role/deploy
          aws-region: eu-central-1

A leaked config file no longer gives anyone access to your cloud.

Permission mapexcerpt
WhoCanRequires
Developeropen a changereview
Maintainermerge to main2 approvals
Pipelinedeploy to productionenvironment approval
Dependency botopen a changereview, no merge

You know who can do what — including service accounts nobody remembers.

Deployment trailrecord
Deployment
api 2.14.0 → production
Change
PR #482, reviewed by 2 people
Approved by
release role holder
Access
token valid for the run only
Status
recorded

“Who deployed this?” is answered by the log, not by the team’s memory.

Illustration. We choose scope and tools after the assessment.

What stays with you

A single compromised account stops meaning access to production

It is clear who deployed which change and when

The auditor gets a trail instead of assurances

Frequently asked questions

How long does it take?+

We define the scope after a call and an assessment. Smaller engagements close in a few weeks; larger ones we split into stages, so the result is visible after the first.

Do we have to give you access to the code?+

Usually not to all of it. In most cases access to the build pipeline configuration and organization settings is enough. We define the scope in writing before we start.

Does our team have to get involved?+

Yes, but not full time. We need contact with someone who knows the system, and a review of our changes. The rest is on us.

What if we already have tools?+

We plug into what already works for you. Replacing a tool is the most expensive and least often necessary way to improve security.

Do we become dependent on you?+

No. We work with standards and tools your team knows or will quickly learn — not a proprietary method only we understand. Everything is documented and handed over.

Won't this slow down releases?+

We wire controls so they run in the background. If one starts blocking work, we tune it or move it to a different point in the process.

Let's find where risk
enters your delivery process

We reply within 24h on business days