AWS Security Cloud Foundations Every Team Must Build
Table of Contents

Your CSPM dashboard is green. The audit went well. Then a new service ships with an IAM role that grants more access than the workload needs, and an incident exposes data the team thought was protected. The problem isn't that AWS failed to secure its infrastructure. The team's security decisions didn't stay connected to the code and configuration it deployed.
That's the practical challenge of AWS security in the cloud. AWS provides strong security mechanisms, but your team still owns how identities, networks, data, and monitoring are designed and configured. The work that matters is keeping those decisions current from architecture through pull request and deployment, not adding another dashboard after release.
The Audit That Passed Before the Incident
A regulated team has completed its first AWS audit. The CSPM dashboard looks clean, the latest SOC 2 Type II report is in hand, and feature delivery has been steady. Then the team deploys a new service with an IAM role that can access more data than the service requires. A misconfiguration turns into an incident.
The audit didn't guarantee that every application change was safe. It assessed evidence and controls within a defined scope. AWS's shared-responsibility model draws the boundary: AWS protects the security of the cloud, including its physical data centers, hardware, networking, virtualization layer, and foundational software. Customers protect the security in the cloud, including identities, data, network rules, applications, monitoring, and compliance configurations.
That boundary changes with the service. A managed service shifts more underlying operational responsibility to AWS, but customers still own their data, identities, workload configuration, and decisions about access. AWS documentation also identifies customer-managed controls such as user access, encryption, logging, and the technical and organizational measures needed for obligations such as GDPR. Those responsibilities don't disappear when the platform is certified or an audit report is current.
The executive version: AWS can secure the platform your application runs on. Your team remains accountable for the application's access, data handling, and configuration.
For leaders explaining the difference between a compliance framework and application safety, a practical starting point is understanding how an ISO 27001 framework relates to the evidence and controls a team maintains. The useful question isn't whether the audit passed. It's whether each production change still follows the security decisions the team approved.
The Four Decisions AWS Cannot Make for You
AWS gives teams powerful security mechanisms. It doesn't decide who should use them, how much access a service needs, which traffic should flow, or what evidence the organization must retain. Those are architectural decisions, and they fall into four connected areas.
Identity
A developer adds a Lambda function that reads customer records. Does it receive a narrowly scoped role for that task, or inherit permissions from a broader role already used elsewhere? IAM helps define access, but your team decides the identity, the permitted actions, and the conditions under which those permissions apply.
Network
A service needs to call an internal API. Should it also be reachable from the public internet? VPC design and security groups provide ways to control paths, but the team must decide which workloads can communicate and which routes create unacceptable exposure.
Data
A new workflow stores health or financial information in S3. What needs encryption, who controls the keys, and which regions or services may process the data? AWS provides encryption and key-management mechanisms. Your design must set the rules for using them.
Logging and monitoring
An investigation starts after an unexpected change. Can responders establish who made it, what changed, and whether the audit records were altered? CloudTrail and related controls provide evidence, but your team decides where logs go, who can change or read them, and how their integrity is checked.

Use these four decisions to assess an architecture review. For every proposed control, ask which decision it supports, who owns it, and how a code or configuration change could weaken it. If an answer is unclear, the gap isn't a missing AWS service. It's a missing security decision.
Identity and Access That Actually Scales
IAM deserves close attention because one oversized role can turn a routine service deployment into broad access to sensitive resources. Start with how each workload receives its identity, then decide how to constrain and verify that access.
For application workloads, prefer IAM roles and temporary credentials over long-lived access keys wherever the design allows. A persistent key can survive beyond the task it was created for, while a role gives the workload a defined identity and permissions to review. For human access, use a governed identity source and avoid scattering individual credentials across accounts.
Next, limit permissions at more than one layer. Write policies around the actions and resources the service needs. Use permission boundaries where teams need limits on what delegated administrators or developers can grant, and service control policies to set organization-wide guardrails. These mechanisms aren't substitutes for reviewing the role itself. They help prevent a local change from exceeding the authority the organization intended.
Cross-account access should be explicit. Create roles with a defined trust relationship and restrict who can assume them. Don't solve a deployment problem by distributing static keys between accounts; that adds secrets to manage and makes it harder to establish which workload performed an action.
Machine and agent identities also need their own review. A coding agent or operational agent may call several tools and services, so the review must define the allowed actions, the task scope, and when a human must approve a consequential operation. A human login policy alone doesn't constrain what an automated identity can do once it has access.
AWS describes protections for IAM data stored at rest, including AES-256 encryption or SHA-256 hashing, and TLS 1.2 or TLS 1.3 for customer-identifying data transmitted to IAM. AWS STS endpoints support HTTPS for encrypted transport. Those mechanisms protect AWS's handling of the service data; they don't replace your responsibility to assign and govern permissions.
Teams looking for a practical overview of secure access control strategies can use it as a complement to their own account and workload design review. In the pull request, require the author to describe the identity, the threat the permission addresses, why the scope is necessary, and how the team will verify the deployed role.

