Slide 1

Slide 1 text

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