Infrastructure as Code
Towards Verifiable Infrastructure Security
Abhisek Datta
Head of Technology, Appsecco
Slide 2
Slide 2 text
Lets start with how attackers work
An attacker wants to hack a target and for this, will
perform a bunch of activities
1. Online Attack Surfaces
2. Breached Credentials
3. Known Vulnerable Software
4. (Easy to?) exploit security vulnerabilities
5. If nothing works
• Invest skill and resources in 0days
Slide 3
Slide 3 text
What is the root cause?
Inspite of so much investment in security, why does low hanging fruits still
exist for an attacker to exploit?
Slide 4
Slide 4 text
How to be secure?
By establishing
TRUST
Slide 5
Slide 5 text
How does trust looks like?
A DFD representing the Transaction Flow in a Online Banking Application
Re-auth
Anti-
fraud
Confirm with
sender for high
value
transactions
Slide 6
Slide 6 text
The Challenge of Security at Scale
This is the Amazon Microservices Graph
The
Challenge of
Security at
Scale is really
–
The
SCALE
Slide 7
Slide 7 text
How do we solve this? (My Opinion)
• By applying the principles of Secure Software
Development Life-cycle while building Infrastructure
• Requirement Analysis
• Design
• Versioning
• Secure Development
• Testing & Verification
• Deployment
• Rolling Update
• Rollback (if required)
Slide 8
Slide 8 text
Infrastructure as Code
Slide 9
Slide 9 text
What is it?
• The process of provisioning and managing
infrastructure through machine readable code &
configuration
• It is an alternative approach compared to managing
physical hardware and provisioning them with
interactive setup and configuration tools
Slide 10
Slide 10 text
The Tooling with an Example
1. Setup 3 EC2
instances in AWS
2. Setup an EFS for
shared state
3. Deploy containers
4. Collect output
5. Monitor for
availability
Slide 11
Slide 11 text
Options for Adoption - Infrastructure
IaaS Platform Tools Vendor
GCP, AWS, Azure Terraform Hashicorp
AWS Cloud Formations AWS
Azure Azure Resource
Manager
Microsoft
Google Cloud Deployment
Manager
Google
Slide 12
Slide 12 text
What can be done with it?
• Codify infrastructure
• Version control
• Test & Verify
• Bug Fix
• Automated & Continuous Deployment
Slide 13
Slide 13 text
Verifiable Infrastructure
What is it really?
Slide 14
Slide 14 text
Enterprise Security Requirements
Can we agree, that the most important requirement is
To not get breached?
Slide 15
Slide 15 text
How to be secure?
By establishing
TRUST
Slide 16
Slide 16 text
Secure Software Development Lifecycle
Security
Requirements
Secure
Architecture
Secure
Development
Security
Testing
Exploit
Mitigation
Release
Management
Slide 17
Slide 17 text
Mapping SSDLC to Infrastructure as Code
SSDLC Secure Infrastructure
Security Requirements Security Requirements
Secure Architecture Secure Architecture
Secure Development Infrastructure as Code
Security Testing Static Analysis and Verification
Exploit Mitigation Anomaly Detection and Prevention
Release Management Release Management
Slide 18
Slide 18 text
An Example of Verifying Infrastructure
A journey towards adopting infrastructure as code
Slide 19
Slide 19 text
A proposed network architecture
Slide 20
Slide 20 text
Codify the Infrastructure (Example uses AWS)
Slide 21
Slide 21 text
The Graph
Slide 22
Slide 22 text
The Threat Model
Slide 23
Slide 23 text
Now what?
• Add security controls (mitigations) in architecture
• Edit code to include the required resources and
configuration
• Push to repository
• This triggers CI/CD
• CI/CD runs test cases on code (if any)
• CI/CD update the live infrastructure
Slide 24
Slide 24 text
Build
Test
Deploy
Audit
Update
How does it all look like?
Slide 25
Slide 25 text
Questions?
[email protected]
That’s all for now.. J
https://appsecco.com
@abh1sek
github.com/abhisek