I was talking to the CISO of a Fortune 500 healthcare company about how security teams work with their counterparts in other organizations. He lamented that he had recently overheard a peer refer to him derisively as the "C-S-No." That was painful to hear because it brought into focus one of his most strategic challenges, one that security leaders everywhere are facing. That is, we as an industry haven't figured out how to remain effective and relevant within organizations that are embracing rapid change by adopting DevOps technologies and methodologies to enable it.
DevOps works because it drives communication and collaboration between teams. Operations and development teams are getting faster at deploying new versions of software into cloud environments. They're achieving these gains through the adoption of new technology, but also, even more importantly, by shifting their cultures toward collaboration and iteration using real-time feedback.
Under the old model, Dev builds it and Ops runs it. Iterations take weeks or months, and if anything goes wrong, the first thing each team does is try to prove it's the other guy's fault. The new way brings the teams together, which makes problem resolution part of the process. Iterations are small, and we have tools to get real visibility into what's happening in production. If there is a problem, we can point to the data instead of each other. This focus on communication, collaboration, and the use of production data to drive decisions is the key to making security work in a DevOps world.
The principle issue that security teams face when working with other organizations is how to effectively communicate risk, priority, and tradeoffs. Just because we think something is important doesn't mean our developers and ops guys do, too. Moreover, the old approach of enforcing process and exercising veto power over releases is no longer viable. With DevOps, one thing we can be certain of is that the release is going out the door. No more C-S-No. Today, we can't just say "no." We can't even say "no, but..." We need to find ways to say "Yes, here's how we can do it."
Change in Mindset
To get into "yes" mode, we need a change in mindset that starts with communication, joint goals, and data-driven choices based on common priorities. The problem is that the accurate data that can drive informed decisions is often missing, and therefore security priorities are based on judgment calls. Moreover, even when useful data is available, the language that security teams use to communicate risk is often alien to their peers in development and ops. It's not that developers don't care about security; it's that our old methods do a poor job of educating and proving what must be prioritized. We need ways to pick from the huge list of theoretical risks we know are present — the small handful of immediate, present threats that need to be addressed now.
With that in hand, coupled with the data to back it, conversations between teams become productive and the right result comes out every time. I've never seen a developer get personally motivated to work through a long list of bug reports from a code analysis tool. However, I've also never seen an actively exploited vulnerability uncovered that developers didn't immediately jump on and stay up all night to fix. The difference is that one block of work appears to be purely formal while the other is obviously, tangibly important.
For security to work in the DevOps world - and to make DevOps work for us - we need to get away from telling people about what could be a problem and point to real, quantifiable evidence of problems and risk. If we can make that change, we can take advantage of the huge opportunities that DevOps provides, and, simultaneously, make our software and environments infinitely more secure.