云原生机密计算和 enclave 运行时生态系统inclavare-containers

简介: 一种新颖的容器运行时,又名机密容器,用于云原生机密计算和 enclave 运行时生态系统。

image.png

Inclavare,读作[ˈinklɑveə],是该词的拉丁语词源enclave,意思是将用户的敏感工作负载与不受信任和不可控的基础设施隔离,以满足对使用中数据的保护要求。

Inclavare Containers 是容器运行时的一项创新,采用了在硬件辅助可信执行环境 (TEE) 技术(又名 Enclave)中启动受保护容器的新颖方法,该技术可以防止不受信任的实体,例如云服务提供商 (CSP) 访问使用中的敏感和机密资产。

Inclavare Containers 具有以下显着特点:

  • 面向机密计算。Inclavare Containers 提供了用于保护租户工作负载的通用设计。
  • 在租户的工作负载和 CSP 控制的特权软件之间创建硬件强制隔离。
  • 从不可信云中租户的可信计算库 (TCB) 中删除 CSP。
  • 构建通用认证基础设施,说服用户信任基于硬件辅助飞地技术在 TEE 内运行的工作负载。
  • 符合 OCI。该组件rune完全兼容与OCI运行规范。
  • 与云平台无关。它可以部署在任何公共云 Kubernetes 平台中。

有关Inclavare Containers 中使用的更多技术表达,请参阅术语

观众

Inclavare Containers 帮助保护租户的机密数据安全,让他们确信他们的数据不会暴露给 CSP 或他们自己的内部人员,并且他们可以轻松地将他们信任的应用程序迁移到云中。

建筑学

Inclavare Containers 遵循经典的容器运行时设计。它以对containerd的适配为第一类,并使用专用的shim-rune与 OCI Runtime rune接口。在下游,init-runelet采用了一种新颖的方法来启动enclave 运行时和在硬件强制 enclave 中的可信应用程序。

image.png

Inclavare Containers 的主要组件是:

  • rune
    rune 是一个 CLI 工具,用于根据 OCI 规范在容器中生成和运行 enclave。符文已经写入OCI 运行时实现列表
  • shim-rune
    shim-rune 位于 containerd 和 之间rune,进行超出正常shim基础的enclave 签名和管理。特别是shim-rune,rune可以组成一个基本的enclave容器化栈,用于机密计算,为机密计算的使用提供了低门槛和与普通容器相同的体验。有关详细信息,请参阅此文档
  • enclave runtime
    的后端rune是一个名为 enclave runtime 的组件,它负责加载和运行 enclave 内受信任和受保护的应用程序。runeenclave 运行时之间的接口是Enclave Runtime PAL API,它允许通过定义良好的函数调用 enclave 运行时。机密计算软件可以从这个接口中受益,与云原生生态系统进行交互。
    一类典型的飞地运行时实现基于库操作系统。目前,推荐的与之交互的 enclave 运行时runeOcclum,这是一种用于英特尔 SGX 的内存安全、多进程库操作系统。另一个典型的 enclave 运行时类别是带有 Intel SGX 的WebAssembly Micro Runtime (WAMR),这是一个占用空间很小的独立 WebAssembly (WASM) 运行时,包括一个 VM 核心、一个应用程序框架和一个 WASM 应用程序的动态管理。
    此外,您可以使用您喜欢的任何编程语言和 SDK(例如Intel SGX SDK)编写自己的 enclave 运行时,只要它实现了 Enclave Runtime PAL API。

认证

Inclavare Containers 实现了 Enclave Attestation Architecture (EAA),这是一种通用的跨平台远程证明基础架构。EAA 可以证明敏感工作负载正在基于机密计算技术的真正可信的硬件 TEE 上运行。EAA 的正式设计将针对 RFC 发布。

image.png

EAA的主要成分是:

  • Enclave-TLS
    Enclave-TLS增强了标准 TLS 以支持基于机密计算技术的异构硬件 TEE 之间的可信通信,该技术由ra-tls(已弃用)演变而来。即使使用非硬件 TEE 平台Enclave-TLS也可以通过经过认证和安全的通道与硬件 TEE(例如 SGX Enclave)通信以传输敏感信息。换句话说,TCB 的边界从执行环境扩展到网络传输Enclave-TLS。此外,Enclave-TLS具有可扩展的模型来支持各种硬件TEE。
  • 机密容器
    机密容器以飞地运行时的形式Occlum响应来自 的请求Inclavared,然后将机密容器的证明证据发回给Inclavared。机密容器扮演证明者的角色。
  • Inclavared
    Inclavared负责转发机密容器和Shelter. 通信过程由经过证明的Enclave-TLS通道保护。
  • Shelter
    Shelter作为部署在云外的验证者的角色,记录 enclave 运行时的启动测量,然后建立经过证明的Enclave-TLS通道与Inclavared. 最终,它检索有关 enclave 运行时的证据以进行验证。

