dockerizing the enterprise – fast & secure

31
dockerizing the enterprise – fast & secure the journey of ABN-AMRO towards the usage of Docker containers EMEA PUG Challenge - 2018 Wiebe de Roos

Transcript of dockerizing the enterprise – fast & secure

Page 1: dockerizing the enterprise – fast & secure

dockerizing the enterprise – fast & secure

the journey of ABN-AMRO towards the usage of Docker containers

EMEA PUG Challenge - 2018

Wiebe de Roos

Page 2: dockerizing the enterprise – fast & secure

Flusso: who we are & what we do

• Software development company in NL

• One of the biggest Progress partners

• Focus on OpenEdge & Progress technologies

• Open Source (Java, ServiceMix, etc),

• Web Apps (Mobile, Angular2, React)

• CI/CD Consultancy

2

Page 3: dockerizing the enterprise – fast & secure

who am I?

• Wiebe de Roos

• At Flusso since 2007

• Started as Java developer

• Present: CI/CD Consultant / Engineer

• Hired by ABN-AMRO in NL

[email protected]

Page 4: dockerizing the enterprise – fast & secure

table of contents

1. Business & IT goals

2. Context of CI/CD pipelines

3. The new & improved CI platform

4. Docker containers on an enterprise scale

5. CI/CD pipelines for all

6. Docler Security aspects

7. What’s next?

8. Questions and answers / discussion

Page 5: dockerizing the enterprise – fast & secure

business & IT goals

1. Respond to (external) change

2. From waterfall to Dev(Sec)Ops

3. Faster delivery

4. Optimize CI/CD processes

5. Facilitate team autonomy

6. Boost innovation

7. Improve security at all stages

Page 6: dockerizing the enterprise – fast & secure

CI/CD pipeline orchestration

Page 7: dockerizing the enterprise – fast & secure

ABN AMRO has introduced a set of quality gates and build breakers in the Jenkins pipelines. The software build process breaks when the required quality or security is not met and the developer needs to fix the defect in continue.

CI pipeline & build breakers

Page 8: dockerizing the enterprise – fast & secure

existing CI platform

• Statistics:a. +/-1500 usersb. 350+ projectsc. 10000+ Jenkins jobs

• 1 Jenkins Operation Centre• 10 Jenkins Masters

i. 40+ Linux build slavesii. 30+ Windows build slavesiii. 4 OSX build slavesiv. 25+ HP-fortify (secure coding) slaves

• 100+ (!!!) VMs in on-prem data center…and GROWING…

Page 9: dockerizing the enterprise – fast & secure

1. Ever growing demand of DEV teams

2. Number of static VMs growing every day

3. Maintenance hell

4. No Docker container support

5. No true team autonomy

6. Innovation is slowed down

7. Tech Talent will leave ABN-AMRO

challenges and limitations

Page 10: dockerizing the enterprise – fast & secure

5 major improvements

1. Empower the CI/CD teams

2. Flexible tech stacks + configuration

3. Move to AWS public Cloud & Increase security

4. Infrastructure as Code & Configuration as Code.

5. Cloudbees Jenkins Enterprise is critical

to the CI/CD program

Page 11: dockerizing the enterprise – fast & secure

main Docker use cases

1. Earlier feedback in software development cycle (shift left)

2. Package applications into containers (e.g. java, front-end, OpenEdge)

a. Application code

b. Configuration

c. Deployment scripts

3. Standard building blocks (Docker images) for DEV teams

4. Test/Demo different versions of your application at the same time

5. Replace Jenkins VMs with Docker Containers

Page 12: dockerizing the enterprise – fast & secure

Embrace the whale

Page 13: dockerizing the enterprise – fast & secure

the new and improved CI platform

Page 14: dockerizing the enterprise – fast & secure

Jenkins Enterprise - architecture

Page 15: dockerizing the enterprise – fast & secure

a short history of pipelines

• 2017: Birth of the standard pipelines (STPLs)

