Why Traditional Security Models Fail in the Cloud
The traditional "castle and moat" security model — where everything inside the network perimeter is trusted — was designed for a world where applications ran in a single data centre and employees worked from a single office. That world no longer exists. In modern cloud architectures, there is no perimeter. Applications span multiple AWS regions, data flows between dozens of services, and users connect from everywhere.
The consequences of applying perimeter-based thinking to cloud infrastructure are severe. We've audited organisations where a single compromised IAM role could access every database in the account, where S3 buckets containing customer PII were accessible to any authenticated user, and where network security groups were so permissive that lateral movement between services was trivial.
Zero-Trust Principles for AWS
Zero-trust operates on a simple principle: never trust, always verify. Every request — regardless of where it originates — must be authenticated, authorised, and encrypted. There is no implicit trust based on network location, IP address, or previous authentication.
In practice, this means:
- Identity-based access: Every service, user, and system has a unique identity. Access decisions are based on identity + context (time, location, device health, request pattern), not network position.
- Least privilege: Every identity has the minimum permissions required to perform its function. No standing access to sensitive resources — access is granted just-in-time and revoked immediately after use.
- Micro-segmentation: Network boundaries exist at the service level, not the VPC level. Each service can only communicate with the specific services it needs, on the specific ports it needs, using the specific protocols it needs.
- Continuous verification: Authentication isn't a one-time event. Sessions are continuously validated, and anomalous behaviour triggers re-authentication or access revocation.
- Assume breach: Design every system assuming that any other system in the environment may be compromised. This drives encryption of data in transit between services, not just at the network edge.
IAM Architecture: The Foundation of Zero-Trust on AWS
AWS Identity and Access Management (IAM) is simultaneously the most powerful and most dangerous service in AWS. A well-designed IAM architecture is the foundation of zero-trust; a poorly designed one is the single biggest security risk in your cloud estate.
Multi-Account Strategy
The first principle is account-level isolation. Production, staging, development, and shared services each run in separate AWS accounts. This provides hard boundaries that can't be crossed by misconfigured security groups or overly permissive IAM policies. We use AWS Organizations with Service Control Policies (SCPs) to enforce guardrails that no individual account can override.
Role-Based Access with Session Policies
Human users never have long-lived credentials. All access is via assumed roles with session policies that further restrict permissions based on context. A developer might assume a role that grants read access to production logs, but the session policy restricts this to specific log groups and a maximum session duration of 1 hour.
Service-to-Service Authentication
Services authenticate to each other using IAM roles (for AWS services) or mutual TLS (for custom services). No service has hardcoded credentials, API keys, or shared secrets. AWS Secrets Manager handles any necessary secrets with automatic rotation and audit logging.
Network Security: Defence in Depth
Even in a zero-trust model, network controls provide valuable defence in depth. They're not the primary security mechanism, but they limit blast radius and provide additional detection opportunities.
- VPC design: Private subnets for all application workloads. Public subnets only for load balancers and NAT gateways. No direct internet access for any compute resource.
- Security groups: Configured at the service level with explicit allow rules. Default deny for all inbound traffic. Outbound restricted to specific destinations and ports required by the service.
- VPC endpoints: All AWS service access via VPC endpoints rather than internet gateways. This keeps traffic on the AWS backbone and eliminates exposure to the public internet.
- Network firewall: AWS Network Firewall for stateful inspection of traffic between VPCs and to/from the internet. Custom rules for detecting and blocking known attack patterns.
Data Encryption: At Rest and In Transit
In a zero-trust architecture, encryption isn't optional — it's mandatory for all data, everywhere. We implement encryption at multiple layers:
- At rest: All storage services (S3, EBS, RDS, DynamoDB) encrypted with AWS KMS using customer-managed keys. Key policies restrict decryption to specific roles and services.
- In transit: TLS 1.3 for all service-to-service communication, including internal traffic. Certificate management via AWS Certificate Manager with automatic rotation.
- Application-level: Sensitive fields (PII, financial data) encrypted at the application layer before storage. Even database administrators can't read sensitive data without the application-level decryption key.
Monitoring and Detection
Zero-trust requires continuous monitoring to detect anomalies and potential breaches. Our standard monitoring stack includes:
- AWS CloudTrail: Every API call logged and analysed. Custom EventBridge rules trigger alerts for suspicious activities (root account usage, permission escalation attempts, unusual data access patterns).
- Amazon GuardDuty: ML-based threat detection for network traffic, DNS queries, and account behaviour. Automatically correlates findings across multiple data sources.
- AWS Security Hub: Centralised security findings from all accounts and services. Automated compliance checks against CIS benchmarks, PCI-DSS, and custom security standards.
- Custom detection rules: Application-specific rules that detect business logic abuse, unusual data access patterns, and privilege escalation attempts that generic tools miss.
Compliance Automation
For clients in regulated industries (financial services, healthcare, government), compliance isn't optional. We automate compliance monitoring and evidence collection:
- AWS Config: Continuous configuration monitoring with custom rules that flag non-compliant resources within minutes of creation.
- Automated remediation: Lambda functions that automatically fix common compliance violations (unencrypted resources, public access, missing tags) without human intervention.
- Audit trail: Complete, immutable audit logs that satisfy SOC 2, ISO 27001, PCI-DSS, and GDPR requirements. Evidence collection automated for audit cycles.
For our Charity Commission engagement, we achieved full compliance with UK Government security standards (including Cyber Essentials Plus) while maintaining development velocity. The key was automating compliance checks into the CI/CD pipeline — non-compliant code simply can't be deployed.
Getting Started with Zero-Trust
You don't need to implement everything at once. Start with the highest-impact changes: multi-account strategy, least-privilege IAM, and encryption everywhere. Then layer on micro-segmentation, continuous monitoring, and automated compliance as the organisation matures.
The most important step is the first one: accepting that your current perimeter-based security model is insufficient for cloud-native architectures, and committing to a zero-trust approach that treats every request as potentially hostile.
Need a Security Architecture Review?
Our architects can assess your current security posture and recommend improvements.
Request a Security Assessment →