Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Policy as Code

Doug Barth
November 14, 2014

Policy as Code

DevOpsDays Vancouver 2014
Video: http://youtu.be/QEfS0z_iPoo?t=34m1s

Most organizations choose to centralize resource and policy management to make managing it easier. That centralization brings with it some challenges: single points of failure, scaling, etc. Using DevOps practices like configuration management, we have the opportunity to try a different route.

In this talk, we'll discuss why PagerDuty chose to distribute our policy management. We'll look at how we skipped LDAP and distributed user management. We will cover our firewall automation which produces a perfect firewall tailored to each instance. We will profess our love for HAProxy which intelligently balances traffic between our ever changing service layers. We will discuss how we created a point to point IPSec mesh to secure our network traffic. We will discuss how this architecture is working so far and how we plan to improve the experience in the future.

After hearing this talk, I hope to have convinced attendees that implementing policy controls does not require centralized hardware. Treating the policy like code that can be replicated trivially produces a more stable system that is still just as easy to manage, and is architecturally superior.

Doug Barth

November 14, 2014
Tweet

More Decks by Doug Barth

Other Decks in Technology

Transcript

  1. 11/16/14 POLICY AS CODE spdadd 50.0.0.70 10.0.0.153 any -P out

    ipsec esp/transport//require; spdadd 10.0.0.153 50.0.0.70 any -P in ipsec esp/transport//require;
  2. 11/16/14 POLICY AS CODE spdadd 10.0.0.121 10.0.0.153 any -P out

    ipsec esp/transport//require; spdadd 10.0.0.153 10.0.0.121 any -P in ipsec esp/transport//require;
  3. 11/16/14 Define firewall chains by role POLICY AS CODE :app

    - -A app -s 10.0.0.1 -j ACCEPT -A app -s 50.0.0.1 -j ACCEPT
  4. 11/16/14 Use those chains in firewall definitions POLICY AS CODE

    -A INPUT -p tcp --dport 3306 -j app -A INPUT -p tcp --dport 3306 -j slave