Encryption, Keys, and the Question Nobody Asks
Encryption at rest and encryption in transit solve different problems. At rest, the concern is exposure of stored data. In transit, it's interception or disclosure as information moves between systems. Treating both as a single “encryption enabled” checkbox leaves the architecture question unanswered: who controls the keys, and under what conditions can they be used?
AWS states that encryption is available across more than 100 services, with AWS KMS available for key management and customer-managed options that give customers greater control over key material. For workloads that need dedicated hardware-based key control, CloudHSM is another AWS security mechanism. These options don't choose the right governance model for your data. Your team must set it.
AWS-managed keys may suit workloads where operational simplicity and the service's standard key management meet the organization's requirements. Customer-managed keys make sense when the team needs more control over permissions, key policies, rotation, or evidence of use. A customer-provided key arrangement may be appropriate when a specific contractual or regulatory requirement demands tighter control over key material. Don't adopt customer-managed or external key handling just because it sounds more secure. Name the requirement it satisfies and the people responsible for operating it.
Write the key lifecycle before creating keys. Decide who can administer keys, who can use them, what access is logged, how rotation is handled, and what happens when a key must be disabled or retired. If those decisions wait until production, teams often discover that an application depends on a key no one knows how to rotate safely.
A KMS key policy can also constrain use to an intended AWS resource. For example, AWS recommends the aws:SourceArn condition for CloudTrail's KMS key policy. That turns the key policy into an enforcement point: a service shouldn't be able to use the key because it has a broad permission somewhere else.
For each new service that touches regulated information, require a short design record stating what data it handles, what protection applies at rest and in transit, who governs its keys, and how access and use will be verified. AWS supplies the cryptographic building blocks; your architecture defines the protections they enforce.
Logging as a Pipeline, Not a Bucket
A secure logging design has to protect both confidentiality and evidentiary integrity. A log can be encrypted and still be incomplete or altered. It can also be intact but readable by people who don't need access.
CloudTrail log and digest files are encrypted by default with Amazon S3 server-side encryption. Teams can choose SSE-KMS, and AWS recommends customer-managed KMS keys, a key policy constrained with aws:SourceArn, log-file validation, and AWS Config enforcement for trail encryption. CloudTrail validation uses SHA-256 hashing and SHA-256 with RSA digital signing to help detect files that have been modified, deleted, or left unchanged after delivery. Encryption protects stored content; validation helps test whether the evidence was tampered with.
Build the destination and permissions around that distinction. Put the trail in a dedicated security account. Apply a deny-by-default policy to the destination S3 bucket, separate the service's log-writing permissions from investigator read access, and constrain KMS use to the intended trail. Use AWS Config to detect when encryption or validation is disabled, then test that detection rather than assuming the rule will catch every drift event.
The CIS AWS Foundations Benchmark provides a machine-assessable configuration baseline. It includes 43 controls across 14 AWS services, including multi-Region CloudTrail management-event logging, encryption at rest, log-file validation, S3 access logging for the CloudTrail destination, and IAM access-key rotation at least every 90 days. See the CIS AWS Foundations Benchmark controls for the control definitions.
| Control Area | Example CIS Control | Design Decision It Supports |
|---|---|---|
| Audit coverage | Multi-Region CloudTrail management-event logging | Which AWS account activity must be reconstructable across Regions |
| Log integrity | CloudTrail encryption and log-file validation | How the team protects stored evidence and detects tampering |
| Storage visibility | S3 access logging for the CloudTrail destination | How the team records access to its audit-log store |
| Credential hygiene | IAM access-key rotation at least every 90 days | Whether long-lived credentials are permitted and how exceptions are managed |
Treat this as a floor, not a threat model. Turn each selected control into a pull-request policy tied to the relevant resource, accountable owner, evidence artifact, exception path, and post-deployment verification. A baseline tells you what to check; the design explains why the check matters to your application.
Threat Modeling and Policy-as-Code in the Pipeline
A pull request that adds an S3 bucket, changes an IAM policy, or creates a cross-account role should be evaluated against the approved threat model before merge. If the security review happens only after deployment, the team has made the risky configuration real before asking whether it was acceptable.
Build the workflow around artifacts the team already uses. Tickets describe the feature and its intended behavior. Design documents capture data flows and trust boundaries. Repositories and service metadata show what has changed. Keep those inputs connected so the threat model reflects the system being built, not a snapshot written during an earlier review. Teams can use cloud-native infrastructure-as-code threat modeling as a reference for connecting infrastructure changes to threat decisions.
Make the security gate traceable
Run policy-as-code checks in the pull request. A rule might reject a newly public data bucket, an IAM policy that grants access beyond an approved scope, or a logging change that weakens evidence retention. Let the check explain which approved decision the change conflicts with, what the author must resolve, and whether an exception needs review. Merge blocking should be used for risks the organization has decided are unacceptable, not for every uncertain finding.
Surface design feedback in the tools where developers work, such as Jira, GitHub, and VS Code. Keep the reviewer's decision and any approved exception attached to the change. The resulting audit evidence should show the proposed change, the policy result, the human review, and the deployment verification. That's more useful than a green check detached from the design rationale.
For teams using coding agents, apply the same approved context and policies to agent-generated changes. An agent shouldn't be able to bypass the human and policy checks because it produced the code. Define which tools it may call, which changes require human approval, and how the generated work is reviewed.

