Country isolation
Keep workloads, networks, identities, data, encryption boundaries, and telemetry scoped to the correct country while retaining shared organizational governance.
Cloud Security · Google Cloud · DevSecOps
A multi-country cloud-security reference implementation for a fictional community-health organization operating across Kenya, Ghana, and South Africa — with country isolation, least privilege, keyless delivery, supply-chain integrity, posture governance, and evidence boundaries built into the system model.
Independent portfolio project. AfyaBridge Cloud Security uses a fictional organization and synthetic data to exercise cloud and application security controls. It does not represent the infrastructure, systems, credentials, or data of a healthcare organization.
The problem
The scenario assumes community-health teams operating across multiple countries, handling sensitive identity and health data, working through web and offline-capable field workflows, and depending on cloud infrastructure that must stay governable as the platform grows.
Keep workloads, networks, identities, data, encryption boundaries, and telemetry scoped to the correct country while retaining shared organizational governance.
Minimize standing access for people and workloads, reject public principals, and make deployment privilege explicit and reviewable.
Define classification, residency, encryption, retention, secrets, backup, recovery, and deletion boundaries before deployment.
Build toward keyless GitHub-to-GCP deployment with separate plan and apply identities instead of long-lived service-account keys.
Treat offline synchronization as a security boundary with actor and device binding, replay protection, idempotency, and conflict handling.
Distinguish architecture that is designed from controls that are implemented and controls that have actually been validated.
Architecture
The architecture separates organization-wide security and shared services from country-owned workloads. The goal is to keep the platform operable as one environment without making cross-country access the default.
Control maturity
The project avoids turning diagrams, Terraform, or a green workflow into claims that exceed the evidence. Each milestone records the boundary it has actually crossed.
Shift-left security · v0.8 · Completed
Security checks run before deployment, feed a fail-closed security verdict, validate time-bounded exception records, and publish machine-readable and human-readable evidence for the reviewed change.
Software supply chain · v0.9 · Completed
The supply-chain milestone hardens the path from protected source to build artifact: immutable workflow and provider inputs, SBOMs, separated build/sign identities, keyless signing, attestations, provenance verification, revocation policy, and negative compromise tests.
The privileged signing/provenance job is restricted to protected
refs/heads/main, while pull requests exercise the
unprivileged build and validation path.
The trusted-main run signed the exact build with Sigstore/Cosign and verified GitHub provenance and SBOM attestations against source ref, source commit, and the fixed workflow identity.
Artifact, source, and workflow identities are checked against an explicit revocation policy, with negative tests proving weakened trust boundaries fail rather than silently pass.
Cloud posture & governance · v0.10 · In review
v0.10 turns the control matrix into machine-readable posture rules, tested drift decisions, a governed finding lifecycle, remediation SLAs, exception/risk-acceptance boundaries, and run-bound reporting.
The repository report evaluates reviewed desired-state controls and fails closed when posture catalogue, ownership, implementation references, or governance invariants are weakened.
Severity-derived SLAs, active and historical exceptions, remediation attempts, independent verification, and evidence-backed closure are represented as governed state rather than ad-hoc notes.
All 11 executable rules still require live validation. Operational trend history remains intentionally empty until live evidence sources exist instead of being populated with synthetic operational claims.
Engineering decisions
The project is organized around security decisions and their evidence rather than a checklist of Google Cloud products.
The deployment path uses GitHub OIDC and Workload Identity Federation, with immutable repository claims and dedicated trust configuration instead of stored service-account credentials.
Planning should not silently grant deployment capability. The IaC design separates plan and apply service accounts and keeps the impersonation path explicit.
Shared governance does not require shared runtime trust. Country networks, keys, workload services, databases, storage, and observability routing are deliberately scoped.
The application baseline binds actors and devices, handles replay and duplicate submissions, validates timestamps, and treats conflicts as an explicit state instead of blind eventual consistency.
The public path is designed around regional HTTPS load balancing, Cloud Armor, managed certificates, and restricted Cloud Run ingress so the application origin is not the intended direct entry point.
Logging, monitoring, security-detection metrics, and alert-policy contracts are implemented alongside workloads rather than treated as post-deployment documentation.
Posture reports keep repository desired-state evidence separate from live Google Cloud state, findings, and trend history so a green CI run cannot become a fabricated operational claim.
Implementation evidence
The repository now carries validated application controls, statically validated Terraform, completed shift-left and supply-chain milestones, and v0.10 repository posture/governance controls. Live Google Cloud deployment and effective-state validation remain pending.
Assets, actors, trust boundaries, data flows, threat register, control matrix, assumptions, and scope for the multi-country scenario.
Country hierarchy, Shared VPC patterns, identity domains, encryption, secrets, residency, backup, and recovery decisions.
Deny-by-default authorization, country scope, audit events, database constraints, optimistic concurrency, offline sync controls, and automated security tests.
Bootstrap, remote state, project factory, folder hierarchy, org policies, IAM, budgets, network, workload, observability, and edge stacks.
GitHub OIDC federation plus separate Terraform plan/apply identities and approval-gated deployment workflow contracts.
Centralized logging, monitoring, detection metrics, alert policies, load balancing, Cloud Armor, DNS, certificate, and HTTPS controls.
Secret, dependency, license, code, IaC, container, API, policy, and exception checks feed a fail-closed security verdict and evidence bundle.
Immutable inputs, SBOMs, keyless Cosign signing, GitHub attestations, provenance verification, revocation policy, and negative compromise tests.
Machine-readable posture, drift decisions, finding lifecycle, remediation SLA and exceptions, JSON/Markdown reports, and run-bound metrics with explicit live-state boundaries.
Current boundary
v0.8 and v0.9 are completed at their repository evidence boundaries, and v0.10 has executable desired-state checks, governance, and reporting in CI. The v0.7 infrastructure has still not been applied and validated in a live Google Cloud organization. Effective IAM, live network enforcement, managed-service behavior, Cloud Armor, logging delivery, live posture collection, real drift, runtime attack simulation, rollback, and recovery remain separate validation work.
Next milestones
Explore the work
The case study summarizes the engineering story. The repository holds the roadmap, architecture documents, Terraform, application baseline, security workflows, supply-chain controls, posture governance, evidence bundles, diagrams, runbooks, tests, and validation records.