This repository includes tools and components for confidential container images.
Attestation Agent: An agent for facilitating attestation protocols. Can be built as a library to run in a process-based enclave or built as a process that runs inside a confidential vm.
image-rs: Rust implementation of the container image management library.
ocicrypt-rs: Rust implementation of the OCI image encryption library.
api-server-rest](api-server-rest): CoCo Restful API server.
CoCo guest components use lightweight ttRPC for internal communication to reduce the memory footprint and dependency. But many internal services also needed by containers like get_resource, get_evidence and get_token, we export these services with restful API, now CoCo containers can easy access these API with http client. Here are some examples, for detail info, please refer rest API
$ ./api-server-rest --features=all
Starting API server on 127.0.0.1:8006
API Server listening on http://127.0.0.1:8006
Attestation Agent (AA for short) is a service function set for attestation procedure
in Confidential Containers. It provides kinds of service APIs that need to make
requests to the Relying Party (Key Broker Service) in Confidential Containers,
and performs an attestation and establishes connection between the Key Broker Client (KBC)
and corresponding KBS, so as to obtain the trusted services or resources of KBS.
The main body of AA is a rust library crate, which contains KBC modules used to communicate
with various KBS. In addition, this project also provides a gRPC service application,
which allows callers to call the services provided by AA through gRPC.
Library crate
Import AA in Cargo.toml of your project with specific KBC(s):
attestation-agent = { git = "https://github.com/confidential-containers/guest-components", features = ["sample_kbc"] }
Note: When the version is stable, we will release AA on https://crate.io.
gRPC Application
Here are the steps of building and running gRPC application of AA:
Build
Build and install with default KBC modules:
git clone https://github.com/confidential-containers/guest-components
cd guest-components/attestation-agent
make && make install
or explicitly specify the KBS modules it contains. Taking sample_kbc as example:
make KBC=sample_kbc
Musl
To build and install with musl, just run:
make LIBC=musl && make install
Openssl support
To build and install with openssl support (which is helpful in specific machines like s390x)
make OPENSSL=1 && make install
Run
For help information, just run:
attestation-agent --help
Start AA and specify the endpoint of AA’s gRPC service:
AA provides a flexible KBC module mechanism to support different KBS protocols required to make the communication between KBC and KBS. If the KBC modules currently supported by AA cannot meet your use requirement (e.g, need to use a new KBS protocol), you can write a new KBC module complying with the KBC development GUIDE. Welcome to contribute new KBC module to this project!