非核心组件

  • sgx-tools
    sgx-tools 是一个 CLI 工具,用于与 Intel SGX AESM 服务交互以检索各种材料,例如启动令牌、引用 enclave 的目标信息、enclave 引用和来自 IAS 的远程证明报告。有关其用法的详细信息,请参阅本教程
  • epm
    epm 是一项服务,用于管理缓存池以优化 enclave 的启动时间。有关其用法的详细信息,请参阅本教程

路线图

有关详细信息,请参阅Inclavare Containers Roadmap。本文档概述了 Inclavare Containers 项目的开发路线图。

建造

建议使用Inclavare Containers 开发docker 镜像从头开始构建 Inclavare Containers。

请注意,启动 Inclavare Containers 开发 docker 镜像的环境必须能够支持硬件 TEE 并安装相应的软件堆栈,例如 Intel SGX 和Intel SGX SDK & PSW for Linux

运行 docker 镜像的确切命令需要根据 SGX 设备驱动程序的类型明确指定。

对于传统的树外驱动程序:

docker run -it -v /var/run/aesmd:/var/run/aesmd \
  -设备 /dev/isgx \
  inclavarecontainers/dev: $version - $os

对于 DCAP 和树内驱动程序:

docker run -it -v /var/run/aesmd:/var/run/aesmd \
  -v /dev/sgx_enclave:/dev/sgx/enclave -v /dev/sgx_provision:/dev/sgx/provision \
  inclavarecontainers/dev: $version - $os

在哪里:

  • $version 表示正在使用的 Inclavare Containers 版本。
  • $os 表示开发docker镜像的操作系统类型,可能是ubuntu18.04、centos8.2或alinux2。

请注意在 Inclavare Containers 开发 docker 映像启动的开发容器中运行下面列出的命令。

  1. 下载最新的 Inclavare Containers 源代码
mkdir -p " $WORKSPACE "
 cd  " $WORKSPACE " 
git clone https://github.com/alibaba/inclavare-containers
  1. 构建 Inclavare 容器
cd inclavare-containers
 #构建 rune、shim-rune、epm、sgx-tools、enclave-tls、shelter 和 inclavared 
make

安装

在您的系统上构建 Inclavare Containers 后,您可以使用以下命令在您的系统上安装 Inclavare Containers。

须藤制作安装

{rune,shim-rune,epm,sgx-tools,shelter,inclavared}将安装到/usr/local/bin/{rune,containerd-shim-rune-v2,epm,sgx-tools,shelter,inclavared}您的系统上。Enclave-TLS SDK 将安装到/opt/enclave-tls. {enclave-tls-server,enclave-tls-client}将安装到/usr/share/enclave-tls/samples.

如果您不想从最新的源代码构建和安装 Inclavare Containers。我们还提供 RPM/DEB 存储库来帮助您快速安装 Inclavare Containers。请首先查看有关如何配置存储库步骤。然后您可以运行以下命令在您的系统上安装 Inclavare Containers。

在 CentOS 8.2 上

sudo yum install rune shim-rune epm sgx-tools enclave-tls 避难所 inclavared

在 Ubuntu 18.04 服务器上

sudo apt-get install rune shim-rune epm sgx-tools enclave-tls shelter inclavared

整合

Inclavare Containers 可以与 dockerd、containerd 和pouchd 集成

前者的目标是使用 docker 来部署 Inclavare Containers。具体来说,需要构建容器的图像时安装的首选聚集地运行,然后通过启动飞地运行rune飞地运行特定的PAL

后者的目标是使用 K8s 来部署 Inclavare Containers。在这种情况下,shim-runerune可以组成一个飞地集装箱堆,所以飞地运行时不需要和建设集装箱图像时,有相同的经历与普通的容器提供安装。

码头工人

rune在 dockerd 配置文件中添加相关配置,例如/etc/docker/daemon.json,在您的系统上。

{
        "runtimes": {
                "rune": {
                        "path": "/usr/local/bin/rune",
                        "runtimeArgs": []
                }
        }
}

然后在您的系统上重新启动 dockerd。

您可以检查是否rune正确启用:

docker info | grep rune

注意systemd默认没有安装,请手动启动dockerd:

dockerd -b docker0 --storage-driver=vfs &

集装箱

Inclavare Containers 被添加到containerd采用者列表中。此外,shim-rune支持containerd shim v2 API。所以你可以shim-runecontainerd配置文件中添加相关的配置,例如/etc/containerd/config.toml,在你的系统上。

        [plugins.cri.containerd]
          ...
          [plugins.cri.containerd.runtimes.rune]
            runtime_type = "io.containerd.rune.v2"

