<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Edgeless Systems</title>
    <description>The latest articles on Forem by Edgeless Systems (@edgelesssys).</description>
    <link>https://forem.com/edgelesssys</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F6122%2F39bb9380-066c-4f8e-a927-3bf5e2d8b6da.png</url>
      <title>Forem: Edgeless Systems</title>
      <link>https://forem.com/edgelesssys</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/edgelesssys"/>
    <language>en</language>
    <item>
      <title>We built the first always (!) encrypted K8s 🔐</title>
      <dc:creator>Felix Schuster</dc:creator>
      <pubDate>Fri, 23 Sep 2022 15:28:55 +0000</pubDate>
      <link>https://forem.com/edgelesssys/we-created-an-always-encrypted-kubernetes-1381</link>
      <guid>https://forem.com/edgelesssys/we-created-an-always-encrypted-kubernetes-1381</guid>
      <description>&lt;p&gt;Hey there dev.to 👋 &lt;/p&gt;

&lt;p&gt;Wanted to share what my colleagues and I haven been working on for the last 1.5 years and &lt;a href="https://github.com/edgelesssys/constellation"&gt;open sourced&lt;/a&gt; last week. Would love to get your feedback.&lt;/p&gt;

&lt;p&gt;The project is called Constellation and it's a K8s distribution like Rancher or OpenShift. What makes Constellation special is that it's designed to shield entire K8s clusters from the cloud infrastructure (and cloud employees) and &lt;strong&gt;keep all data always encrypted - even at runtime&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DvQx97BE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ns94nifkfec1g0te12x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DvQx97BE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2ns94nifkfec1g0te12x.png" alt="Constellation concept" width="880" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Foundations
&lt;/h2&gt;

&lt;p&gt;A key ingredient are AMD SEV-based Confidential VMs (CVMs), which are available in &lt;a href="https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview"&gt;Azure&lt;/a&gt; and &lt;a href="https://cloud.google.com/compute/confidential-vm/docs/about-cvm"&gt;GCP&lt;/a&gt;. CVMs protect workloads against a compromised host and malicious admins. For this, CVMs remain encrypted at runtime in memory, are strongly isolated, and have advanced remote attestation capabilities. This is also often referred to as &lt;em&gt;confidential computing&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Intel and Arm have announced similar features for their server CPUs and we plan to support these once they become available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goals
&lt;/h2&gt;

&lt;p&gt;We designed Constellation with two goals in mind: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It should provide the best possible security and essentially allow one to safely run a K8s cluster on potentially compromised infrastructure. Even privileged cloud provider employees shouldn't be able to access the data in a cluster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;From a UX-perspective it should work like normal K8s.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Architecture &amp;amp; features
&lt;/h2&gt;

&lt;p&gt;Constellation consists of three main components: a CLI, a custom node image, and a set of containers/services.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLI
&lt;/h3&gt;

&lt;p&gt;The CLI allows for the easy set up of a Constellation cluster in Azure or GCP (we're working on supporting more clouds). For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;constellation config generate azure
&lt;span class="nv"&gt;$ &lt;/span&gt;constellation create &lt;span class="nt"&gt;--control-plane-nodes&lt;/span&gt; 1 &lt;span class="nt"&gt;--worker-nodes&lt;/span&gt; 2 &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;constellation init
&lt;span class="nv"&gt;$ &lt;/span&gt;kubectl ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The CLI automatically creates CVM-based nodes using Constellation's node image. The node image is based on Fedora CoreOS and is optimized for CVM remote attestation. &lt;/p&gt;
&lt;h3&gt;
  
  
  Cluster attestation/verification
&lt;/h3&gt;

&lt;p&gt;The first node in a cluster is verified 🔎 by the CLI directly. All others are verified by existing nodes. Thus, transitively, the users knows that only "good" nodes running "good" images are part of the cluster. &lt;/p&gt;

&lt;p&gt;How to know what a "good" node image is? We sign all node images (and also the CLI) and publish the corresponding signatures on the &lt;a href="https://docs.sigstore.dev/rekor/public-instance"&gt;Sigstore's public transparency log&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Network &amp;amp; cloud storage encryption
&lt;/h3&gt;

&lt;p&gt;After a node is verified, it receives cryptographic keys to talk securely to other nodes over the network and for encrypting data that is written to cloud storage. These keys are all managed by Constellation. For network encryption, Constellation relies on Cilium.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CVM runtime encryption, network encryption, and storage encryption together ensure that all data is always encrypted.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Check the &lt;a href="https://github.com/edgelesssys/constellation"&gt;📄README&lt;/a&gt; for a more comprehensive list of features and benchmark comparisons.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://asciinema.org/a/TnMDcICjOF61llQPBTsizormX" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ek7El05E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://asciinema.org/a/523406.png" height="380" class="m-0" width="880"&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://asciinema.org/a/TnMDcICjOF61llQPBTsizormX" rel="noopener noreferrer" class="c-link"&gt;
          Constellation Demo GCP - asciinema
        &lt;/a&gt;
      &lt;/h2&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--maY09fMR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://asciinema.org/images/favicon-2d62dafa447cf018340b7121007568e3.png%3Fvsn%3Dd" width="32" height="32"&gt;
        asciinema.org
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  What is this good for?
&lt;/h2&gt;

&lt;p&gt;Fully encrypting and isolating a K8s cluster helps with the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⬆️ Increasing data security; preventing &lt;a href="https://twitter.com/gafnitav/status/1572229130141270018"&gt;data breaches&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🚛 Moving sensitive workloads from on-prem to the cloud&lt;/li&gt;
&lt;li&gt;⚖️ Meeting regulatory requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, in our native Germany and elsewhere, confidential computing and runtime encryption are already mandatory for certain eHealth applications.&lt;/p&gt;

&lt;p&gt;What do you think?&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>opensource</category>
      <category>security</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
