Bolaji Alonge

Cloud Security Engineer · Identity & Access · AWS & Azure

Cloud security engineer with 10+ years building and governing AWS and Azure platforms in regulated banking, finance and healthcare. I specialize in identity and access — workload and machine identity, least privilege at scale, and policy-as-code guardrails that produce their own audit evidence.

Get in touch See the work LinkedIn Dallas, TX · open to remote
years in regulated cloud
10+
AWS accounts governed
50+
Terraform workspaces under policy-as-code
250+
production changes gated
100%

7 case studies · internal details withheld

Case studies

Real production work, described at the level I can share publicly: no internal names or code.

01 · Case study · production

Enterprise SSO migration to AWS IAM Identity Center

Before

No reliable inventory of what still referenced legacy roles, so the IAM upgrade had stalled.

What I built

Replaced legacy SAML SSO across 30+ AWS accounts. Built discovery tooling that scans a dozen resource surfaces and 100+ repositories for legacy role references, and a Terraform module defining permission sets for every engineering role, with Okta SCIM and separately managed break-glass access.

  • AWS IAM Identity Center
  • Okta SCIM
  • Terraform
  • Bash
01OktaSCIM groups02Identity Centersingle sign-on03Permission setsTerraform0430+ accountsrole-based accessBreak-glass access is managed separately fromthe SSO path.

02 · Case study · production

Change-control and security gates for infrastructure

Before

Compliance depended on whoever reviewed the merge request.

What I built

Took production infrastructure changes from ungated to 100% gated: every Terraform apply across 250+ workspaces requires a ServiceNow change record and a clean Wiz scan, backed by a HashiCorp Sentinel policy library enforcing encryption, TLS and tagging standards.

  • Terraform Cloud
  • HashiCorp Sentinel
  • Wiz
  • ServiceNow
01PlanTerraform02Change recordServiceNow03PolicySentinel04ScanWiz05ApplyproductionAny failed check blocks the apply.

03 · Case study · production

Azure identity as code and credential-free pipelines

Before

Standing administrative role assignments.

What I built

Tenant identity managed entirely in Terraform — management groups, custom RBAC roles, 30+ service principals — with just-in-time admin access through Entra ID PIM and OIDC workload identity federation, so pipelines store no cloud credentials.

  • Entra ID
  • PIM
  • Terraform
  • Azure DevOps
01PipelineAzure DevOps02OIDC tokenshort-lived03Entra IDfederated identity04Azurescoped accessNo stored cloud credentials. Admin roles arejust-in-time through PIM.

04 · Case study · production

Organization-wide AWS guardrails and detection

Before

Account onboarding was manual and error-prone.

What I built

SCP service allow-list (60+ approved services, all others denied), 50+ Control Tower controls as code, and GuardDuty, Security Hub and Config enabled for every new account, with findings forwarded to Microsoft Sentinel.

  • AWS Organizations
  • SCPs
  • Control Tower
  • GuardDuty
  • Security Hub
  • Microsoft Sentinel
01New accountauto-enrolled02SCP allow-listdeny by default03Control Towercontrols as code04DetectionGuardDuty · Hub · Config05SIEMMicrosoft SentinelEvery account starts governed: nothing toremember to switch on.

05 · Case study · production

Kubernetes and container security guardrails

Before

Nothing stopped a privileged pod or an unscanned image from reaching a cluster.

What I built

Enforced Kubernetes guardrails at admission and in the pipeline: Kyverno policies that block privileged pods, RBAC and namespace isolation per team, and Trivy and Aqua image scanning built into CI/CD, so insecure workloads are rejected before they run.

  • Kubernetes
  • EKS
  • AKS
  • Kyverno
  • RBAC
  • Trivy
  • Aqua
01BuildCI/CD02Image scanTrivy · Aqua03Admission policyKyverno04NamespaceRBAC05RunningworkloadA failed scan or a privileged pod is rejectedbefore it runs.

06 · Case study · production

Root-causing a multi-day hybrid network outage

Before

An outage between a cloud application and on-premises systems had resisted triage for days, because firewall policy reported the traffic as allowed.

