Giter Club home page Giter Club logo

acon's Introduction

ACON - Attested Containers

ACON is an open source architecture and solution to create and manage small, purpose-built, Intel TDX-protected virtual machines (called Trust Domains, or TDs for short) for running container-like workloads. ACON aims at maximizing the security benefits of Intel TDX while retaining compatibility with existing applications/tools. It is designed and optimized for cloud native use cases (e.g., containers and FaaS (Function as a Service), etc.).

Goals

ACON is a container runtime.

From security perspective, ACON is designed to have

  • Minimal TCB size.
  • Minimal attack surface.
  • Hardward based attestability of workloads and their runtime environment.

From functional perspective, ACON is designed to be

  • Able to run existing (containerized) applications with minimal (or even no) changes.
  • Compatible with existing compiler toolchains, libraries, and debugging tools - for easy development and debugging of new applications.
  • Compatible with existing virtualization tools and container orchestration infrastructures - for easy integration with existing CSP (Cloud Service Provider) infrastructures.
  • Optimized for containers and FaaS usages where an application may be comprised of components from different/independent vendors.

Architecture Overview

The diagram blow depicts ACON's architecture at a highlevel, with its key components (highlighted in yellow) and unique (comparing to OCI compliant runtimes) features (highlighted in blue).

Overview

In a nutshell, ACON runs containers in a small purpose-built TD (referred to as the ACON TD, or aTD). Below an introduction is provided to the numbered items in the diagram above.

  1. ACON Containers (referred to as Containers in italics hereon) are namespace-separated Linux processes similar to "containers" as defined in OCI Runtime spec.
  2. Containers are launched from ACON Images (referred to as just Images hereon), which are similar to OCI Images but with new elements designed specifically for cloud confidential compute usages.
    • Images are always digitally signed - This associates an Image with its vendor cryptographically, and is necessary to support Vendor FS Layers (described below).
    • ๐ŸงฉVendor FS layer refers to the mechanism that allows the vendor of an FS (File System) layer to update the layer on behalf of the Image owner. In the case of FaaS for example, this allows a CSP to update its FaaS framework on behalf of the function author. Details are available in the ACON Image spec.
    • ๐Ÿ”Launch Policy (referred to as Policy for short hereon) is a part of an Image (hence is digitally signed) and governs aTD sharing - i.e., 2 Images can be loaded into the same aTD if and only if their Policies are mutually acceptable. In practice, this is usually used by Image authors for specifying dependencies among Images. Details are available in the ACON Image spec.
  3. aconcli is a command line utility. It is used to
    • Convert OCI images into Images and store them into a directory of a specific structure, called an ACON Image Repo (or just Repo for short).
    • Sign Images in a Repo.
    • Start aTDs.
    • Load Images from a Repo into an aTD and launch them as Containers (by sending commands to acond).
  4. acond accepts Images from aconcli via its gRPC interface (over VSOCK or TCP). Then, it measures each Image (using ๐Ÿ“œRTMRs) and launches them as Containers. acond is launched as the init process (PID 1) at boot and is the only privileged process (in the aTD) in production.
    • ๐Ÿ“œRTMR (RunTime Measurement Register) is a TDX specific feature - As of TDX v1.0, every TD is equipped with 4 RTMRs (namely, RTMR0..3) of 384 bits each. An RTMR cannot be set to any specific value but can be only extended by software (i.e., it works in the same way as a PCR does in a TPM).
  5. The Guest Kernel is an Intel TDX-enlightened Linux kernel specifically configured for minimal attack surface and TCB.
  6. Containers may communicate with the outside world through TCP or VSOCK. And in the latter case a proxy may be necessary to bridge VSOCK and other protocols to allow communication with remote hosts.

Getting Started

See README.md files of acond and aconcli for build instructions.

doc/TDGuest.md details how to build TD guest kernel and initrd images.

License

This project is released under Apache-2.0.

acon's People

Contributors

binxing avatar xxu36 avatar billionairiam avatar xiangquanliu avatar dcmiddle avatar pdxjohnny avatar rdower avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.