Scalable Confidential Computing on Kubernetes with Marblerun
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 542 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/61467 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
ScalabilityData managementCartesian coordinate systemCASE <Informatik>CloningDemoscene2 (number)Direction (geometry)System callMultiplication signSet (mathematics)Demo (music)Computational visualisticsComputer animation
00:44
Basis <Mathematik>Program slicingProjective planeInformationIdentifiabilityStreaming mediaMetropolitan area networkEndliche ModelltheorieWave packet
01:11
Information privacySystem identificationService (economics)Information privacyMedical imagingComputational visualisticsWeightWave packetInformationRun time (program lifecycle phase)Endliche ModelltheorieFilm editingVideoconferencingMultiplication signForcing (mathematics)Formal verificationComputer animation
02:36
Information privacyBuildingIntelMachine visionSet (mathematics)Source codeService (economics)Mobile appSoftware development kitCASE <Informatik>Projective planeFeasibility studyCollisionStatement (computer science)Type theoryVideo game consoleScalabilityGame controllerShift operatorPlanningSoftware frameworkOpen sourceComputerService (economics)Cartesian coordinate systemComputer architectureWebsitePoint cloudMobile appComputer animation
03:34
Service (economics)Game controllerPlanningCoordinate systemRegular graphService (economics)Parameter (computer programming)Real numberComputational visualisticsRemote procedure callCartesian coordinate systemConfiguration spaceSoftware frameworkMereologyPolygon meshType theoryInformation securityRight angleConnected spaceSign (mathematics)Data managementVirtual machineConnectivity (graph theory)Integrated development environmentInformationINTEGRALFood energyWorkstation <Musikinstrument>CASE <Informatik>Natural numberFunctional (mathematics)Flow separationDifferent (Kate Ryan album)Computer architectureSampling (statistics)Identity managementCore dumpComputer animation
06:45
Computer fileParameter (computer programming)Front and back endsString (computer science)Computer virusGamma functionCodierung <Programmierung>Transport Layer SecurityGroup actionPublic key certificateSoftware testingExecution unitSymmetric matrixData typeShared memoryCoordinate systemService (economics)Variable (mathematics)Game controllerOperator (mathematics)Parameter (computer programming)Cartesian coordinate systemFront and back endsLatent heatRollenbasierte ZugriffskontrolleFile formatComputer fileRight angleInstance (computer science)Type theoryGroup actionElectronic signatureKey (cryptography)Sheaf (mathematics)Integrated development environmentConfiguration spacePoint (geometry)Endliche ModelltheorieHeegaard splittingFlow separationData miningVector potentialMobile Web2 (number)Rule of inferenceAnnihilator (ring theory)Position operatorComputer hardwareCASE <Informatik>Moving averagePhysical systemComputer animation
10:37
Service (economics)Statement (computer science)Service (economics)Statement (computer science)Physical systemIntegrated development environmentWechselseitige InformationTerm (mathematics)Regulator geneMechanism designSystem callCASE <Informatik>TwitterRouter (computing)Connected spaceOperator (mathematics)Run-time systemData managementType theoryMultiplication signBitCartesian coordinate systemFlow separationRun time (program lifecycle phase)Streaming mediaCoordinate systemWorkstation <Musikinstrument>Public key certificateInformation securityDifferent (Kate Ryan album)Demo (music)Mixed realityMereologyFamilyRootProgrammable read-only memoryComputer fileConfiguration spaceGroup actionEndliche ModelltheorieRoutingRow (database)Point cloudUniqueness quantificationComputational visualisticsProjective planeDebuggerPolygon meshValidity (statistics)Computer animation
14:35
Internet service providerLoginAsynchronous Transfer ModeClient (computing)Configuration spaceGamma functionElectronic signatureSystem programmingControl flowComputer-generated imageryPlane (geometry)MaizeInstallation artRaw image formatComputer configurationAddress spaceEmailServer (computing)VotingPolygon meshVideo game consoleCartesian coordinate systemIntegrated development environmentRegular graphCoordinate systemSlide ruleTask (computing)LastteilungDemo (music)Front and back endsService (economics)Client (computing)VotingCASE <Informatik>Type theoryPublic key certificateWeb 2.0MereologyAuthenticationParameter (computer programming)Validity (statistics)State of matterCommon Language InfrastructureRootSet (mathematics)NamespaceMultiplication signScalabilityEndliche ModelltheorieEstimatorContext awarenessObject (grammar)Programmable read-only memoryServer (computing)Student's t-testReplication (computing)PlanningRoutingDisk read-and-write headRow (database)Natural numberConnectivity (graph theory)Computer animationSource code
19:29
Source codeTouch typingType theoryComputational visualisticsCycle (graph theory)Marginal distributionProjective planeWeb pageVideo gameLink (knot theory)Open setCASE <Informatik>Computer hardwareData managementService (economics)Regular graphAsynchronous Transfer ModeMatching (graph theory)Cartesian coordinate systemSimulationStack (abstract data type)Point cloudComputer animation
20:49
Open sourceComputational visualisticsOpen setProjective planeBitMultiplication signFreewareJSON
21:24
Program flowchart
Transcript: English(auto-generated)
00:07
Hello, everyone. My name is Moritz Eckert, and in this talk, I want to highlight a challenge of confidential computing that goes more into this DevOps direction. I want to talk about how we can deploy, orchestrate, and manage confidential
00:20
applications in a scalable, more cloud-native way using a tool called Maboron. Before we go into the details, I want to first set the scene, give you an understanding of the use case, of the problem set we're dealing with, and then step by step explore the solution that Maboron offers.
00:40
And in the end, we might even have time for a short demo. So, we were doing a project together with Bosch, where we were dealing with cars, vehicles, providing video streams that contained personal identifiable information, PII.
01:02
That means license plates, faces, other things that we wanted to feed into a model training, an AI model training pipeline. And we wanted to train that model on the raw, real data. That means no blurring, no cutouts.
01:25
And at the same time, we wanted to make use of an external labeling service that we would provide this material and they would label it for us so we can train our model on it. Of course, this should all be done in a privacy-preserving way, not sharing any of this PII.
01:45
And therefore, we developed a pipeline that essentially splitted the image based on what is PII and what is not, and then would send the, let's call it safe, non-PII footage to the labeling companies,
02:01
get back the labels, put together the image with the PII information again, and then feed it to our model training. And for that, we wanted to use confidential computing. That means from the car fleet to the actual trained model, data would always be encrypted also at runtime, and we can have this whole pipeline verifiable.
02:25
And this pipeline should be scalable, should hold up against the challenges of a large car fleet sending a lot of footage, a lot of video data. You can find more about this use case of this project. We presented
02:41
that with Bosch at Microsoft Build, Intel Vision. You will find those talks online. We, from the actual site, we built open source projects to realize such types of confidential computing applications. We have a bunch of tools targeting more of these new types of applications, and
03:02
then we have a tool called Constellation that's more for the lift and shift side. So for this specific project, we choose the Marveron framework, which we call the control plane for scalable confidential apps. But now that we know the problem statement, let's see in more detail what are the challenges when you want
03:25
to deploy such scalable AI pipeline or any other type of microservice architecture in Kubernetes or any other cloud orchestrator. So on the right hand side, we have our cluster that's already confidential computing capable. In that case, it were SGX equipped machines.
03:44
We already packaged our application into secure enclaves. In this case, we use the Grameen framework for Intel SGX, which will be presented in the next talk after that one. So this is already done. Now on the left hand side, or top left, we have our DevOps team.
04:04
And the DevOps team now wants to deploy all those different microservices that together build up the pipeline. And they want to ensure that all of them have integrity, they have the right identity, they want to do remote attestation, essentially. But how can they do that without doing that for each and every
04:24
service individually that, you know, potentially can scale up and down dynamically, right? This is going to be a huge pain if you would do that. And then they want to provide configuration, they want to provide parameters. Similarly, how you would do in a regular Kubernetes deployment, but you
04:41
can't trust the Kubernetes environment, you can't trust the control plane or anything. So how can they manage, orchestrate such applications? And then once deployed, how can the individual services, how can they securely communicate with each other, knowing that the other end of the connection is indeed a valid secure enclave, it has the right identity, it's also part of the pipeline.
05:06
And how can we do that decoupled from the application layer? So we don't have to do that over and over again, where we build a new type of application and need to do remote attestation on the application logic. No, we want to do that in a service mesh fashion where we decouple this functionality and solve it on a different layer.
05:24
And lastly, how can an external party like the car fleet verify an entire deployment that's just not one big monolith but consists of several services? How can they verify from the outside in one single simple step without knowing the inner details of our architecture?
05:44
So these are the challenges we are facing when we do real world deployments using confidential computing. So now that we know the challenge, let's see how Maveron approaches this problem. So with Maveron, we deploy a control plane component, we call it the coordinator.
06:05
So we deploy the coordinator that itself runs inside a secure enclave. That means our DevOps team can first verify that coordinator. And then they can provide or they provide the coordinator with a configuration, a deployment configuration we call the manifest.
06:26
And that is similar to any other deployment configuration for Kubernetes. But we deploy it to a trusted controller that we verified beforehand. So I want to show a quick example of how such manifest could look like.
06:46
You can see here it's JSON format. The first thing we define here are packages. Packages are essentially the enclaves. This right here is specific to Intel SGX. So we have the MR signer, here signer ID and so forth.
07:02
In the future, this will also support other types of CC hardware, for example AMD SCV and so forth. But in this case, we have two SGX enclaves, backend and frontend. And they are identified with their unique signatures.
07:21
And once we have these packages defined, think of them like you defined a container, right? A containerized enclave. We define the next section, which is our marbles. And marbles now consume such package. So think like a Kubernetes pod consuming a container. In this case, it consumes the backend package.
07:41
And then we can define several parameters like files that should be available to that marble or the environment variables that you want to have defined for that marble and the arguments. And this is similar to any other Kubernetes deployment. But now because it's the manifest, because you can verify it,
08:03
the coordinator can enforce this configuration for your enclaves and you can trust these configurations. And that's the important point. What we also have here is called roles. So this model is associated with two roles, third reader and key reader.
08:20
And Marberon implements a type of role-based access control. So if I scroll down in this manifest, I will find a section that is called roles. And here, similar to any other role-based system, every role is associated with a resource and specific instances of these resource.
08:41
And it defines what action that role can perform on the resource. And these roles, we can then use to attach them to marbles. So marble can do certain operations on resources. And we also have users and users are authenticated using PKI,
09:01
and then they can do whatever their role allows them to do. One of the things, for example, would be to define a secret. And the secret could be, for example, a user-defined secret, for example, an API key. And then we have a user, we have a role that allows them to update the API key.
09:23
And this would, for example, allow you to have a multi-tenant scenario where you have the DevOps team that deploys this application and you have another team that is managing another service or access to something and that provides a key or an API key into that application.
09:45
And using the role-based access control, they can deploy that or set that specific secret after the manifest has been put in place. So this key is then uploaded, is managed by the coordinator, which is trusted
10:01
and is from there distributed to your services, to your marbles. And that means the DevOps team can never access a secret. So you have a split of trust, right? You have the owners of that secret that will always stay in control and you have the DevOps team and they can engage in a multi-tenant scenario.
10:23
So we now have seen the manifest, we have seen the packages, the marbles, the role-based access control and resources such as secrets. So we go back to our example, after setting the manifest,
10:41
the coordinator will then take care of providing those credentials, those secrets or configurations to your marbles, to your services. So once you deploy them using regular Kubernetes means of deploying the application, they will come up, they will be authenticated by the marbling coordinator and then receive their parameters, their credentials.
11:03
Part of these credentials are TLS certificates. So every service has a unique leaf TLS certificate, which goes up to a root certificate that is established by Marberon as a PKI infrastructure.
11:20
So for every deployment you have one root certificate. And those can then be used to establish secure connections between the services. For certain runtime environments such as Ego, this can be done automatically in a neutral TLS fashion if you're familiar with service mesh kind of things,
11:40
you might be familiar with that term, but essentially it means you will wrap every TCP connection between your services automatically into TLS so they are secured. For other types of runtime environments or if they are specific neat, you can also consume those credentials using the Marberon manifest.
12:01
You can place them into files, you can place them into the environment and then your application can take them from there and use them to establish secure connections. That's very similar to how you would operate with CERT Manager or other certificate management systems for Kubernetes. The difference being that those certificates are only available inside that secure confidential environment,
12:21
inside your secure confidential deployment, that means the coordinator and then your services. So now what we have is we have our running deployment, everything is connected, they can communicate with each other. So in the last step now an outside party can connect to the coordinator again,
12:42
can obtain its attestation statement that contains the Marberon manifest so they can verify that indeed a valid Marberon coordinator, they can verify that indeed the deployment, the manifest, they expect it to be in place there. And they will obtain the root certificate from this deployment.
13:02
And after verifying that they can use the root certificate to authenticate to their deployment, in this case the front end of the AI pipeline that consumes the video stream from the cars. And transitively because they verify the coordinator, they verify the manifest, they verified the entire deployment
13:22
in one concise simple step. And that's it. Now we have all of these problems I've showed you earlier, we have them solved, we can manage and orchestrate that deployment from the DevOps team side, we can communicate with that deployment from the car fleet and potentially any other third party or legislator
13:42
or regulator can verify this deployment as well using the same type of mechanism. So in summary what does Marberon do? It adds an orchestratability, a configurability, a manageability to your confidential deployments, make them scalable, make them updatable,
14:02
make them manageable. It can run standalone but it runs best on Kubernetes and the usual cloud environments. It supports several runtimes, so far it's SGX specific, so for example Ego, Graphene, Occlum. In the future we plan to also support
14:21
other types of confidential computing runtimes like AMD, SAP, Intel TDX, most likely based on the Confidential Containers project. Okay, now we have a little bit of time left to look at a demo. Let me switch to my console.
14:41
I have a Kubernetes cluster running here on Microsoft Azure with two nodes that are both equipped with SGX capabilities. And we will now install Marberon, set the manifest and deploy a simple demo application. So we use the Marberon CLI tool
15:03
that you can use to interact with the Marberon coordinator and perform your usual DevOps tasks. So Marberon install will make sure to install the Microsoft coordinator. That just should take a second for everything to be set up.
15:24
And then we can port forward the client API to localhost so we can interact with the coordinator and this should be, if you're in a production environment you can of course also use an external load balancer or any other way of exporting that service
15:44
to any kind of environment you want to. Just need to wait a second for the coordinator to be up and running and then I can use this client API from here. And the second step would be then to verify
16:02
the coordinator is indeed a valid Marberon coordinator with the correct enclave. We can use any type of command that will automatically do this verification and in this case we want to obtain the root certificate of this Marberon deployment here.
16:21
This would also be what an external party like a car fleet can do to obtain a root certificate and then connect to the application. Of course you can always do that ahead of time and then just distribute that certificate as the root of trust. But once we trust the coordinator which is just a plain constellation coordinator
16:44
we can do Marberon check providing the Marberon status. We can use Marberon status to see what status the Marberon coordinator is in.
17:01
In this case it's waiting for a manifest to be set. So now we can set the manifest. I have one prepared here. It's a very simple application just having three packages, microservice, demo application, one frontend, two backend services. So three packages, also three marbles
17:21
for these packages and they build up such demo emoji voting service. We have already seen the manifest. I'm not going to go into the detail again but of course also this is in GitHub so you can have a look at it if you want to. And then we can just set this manifest using Marberon manifest set
17:42
and it will upload the manifest and now the Marberon coordinator should be in the state of being ready to accept and authenticate marbles. So now we can just go ahead and deploy our application and this is just regular Kubernetes application deployments. So in this case we're using Helm
18:03
for this emoji voter demo application. It will install those three services and make sure that they are continuously running. And we can now check Marberon and see those authentication requests where those marbles
18:21
for example the web frontend or one of those two backend services will contact the coordinator, will authenticate itself and be provided with the configurational parameters and their credentials. So we see the web frontend was first activated as a new marble. And this will continuously be running.
18:43
So now if I go ahead and get all the parts in the emoji voter namespace I will see that all of these services are indeed running and if I would now scale up and down one of them they will be automatically authenticated again by Marberon and be added to this deployment
19:03
spanning a confidential overlay, a confidential deployment. Yeah, and that's it from the demo. I think we've seen how you can interact with the Marberon CLI, we can install it, how easy it is to deploy a confidential application and we can now keep using Marberon to orchestrate
19:22
and update secrets and update things based on what we defined in the manifest. Yeah, let's go back to the slides. That's it. I think we've seen in summary Marberon makes it quite easy to deploy, orchestrate,
19:44
just manage applications during the lifecycle, manage confidential applications during the lifecycle and it augments the usual DevOps stack of cloud native deployments using Kubernetes, using your regular service match and so forth. So if you want to try it out or want more details
20:01
please see our GitHub page. It also links to a documentation. You can very quickly create your first confidential deployment. We also have a simulation mode so if you don't have access to any type of confidential computing hardware you can just use the simulation mode to run it locally using Minikube or whatever the tooling you have in place.
20:24
And then if you have further questions please get in touch. You can find me on LinkedIn. You can join our Discord. I will also be there tomorrow on day two of the Confidential Computing Dev Room. Please hit me up if you have any questions
20:41
or just want to have a chat. And yeah, before we go into the Q&A one last cheeky little self advertisement. We have the open Confidential Computing Conference coming up in March. I think you're the right audience for that. There are a lot of confidential computing open source projects
21:01
that are going to be presented in the next couple of weeks. and other insights into confidential computing in general. So yeah, it's free. It's online. Please register if you're interested. It will be very, very cool to see you all there. That's it. Thank you very much. And I think we have a bit of time left for questions.