A healthcare company handling sensitive patient data needed a secure, HIPAA-aligned web application. The goal was to eliminate traditional security risks like SSH key exposure, hardcoded credentials, and unencrypted traffic — replacing them with Zero Trust principles where no implicit trust is granted to any user, device, or service.
- Multi-AZ VPC with public, private app, and private database subnets
- VPC Endpoints (S3 Gateway, SSM, SSMMessages, EC2Messages) for private AWS service access
- NAT Gateway for outbound internet access from private subnets
- VPC Flow Logs → CloudWatch for network traffic analysis
- Application Load Balancer with sticky sessions
- Auto Scaling Group (EC2 t3.micro, Amazon Linux 2023)
- SSM Session Manager for secure instance access — no SSH keys or bastion
- RDS Aurora MySQL with encryption at rest
- Secrets Manager for database credentials — no hardcoded secrets
- AWS Inspector2 for continuous EC2 vulnerability scanning
- EventBridge + Lambda for automated incident response
- CloudWatch Alarms for CPU and unhealthy host detection
- SNS email alerts for security events
- No SSH keys — SSM Session Manager only
- No direct internet access to app or database tiers
- All AWS service traffic stays private via VPC Endpoints
- Least privilege IAM roles for all resources
- No hardcoded credentials — Secrets Manager only
- Automated incident response — no manual intervention required
- HIPAA: Access controls, audit logging, encryption at rest, incident response
- See docs/architecture-decisions.md for full rationale
- Terraform >= 1.0 installed
- AWS CLI configured with valid credentials
- Region: us-east-1
cd terraform/phase-01-network-foundation
terraform init
terraform plan
terraform applycd ../phase-02-application-layer
terraform init
terraform plan
terraform applycd ../phase-03-security-automation
terraform init
terraform plan
terraform applyCost Warning: Aurora RDS and NAT Gateway begin billing immediately. Destroy resources same day if this is a portfolio/demo deployment.
- Navigate to EC2 → Security Groups
- Confirm no inbound rule exists on port 22 for app instances
- Confirm instances are only accessible via SSM Session Manager
- Navigate to VPC → Endpoints
- Confirm SSM, SSMMessages, EC2Messages, and S3 endpoints show Available
- Confirm private route table routes S3 traffic through the gateway endpoint
- Navigate to Secrets Manager →
zerotrust-webapp-dev-db-credentials - Confirm secret exists and is encrypted
- Confirm no database passwords appear in any
.tfor.tfvarsfiles
- Navigate to EventBridge → Rules
- Confirm
zerotrust-webapp-dev-ec2-state-changerule is Enabled - Navigate to Lambda → confirm
zerotrust-webapp-dev-incident-responseis deployed - Navigate to SNS → confirm email subscription is Confirmed
- Stop an EC2 instance manually to trigger the pipeline and verify SNS email alert fires
- Navigate to CloudWatch → Alarms
- Confirm
zerotrust-webapp-dev-high-cpualarm exists - Confirm
zerotrust-webapp-dev-unhealthy-hostsalarm exists
Destroy in reverse order to avoid dependency errors:
cd terraform/phase-03-security-automation
terraform destroy
cd ../phase-02-application-layer
terraform destroy
cd ../phase-01-network-foundation
terraform destroy- No EC2 instances running
- No RDS clusters running
- No NAT Gateways running
- No VPC Interface Endpoints active
- No ALB running
- Secrets Manager secret deleted
- Inspector2 disabled
All resources deployed via Terraform across 3 phases:
| Phase | Directory | Resources |
|---|---|---|
| 1 — Network Foundation | terraform/phase-01-network-foundation |
27 |
| 2 — Application Layer | terraform/phase-02-application-layer |
18 |
| 3 — Security Automation | terraform/phase-03-security-automation |
11 |
- Terraform >= 1.0
- AWS (VPC, EC2, ALB, RDS Aurora, Secrets Manager, SSM, Inspector2, EventBridge, Lambda, SNS, CloudWatch)
- Python 3.12 (Lambda)
- GitHub: AuthaHub
| Document | Description |
|---|---|
| Architecture Decisions | Every design decision with HIPAA rationale |
| Build Log | Phase-by-phase build log with troubleshooting |
| Cost & Cleanup | Cost estimates and teardown log |
| Resume Bullets | Resume and LinkedIn bullets for this project |
