Credentials
OIDC federation with branch and environment conditions.
Why. No secrets to leak or rotate.
Trade-off. Trust policy conditions must be precise or any workflow in the org could assume the role.

Cloud platforms · AWS and Azure
A delivery pipeline with no long-lived credentials: pull requests plan, merges apply, images are scanned and signed, and releases shift traffic gradually with automatic rollback.
A reference architecture from EITSAA, not a named client system. Service limits, prices and product features change, so confirm current details before you commit to a design.
A developer opens a pull request. Branch protection requires review, status checks and signed commits for protected branches.
The workflow starts and requests an OIDC token from GitHub. AWS trusts only this repository, branch or environment through the IAM role trust policy.
Unit tests, static analysis, dependency and secret scanning, and IaC policy checks (for example Checkov or OPA) run as gates.
A successful build pushes an image tagged with the commit SHA to ECR. Scan on push findings above the agreed threshold fail the release.
Terraform plans on the pull request and posts the plan. On merge to main it applies in non-production, then production after an environment approval.
CodeDeploy or the ECS deployment controller registers the new task set with the load balancer as the green environment.
Traffic shifts in a canary or linear pattern while health checks and test listeners validate the release.
CloudWatch alarms on error rate and latency trigger an automatic rollback to the blue task set if breached.
| Component | What it does | Why this choice |
|---|---|---|
| GitHub repository and branch protection | Source of truth, code review and required checks. | Review and status checks are the control that stops unreviewed change reaching production. |
| GitHub Actions with OIDC | Runs the pipeline and obtains short-lived cloud credentials. | Eliminates stored cloud keys. Use Azure federated credentials in the same way. |
| Terraform (or CDK or Bicep) | Declarative infrastructure with plan and apply. | Plan output is reviewable. Choose one tool per platform to avoid drift between tools. |
| S3 backend with locking | Remote state with versioning and encryption. | Protects state, which can contain secrets. |
| Amazon ECR | Private image registry with scanning and lifecycle rules. | Native to ECS and IAM, with immutable tags for traceability. |
| AWS CodeDeploy (ECS blue/green) | Traffic shifting with hooks and alarms. | Automatic rollback is the main safety net. |
| Checkov, tfsec or OPA | Policy-as-code for IaC. | Catches public buckets and wildcard IAM before they are deployed. |
| Image signing (Cosign or AWS Signer) | Proves that an image came from the pipeline. | Admission checks can refuse unsigned images. |
Credentials
Why. No secrets to leak or rotate.
Trade-off. Trust policy conditions must be precise or any workflow in the org could assume the role.
Release strategy
Why. Fast rollback and real-traffic validation.
Trade-off. Double capacity during rollouts and database changes must be backward compatible.
Environment promotion
Why. What you tested is what you ship.
Trade-off. Configuration must be injected per environment, never baked in.
IaC apply
Why. Eliminates console drift and gives an audit trail.
Trade-off. Emergency changes need a break-glass process that is then reconciled in code.
OIDC, least-privilege deploy roles, scans as gates, signed artefacts, protected branches and environment approvals.
Gradual traffic shifting, automated rollback and backward-compatible database migrations (expand then contract).
Cached builds, parallel jobs and a small test pyramid keep lead time in minutes.
Runner minutes, ECR storage and the temporary double capacity during blue/green.
DORA metrics (deployment frequency, lead time, change failure rate, time to restore) tracked from the pipeline.
Cache dependencies, lifecycle old images and use ephemeral runners.
Self-hosted runners, if used, live in a private subnet with endpoints and no inbound access. Production deploy roles can only be assumed from the production environment in the workflow.
Separate IAM roles per account and per purpose: plan (read-only), apply (scoped), deploy (ECS and CodeDeploy only). Trust policies pin repo, ref and environment claims. GitHub environments hold required reviewers.
State files and build logs are encrypted and access-limited. Secrets are fetched at runtime from Secrets Manager or Key Vault, never written to logs or artefacts.
| Control | How this design addresses it |
|---|---|
| Application control | Only signed pipeline-built images are deployable. Essential Eight application control principle. |
| Patch applications | Scheduled base-image rebuilds and dependency updates through automated pull requests. Essential Eight. |
| Restrict administrative privileges | Humans have read-only access to production. Essential Eight. |
| Change management | Pull-request approval and plan output provide evidence for ISMF change control expectations. |
Mappings show how the design supports each control. They are not certifications, and EITSAA does not claim IRAP assessment or compliance for any reference architecture.
| Failure mode | Mitigation |
|---|---|
| Pipeline compromise | OIDC conditions, pinned third-party actions by SHA, least-privilege roles and approvals for production. |
| Bad release reaches users | Canary stage with alarms triggers automatic rollback. |
| Terraform state lost or locked | Versioned bucket, DynamoDB or S3-native locking and a documented unlock procedure. |
| Incompatible database migration | Expand and contract pattern, with migrations run as a separate reversible step. |
CI minutes, artefact storage and extra capacity during blue/green.
AWS and Microsoft
A governed analytics platform: raw, curated and consumption layers on object storage, a catalogue with column-level access control and a semantic layer that business users can trust.
AWS and Azure
Choose recovery capability by business impact, not by habit. Three patterns with honest RTO and RPO, a cross-Region data path, an immutable backup vault and a failover that is rehearsed rather than hoped for.
AWS and Azure
One way to see every workload: OpenTelemetry instrumentation, central storage per signal, SLO-based alerting that wakes people only for user impact, and runbooks linked from every alert.
Tell us your systems, constraints and timeline. We reply within one business day, and the initial conversation is free.