Conf42 Cloud Native 2023 - Online

From zero to hero: how platform engineers are Zero Trust rainmakers

Video size:

Abstract

Zero trust is hard but important; part of the answer is shifting security left into the application lifecycle. Sounds good in theory but devs have their own challenges. All is not lost though, as I will explain in this talk about Zero Trust, Kubernetes, automation and the rise of the Platform Team.

Summary

  • Steve Judd, chief architect at Jetstack, talks about zero trust within Kubernetes. What it is, the principles behind it, the challenges and what kind of tools are available. To sum up then in a bit more of a concise manner, never trust, always verify every single time.
  • Key principles that underpin zero trust include the principle of least privilege. For each request that's made, you need to establish the identity of the requester. And this has to be done on a per request basis. All of these principles are designed so that if a malicious actor does manage to gain access to one of your servers.
  • There are challenges with introducing a zero trust approach into any environment. How do we solve these in a containerized world? Kubernetes has a bunch of native features that will help with this. Who's responsible for defining these policies, making sure that they're implemented and enforced?
  • Security teams deeply understand what security policies need to be introduced. But they probably don't have the right expertise in terms of Kubernetes knowledge. It's really the platform engineers folk that are going to be the ones responsible for implementing and probably enforcing these policies.

Transcript

This transcript was autogenerated. To make changes, submit a PR.
Hi, my name is Steve Judd, I'm chief architect at Jetstack. We're part of Venafi, who are a cybersecurity company, and we in jetstack provide customers with cloud native Kubernetes professional services, and quite frequently that involves security, implementing security best practices. And often as a result of this, I find myself having conversations with security teams about the best approaches they can take in order to implement security best practices such as zero trust within Kubernetes environments. And what this talk is all about is really zero trust. What it is, the principles behind it, the challenges and what kind of tools are available to be able to deploy these into Kubernetes, clusters and environments. So first of all, I want to go through a definition from Forrester about what zero trust really is. So it starts with an information security model that denies access to applications and data by default. So essentially default deny any request. So it continues with threat prevention is achieved by granting access only to networks and workloads utilizing policies. So essentially there will be some policies that define exactly who and what can access or a particular resource or execute a particular API. And exactly how to determine whether the request meets the sort of policy requirements is informed by this contextual risk based verification across users or their devices. So essentially any request that comes in, whether it comes from a user, whether it comes from a device, whether it comes from a service, you need to identify who that service or that user is, what permissions they've got, in effect, whether they're allowed to actually access that resource or execute that API. To sum up then in a bit more of a concise manner, never trust, always verify every single time. So that's kind of a brief, this is what zero trust is all about. But let's talk a bit more about, well, what are the key principles that underpin zero trust. So first off we've got the principle of least privilege, and essentially that's saying you should only give the requester the access they need to execute the request that they're trying to make. So as an example, don't give everyone cluster admin access to your Kubernetes clusters, because for sure they don't need it. Secondly, for each request that's made, you need to establish the identity of the requester and establish what permissions they have against that particular resource or API that they're trying to execute. And this has to be done on a per request basis. So as you can tell, identity is quite a key component of zero trust. So this isn't talking about just users identity it's also talking about identities for machines, machines being servers, virtual machines, IoT devices and so on. And typically we do this with X 509 certificates. And then finally, it's not enough to establish the identity of the requester and figure out whether they've got the right permissions. You also need to start looking at the context within which they're making this request. So, for example, what location is this request coming from? And is it usual for that identity? So in the case of a user that's based in the United Kingdom, would you expect them to be making a request from, say, Russia? So that's what I mean by a context based decision as well. So essentially, all of these principles are designed so that if a malicious actor does manage to gain access to one of your servers, for example, then it will prevent them from being able to explore other parts of your network, other servers or other devices and so on. So that's what I mean by what we mean by lateral movement within the network. Okay, so we've talked about what zero trust is, and we've talked about the principles that underpin it. Well, inevitably there are challenges with introducing a zero trust approach into any environment. So what I'm going to do is spend a few minutes talking about exactly what those challenges are within a kind of cloud native Kubernetes world. So first of all, machines are in a network, and by this I mean servers, devices, services, workloads, pods, jobs, they're increasing at an exponentially rapid rate. And given that all of these need a unique identity based on an X 509 certificate, then it's really not practical to do this manually because we're looking at issuing certificates, renewing them, revoking them and so on. So really you need some kind of tool to help you with this. As an example, venify, provide a tool called TPP, specifically designed for managing expo VI, nine certificates. Secondly, access control. So how do you define this? At what level? How do you update it? How do you enforce it? Thirdly, we've got this idea of shift left security, which is where you move towards the development team, more responsibility for implementing security practices. And genuinely, it's a good idea, but development teams and other teams have got competing priorities. So kind of how do you get some traction with this? How do you actually achieve this? And then finally you've got the whole governance and oversight aspect. So who's responsible for defining these policies, making sure that they're implemented and enforced? So now that we've kind of talked around zero trust, its benefits, and also the challenges that you're going to face when trying to implement it. How do we actually go about solving these in a containerized world? And really what I'm talking about is within your Kubernetes environments. So first of all, Kubernetes comes up with or has a bunch of native features that will help with this zero trust approach. First of all, it has role based access control, which can be incredibly granular and really allow you to very tightly specify exactly what a workload can do within a cluster. Secondly, if you've got the right CNI driver, then you can take advantage of network policies and these will allow you to define what pod can talk to, what other pods on what ports. So as I said, something that many CNI drivers implement, but not all of them. And then finally you have pod security. So that allows you to define within your pod, manifest the constraints within which the containers in that pod have to run. And then as part of that you have a pod security admission controller which is in charge of enforcing those policies. So basically if your pod manifest doesn't contain the right constraints, then this admission controller will prevent that pod from even being deployed into your Kubernetes cluster. So as well as the native features within Kubernetes itself, there are a whole bunch of add ons which also provide a whole bunch of additional security related features. So I'm going to go through three of the most important here. So first of all, you've got Cert manager, which probably many of you are aware is basically the de facto tool for managing x 509 certificates within a Kubernetes cluster. Then you have a variety of service mesh tools out there such as Linkerd and istio. They provide out of the box services like mutual tls between workloads in your cluster. And they provide things like traffic policies so you can enhance, if you like, your network policies to determine exactly where traffic can go and under what circumstances. And then finally we've got these policy based admission controllers like Kiverno and Gatekeeper, and they allow you to specify very sophisticated security policies that all your deployments, your pods, your workloads have to adhere to. Otherwise these admission controllers will deny access to these pods being deployed. So that's great. We've now covered a whole bunch of features and tools within Kubernetes that will help with zero trust. But exactly where then does this shift left security fit into this? Well, here's the thing. Security teams deeply understand what security policies need to be introduced, what they look like, but they aren't necessarily the right people for actually implementing those policies because they probably don't have the right expertise in terms of Kubernetes knowledge. And there are probably better teams, let's say, who will be better placed to do this implementation work. And I'm kind of specifically thinking about the platform engineers and the reason for this is that, well they already have the Kubernetes expertise and they have the know how in kind of automating everything that goes on in your Kubernetes world. And then finally they already are deeply familiar with the tools that are being run in their Kubernetes clusters and the tools that they probably want to run like Istio or Linkerd or cert manager. So really what I'm trying to say here is that although the onus is on the security teams to kind of take the lead and define the policies, it's really the platform engineers folk that are going to be the ones responsible for implementing and probably enforcing these policies. So what I'm trying to say here is the platform teams and the security teams absolutely need to collaborate on ensuring that zero trust approaches can be adopted within Kubernetes clusters. So that really is the end of my talk, so I hope you found it informative and enjoy the rest of the conference.
...

Steve Judd

Chief Architect @ Jetstack, a Venafi Company

Steve Judd's LinkedIn account



Awesome tech events for

Priority access to all content

Video hallway track

Community chat

Exclusive promotions and giveaways