云原生机密计算和 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 的部署。

相关文章
|
2月前
|
Cloud Native 测试技术 数据安全/隐私保护
云原生之使用Docker部署Teedy轻量级文档管理系统
【5月更文挑战第8天】云原生之使用Docker部署Teedy轻量级文档管理系统
100 1
|
12天前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
216 2
|
14天前
|
运维 Cloud Native 云计算
云原生架构的演进:从微服务到无服务器计算
【6月更文挑战第30天】 在数字化转型和技术创新的浪潮中,云原生技术以其灵活性、可扩展性和成本效益成为企业IT战略的核心。本文将探索云原生架构的关键概念,从早期的微服务架构到现代的无服务器计算模型,揭示这一演变如何推动企业更高效地开发、部署和管理应用程序。我们将深入讨论这些技术背后的原理,以及它们如何帮助企业实现敏捷性、弹性和自动化运维。
|
22天前
|
运维 Cloud Native 开发者
云原生技术演进:从微服务到无服务器计算
【6月更文挑战第22天】 云原生技术如同一场持续的演化之旅,它不断重塑着应用的开发与部署方式。本文将探讨云原生技术如何从微服务架构演变至无服务器计算,以及这一转变对开发者和运维人员带来的深远影响。通过分析容器化、持续集成/持续部署(CI/CD)、微服务治理等关键概念,我们将揭示云原生技术如何在提高应用的可伸缩性、灵活性和可靠性的同时,也提出了新的挑战和机遇。
|
25天前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
|
2月前
|
存储 Cloud Native 对象存储
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
AutoMQ[1] 是新一代基于共享存储架构实现的云原生 Kafka。得益于其存算分离的共享存储架构,通过和阿里云合作,深度使用阿里云可靠、先进的云服务如对象存储OSS、块存储 ESSD、弹性伸缩ESS以及抢占式实例实现了相比 Apache Kafka 10倍的成本优势并且提供了自动弹性的能力。
84071 25
AutoMQ:如何基于阿里云计算与存储产品实现云原生架构升级
|
16天前
|
Cloud Native 安全 开发者
云原生架构的演进与实践:从微服务到无服务器计算
本文深入探讨了云原生技术的最新进展,特别关注微服务和无服务器计算模型。通过分析相关研究数据和行业案例,文章揭示了云原生架构如何推动现代应用开发,提升运维效率,并实现资源的最优化配置。文中详细讨论了云原生生态系统中的关键组成部分,包括容器化、自动化管理工具和服务网格,以及它们如何共同促进敏捷性和可扩展性。此外,文章还分析了云原生安全策略的重要性,以及如何在保障安全的同时,保持系统的灵活性和高效性。
|
1月前
|
运维 Cloud Native 云计算
未来云计算:构建下一代云原生生态系统
在数字化时代,云计算已成为企业和组织转型的关键驱动力。本文探讨了未来云计算发展的趋势和挑战,提出了构建下一代云原生生态系统的重要性和关键要素,以应对日益复杂的技术和业务需求。通过引入容器化、微服务架构、自动化运维等新技术,未来云原生将实现更高效、灵活和可靠的云计算应用。
|
2月前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键角色移动应用开发的未来:跨平台框架与原生系统的融合
【5月更文挑战第31天】 随着企业加速其数字化转型的步伐,云原生架构已成为推动创新和实现敏捷性的关键技术。本文将深入探讨云原生技术的核心概念、优势以及如何在组织中实施这些技术以提高效率和竞争力。通过分析微服务、容器化、持续集成和持续部署(CI/CD)以及DevOps文化等关键组成部分,我们将揭示如何利用云原生架构来优化资源使用、加快产品上市时间并确保系统的可扩展性和可靠性。
|
2月前
|
机器学习/深度学习 传感器 自动驾驶
基于深度学习的图像识别技术在自动驾驶系统中的应用构建高效云原生应用:云平台的选择与实践
【5月更文挑战第31天】 随着人工智能技术的飞速发展,深度学习已经成为推动计算机视觉进步的关键力量。特别是在图像识别领域,通过模仿人脑处理信息的方式,深度学习模型能够从大量数据中学习并识别复杂的图像模式。本文将探讨深度学习技术在自动驾驶系统中图像识别方面的应用,重点分析卷积神经网络(CNN)的结构与优化策略,以及如何通过这些技术提高自动驾驶车辆的环境感知能力。此外,文章还将讨论目前所面临的挑战和未来的研究方向。