然后在您的系统上重新启动 containerd。

小袋

在 pouchd 配置文件中添加相关配置,例如/etc/pouch/config.json,在您的系统上。

  "add-runtime": {
    "rune": {
                "path": "/usr/local/bin/rune",
                "runtimeArgs": null,
                "type": "io.containerd.rune.v2"
          },
    ...
  } 

在哪里:

  • @path:指定 OCI Runtime 的路径,如rune.
  • @runtimeArgs:指定pouchd运行时的参数,如--platform--network
  • @type:从以下候选中指定填充模板:
  • io.containerd.rune.v2:对应shim-rune
  • io.containerd.runtime.v1.linux:对应containerd-shim
  • io.containerd.runc.v1:对应containerd-shim-runc-v1

然后在您的系统上重新启动 pouchd。

您可以检查是否rune正确启用:

pouch info | grep rune

部署

Inclavare Containers 可以与 Occlum LibOS 和 WebAssembly Micro Runtime (WAMR) 一起部署。

Occlum LibOS

请参考本指南运行Occlumrune和泊坞窗。

请参考本指南在 Kubernetes 集群中部署 enclave 容器。目前提供了基于OpenJDK 11DragonwellGolang 的Hello-world 应用镜像和 Web 应用镜像。这些图像不包含 enclave 运行时。它们仅用于使用 containerd 进行部署。

请参阅本指南以使用pouchd.

WebAssembly 微运行时 (WAMR)

请参考本指南运行WAMRrune

提供了 WebAssembly Micro Runtime (WAMR) 应用程序映像。WAMR 镜像包含 enclave 运行时,因为它不适应 shim-rune 并使用离云签名。它仅用于与 dockerd 的部署。

相关文章
|
1月前
|
运维 Cloud Native 云计算
云原生技术:探索未来计算的无限可能
【10月更文挑战第8天】 云原生技术,作为云计算领域的一次革新性突破,正引领着企业数字化转型的新浪潮。它不仅重塑了应用的构建、部署和运行方式,还通过极致的弹性、敏捷性和可扩展性,解锁了未来计算的无限潜力。本文将深入浅出地解析云原生技术的核心理念、关键技术组件及其在不同行业中的实际应用案例,展现其如何赋能业务创新,加速企业的云化之旅。
55 7
|
2月前
|
弹性计算 Cloud Native Serverless
云原生应用示例:智能物流管理系统
在电商行业的快速发展中,某企业借助阿里云服务构建了一个云原生智能物流管理系统。此系统基于微服务架构,利用ECS、Kubernetes、ESS及RDS等服务来支撑其核心功能,并采用Serverless函数计算FC处理前端需求,配合消息队列MQ确保通信顺畅。ARMS的应用实现了性能监测与故障快速响应。同时,通过PAI分析数据以提高物流效率,OSS与CDN则优化了文件存储与全球访问速度。此外,系统还整合了Docker及GitLab CI/CD以支持快速迭代,并通过WAF、SLS等工具保障了安全性和合规性,整体上提供了高效、智能且低成本的物流解决方案。
|
29天前
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。
|
2月前
|
Cloud Native Devops 持续交付
探索云原生架构:构建高效、灵活和可扩展的系统
本文将深入探讨云原生架构的核心概念、主要技术以及其带来的优势。我们将从云原生的定义开始,了解其设计理念和技术原则;接着分析容器化、微服务等关键技术在云原生中的应用;最后总结云原生架构如何助力企业实现数字化转型,提升业务敏捷性和创新能力。通过这篇文章,读者可以全面了解云原生架构的价值和应用前景。
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
203 3
|
3月前
|
运维 安全 Cloud Native
核心系统转型问题之保障云原生分布式转型中的基础设施和应用层面如何解决
核心系统转型问题之保障云原生分布式转型中的基础设施和应用层面如何解决
|
3月前
|
监控 Cloud Native 容灾
核心系统转型问题之API网关在云原生分布式核心系统中的功能如何解决
核心系统转型问题之API网关在云原生分布式核心系统中的功能如何解决
|
3月前
|
Cloud Native 安全 中间件
核心系统转型问题之云原生架构下的基础资源设施应重点考虑什么方面
核心系统转型问题之云原生架构下的基础资源设施应重点考虑什么方面
|
3月前
|
运维 Cloud Native 安全
核心系统转型问题之确保核心系统云原生分布式转型的安全可靠性如何解决
核心系统转型问题之确保核心系统云原生分布式转型的安全可靠性如何解决
|
3月前
|
弹性计算 Cloud Native Windows
核心系统转型问题之核心系统需要转型到云原生分布式架构的原因如何解决
核心系统转型问题之核心系统需要转型到云原生分布式架构的原因如何解决

热门文章

最新文章