Why Continuous Monitoring Is Not Continuous Security
A scanner can identify an exposed service or excessive permission. It usually can't tell whether the change violates an approved application design, who accepted the risk, or which recent commit introduced the problem. That's why a stream of CSPM findings can grow without reducing architectural risk.
A 2026 analysis of 3,000 organizations reported weak IAM controls in 97% of AWS accounts, insufficient logging and alerting in 98%, permissive firewalls in 83%, and at least one exposed service in 76%. These figures are from the AWS security gaps analysis. More scanner alerts alone don't explain the business context behind those weaknesses or prevent a developer from repeating them in the next deployment.
The stronger control is traceability. Link each relevant ticket, design decision, identity, network path, data classification, pull request, and deployment so reviewers can evaluate changes against what the team approved. Check the proposed configuration before merge, then verify that the deployed AWS resources still match the decision. Monitoring remains essential, but it's the detection layer, not the whole security program.
Monitoring tells you what's different. A policy tied to an approved design tells you whether that difference is allowed.
That distinction matters for regulated teams. They need to show not only that a control exists, but also that the team understood the risk, approved the design, implemented it, and kept it from drifting unnoticed. If the dashboard reports a problem but can't lead an engineer to the relevant decision and owner, it's a finding queue, not a control that changes how software ships.

A 30-Day Plan to Make AWS Security Decisions Stick
Keep the rollout small enough to change real engineering behavior. The goal isn't to document every possible threat before the next release. It's to connect the most consequential decisions to the changes that can break them.
Week 1
Map AWS accounts and major workloads to identity, network, data, and logging ownership. Record the team responsible for each area and identify where access, encryption, or audit decisions are undocumented. Choose one production application with a clear owner and an active delivery pipeline.
Weeks 2 and 3
Select the CIS baseline controls that matter to that application and codify them for review. Start with CloudTrail coverage and validation, encryption for the log destination, S3 access logging, and IAM credential practices. Test each policy against actual infrastructure changes, and make failures explain the violated requirement rather than returning a red status.
Week 4
Turn one or two high-impact decisions into threat models and pull-request policies. Cross-account access and production-data encryption are strong candidates because a change in either can widen access or weaken data protection. Require the pull request to identify the relevant decision, show the policy result, and record any approved exception. Teams can use this CI/CD pipeline security guide as a starting point for shaping security checks around delivery workflows.
Watch for signs the effort has stalled: findings accumulate without design changes, threat models live only on a wiki, or policies never block a merge because someone tuned them to silence. Measure progress by whether an engineer can explain why a control exists, see its result before merge, and verify it after deployment.
DevArmor supports continuous threat modeling, security design reviews, and policy enforcement across the software delivery lifecycle, connecting approved decisions to code changes and deployments. If your team needs AWS security context to stay current inside planning, IDE, and source-control workflows, visit DevArmor to see how it fits your delivery process.
Table of Contents
Subscribe