• 2018: Birth of the new (Dockerized) pipelines:

• A pipeline for Docker images (e.g. Java, Front-End, OpenEdge)

• Easy to use, easy to implement & extend

• Security is build-in

• A reference for other technologies

Page 16: dockerizing the enterprise – fast & secure

Docker image pipeline – main building blocks

Page 17: dockerizing the enterprise – fast & secure

example: CI/CD pipeline for Java apps

1. A pipeline which uses Docker images as building blocks

2. Create Java application (inside a Docker image)

3. All security stages in place

4. Deploy application in AWS public Cloud

5. Everything is based on source code (no manual steps)

Page 18: dockerizing the enterprise – fast & secure

the full CI/CD pipeline

18

Page 19: dockerizing the enterprise – fast & secure

context of containers in the enterpriseSpecific

Generic

Page 20: dockerizing the enterprise – fast & secure

Docker Security topics on all levels

20

Page 21: dockerizing the enterprise – fast & secure

Why all this?

To avoid compromised containers wherever they are used.

Secure business continuity - don’t end up in the news ;-)

21

Page 22: dockerizing the enterprise – fast & secure

Status: Downloaded newer image for hadolint/hadolint:v1.6.2-6-gcfb547a

/dev/stdin:3 DL3005 Do not use apt-get upgrade or dist-upgrade

/dev/stdin:3 DL3009 Delete the apt-get lists after installing something

/dev/stdin:4 DL3008 Pin versions in apt get install. Instead of `apt-get install <package>` use `apt-get install <package>=<version>`

/dev/stdin:4 DL3015 Avoid additional packages by specifying `--no-install-recommends`

security (1): syntax check Docker image

22

Page 23: dockerizing the enterprise – fast & secure

security (2): anchore dependency check

23

Page 24: dockerizing the enterprise – fast & secure

security (3): Docker benchmark (OSS)

Page 25: dockerizing the enterprise – fast & secure

Continuously monitor your running containers and block anything unwanted

security (4): block anything unwanted

Page 26: dockerizing the enterprise – fast & secure

security (5): monitor docker hosts

Page 27: dockerizing the enterprise – fast & secure

security (6): best practices

1. Use official and approved (base) images - use image signing

2. Protect your Docker-enabled hosts (logging, auditing, hardening)

3. Use non-privileged users for containers

4. Reduce attack surface (keep Docker images clean & small)

5. Do not store secrets inside Docker images

6. Use secure networks (also between containers)

7. Establish standards & guidelines for the enterprise

8. Make everyone security minded

Page 28: dockerizing the enterprise – fast & secure

what’s next - roadmap

Page 29: dockerizing the enterprise – fast & secure

context within Progress software

1. OpenEdge 11.7.4 - first supported Docker container (progress/pasoe)

• standard disclaimers apply :-)

• PAS only (to run application on appserver)

• No OpenEdge DB support (yet)

2. OpenEdge 12 - Server side query resolution

• make up for loss of shared memory connections

3. Running OpenEdge apps inside a Tomcat container

4. Create your own OpenEdge Docker images for CI/CD and testing

Page 30: dockerizing the enterprise – fast & secure

questions and answers

Thank you!

Wiebe de Roos - [email protected]

Page 31: dockerizing the enterprise – fast & secure

references

• Cloudbees Core (formerly Jenkins Enterprise) - https://www.cloudbees.com/products/cloudbees-

core

• Docker security topics - https://docs.docker.com/engine/security/security/

• Docker & Devops - Progress https://www.progress.com/blogs/containerization-leverage-docker-

devops-to-do-more

• Dockerizing a react application - https://www.telerik.com/blogs/dockerizing-react-applications-

for-continuous-integration

• Docker & corticon - https://hub.docker.com/r/corticon/docker/

• OpenEdge Dockerfiles - https://github.com/bfv/docker4oe

• Dockerhub: official OpenEdge Docker images - https://hub.docker.com/u/openedge/