What I built

Traced it to a Transit Gateway attachment that had silently entered a deleted state, restored the route associations and return routes, and turned the diagnostic order into a drill the team now runs.

  • AWS Transit Gateway
  • VPC routing
  • Hybrid networking
01Attachment stateTransit Gateway02Associationsand propagations03Subnet routesVPC route tables04Return routeson-premises side05Restoreddrill documentedFirewall policy said 'allowed'; the routingsaid otherwise.

07 · Case study · production · 2018–2023

Kubernetes platform and CI/CD on Azure

Before

Environments were built by hand and deployments were slow.

What I built

Built Kubernetes clusters from scratch with Terraform across dev, staging and production (Helm deployments, autoscaling, ingress, RBAC and health probes) and Azure DevOps pipelines that cut deployment time by 50%. Infrastructure was defined in Terraform, ARM and Bicep, so every environment was built the same way.

  • Azure
  • AKS
  • Terraform
  • Bicep
  • Helm
  • Azure DevOps
01CommitGit02PipelineAzure DevOps03Imagecontainer registry04Helm releaseper environment05AKSdev · staging · prodEvery environment built from the sameTerraform, ARM and Bicep code.

Also

Personal project

This portfolio site

A small Django site run the way I'd want a production service run: secrets only in environment variables, a strict Content-Security-Policy with no third-party scripts, HSTS, a rate-limited contact form, and a CI pipeline that runs the test suite, Django's deployment checks and a dependency audit on every push.

  • Django 5.2
  • Python
  • PostgreSQL
  • GitHub Actions
  • Heroku
  • pip-audit

Links coming soon.

Approach

How I work

01

Identity is the control plane

Every human, pipeline and workload gets its own scoped identity. Standing access and shared or long-lived credentials are treated as defects to remove, not risks to accept.

02

Guardrails, not gatekeepers

Controls live in code and run on every change, so the safe path is the default path and no review depends on one person catching a mistake.

03

Evidence by default

A control that can't show it ran isn't finished. Policy-as-code and change records produce their own audit trail, so compliance is a by-product of shipping rather than a separate project.

Writing

Latest writing

All posts →

Stop Giving Your AI Agents a Database Password

Replacing a static database password with short-lived, platform-issued identity: what it solves, and what it doesn't.

  • AI security
  • IAM
  • Workload identity
  • AWS

Toolkit

Skills & certifications

Identity & Access

  • AWS IAM Identity Center
  • IAM policy design
  • Entra ID
  • PIM
  • Service principals
  • Workload identity federation (OIDC)
  • Okta SCIM
  • EKS IRSA

Cloud Security Controls

  • SCPs
  • Control Tower
  • GuardDuty
  • Security Hub
  • AWS Config
  • Azure Policy
  • Azure Firewall
  • Key Vault
  • KMS
  • Wiz CSPM
  • Microsoft Sentinel

Policy-as-Code & DevSecOps

  • Terraform
  • Terraform Cloud
  • HashiCorp Sentinel
  • Kyverno
  • SAST/DAST
  • Change-gated delivery

Platforms

  • AWS
  • Azure
  • Kubernetes (EKS
  • AKS)

Languages

  • Python
  • Bash
  • PowerShell

Frameworks

  • NIST CSF 2.0
  • CSA CCM 4.0
  • SOX
  • Zero trust

Certifications

  • AZ-500: Azure Security Engineer Associate Microsoft
  • CompTIA Security+ CompTIA
  • AWS Certified Solutions Architect – Associate AWS
  • AZ-305: Azure Solutions Architect Expert Microsoft
  • AZ-400: DevOps Engineer Expert Microsoft
  • CKA: Certified Kubernetes Administrator CNCF / Linux Foundation
  • HashiCorp Certified: Terraform Associate (003) HashiCorp
  • AI-103: Developing AI Apps and Agents on Azure Microsoft

Contact

Let's talk

Want to talk cloud security, identity or policy-as-code, or have a question about a post? Send a note and I'll reply directly. Or connect on LinkedIn.