Skip to content
This repository has been archived by the owner on Apr 15, 2024. It is now read-only.

Commit

Permalink
README.md: refine readme
Browse files Browse the repository at this point in the history
1. Move design section to wiki
2. Add recommended configuration in installation section
3. Other small adjustment

Signed-off-by: Hao, Ruomeng <ruomeng.hao@intel.com>
  • Loading branch information
ruomengh committed Jan 30, 2024
1 parent 6b6795a commit ff490ec
Showing 1 changed file with 44 additions and 53 deletions.
97 changes: 44 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,107 +11,90 @@

## 1. Introduction

Confidential Computing technology like Intel TDX provides isolated encryption runtime
Confidential Computing technology like Intel® TDX provides isolated encryption runtime
environment to protect data-in-use based on hardware Trusted Execution Environment (TEE).
It requires a full chain integrity measurement on the launch-time or runtime environment
to guarantee "consistently behavior in expected way" (defined by
[Trusted Computing](https://en.wikipedia.org/wiki/Trusted_Computing)) of confidential
to guarantee "consistent behavior in an expected way" of confidential
computing environment for tenant's zero-trust use case.

This project is designed to provide cloud native measurement for the full measurement
chain from TEE TCB -> Firmware TCB -> Guest OS TCB -> Cloud Native TCB as follows:

![](/docs/cc-full-meaurement-chain.png)

_NOTE: Different with traditional trusted computing on non-confidential environment,
_NOTE: Different from traditional trusted computing on non-confidential environment,
the measurement chain is not only started with Guest's `SRTM` (Static Root Of Measurement)
but also need include the TEE TCB, because the CC VM environment is created by TEE
but it also needs to include the TEE TCB, because the CC VM environment is created by TEE
via `DRTM` (Dynamic Root of Measurement) like Intel TXT on the host._

From the perspective of tenant's workload, `CCNP` will expose the [CC Trusted API](https://github.com/cc-api/cc-trusted-api)
as the unified interfaces across diverse trusted foundations like `RTMR+TDMR+CCEL`
and `PCR+TPM2`. The definitions and structures follows standard specifications like
[TCG PC Client Platform TPM Profile Specification](https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/),
[TCG PC Client Platform Firmware Profile Specification](https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/)
From the perspective of a tenant's workload, `CCNP` will expose the [CC Trusted API](https://github.com/cc-api/cc-trusted-api)
as the unified interfaces across diverse trusted foundations like `RTMR+MRTD+CCEL`
and `PCR+TPM2`.

![](/docs/ccnp-architecture-high-level.png)

This project should also be able deployed on [diverse cloud native PaaS frameworks](https://www.redhat.com/en/blog/confidential-computing-use-cases) like confidential cluster, container, `kubevirt` etc.
An example of landing architecture on confidential cluster is as follows, please
refer [detail deployment steps](/deployment/README.md)

![](/docs/ccnp-landing-confidential-cluster.png)

Finally, the full trusted chain will be measured into CC report as follows using
TDX as example:
Finally, the full trusted chain will be measured into a CC report as follows using
TDX as an example:

![](/docs/cc-full-measurement-tdreport.png)

_NOTE:_

- The measurement of TEE, Guest's boot, OS is per CC VM, but cluster/container measurement
might be per cluster/namespace/container for cloud native architecture.
- Please refer structure [`TDREPORT`](https://github.com/tianocore/edk2/blob/master/MdePkg/Include/IndustryStandard/Tdx.h)
- Please refer to structure [`TDREPORT`](https://github.com/tianocore/edk2/blob/master/MdePkg/Include/IndustryStandard/Tdx.h)
- The CCNP project collects container level primitives by implementing unified APIs defined in [CC Trusted API](https://github.com/cc-api/cc-trusted-api). The project will be moved to [CC Trusted API](https://github.com/cc-api/cc-trusted-api) in the near future.


## 2. Design
## 2. Installation

`CCNP` includes several micro-services as BaaS(Backend as a Service) to provides
cloud native measurement, then exposes `CC trusted API` via cloud native SDK:
### 2.1 Configuration

- Services are designed to hide the complexity of different TEE platforms and provides
common interfaces and scalability for cloud-native environment to address the fetching
the fetching of quote, measurement and event log.
CCNP collects primitives of confidential cloud native environments running in confidential VMs, such as Intel® TDX guest. You can setup an Intel® TDX enlightened host and then boot a TD guest on it. The feasible configurations are as below.

- SDK is provided to simplify the use of the service interface for development,
it covers communication to the service and parses the results from the services.
With such SDK, users can perform related actions with one simple API call.
The Platform certificate caching service (PCCS) is used to retrieve and cache PCK certificates locally to your cluster from Intel's Platform Certificate Service. This is necessary to attest the authenticity of a TD guest before a workload is started in it. The Quote Generate Service (QGS) runs on the host in a specialized enclave to generate and use TD quotes. For convenient setup these can run inside a Docker container. Learn more at https://download.01.org/intel-sgx/sgx-dcap/1.17/linux/docs/Intel_TDX_DCAP_Quoting_Library_API.pdf.

- A `CCNP` device plugin is provided as the dependency for services such as Quote
Server and Measurement Server. It will help with device mount and folder injection
within the service.
The PCCS and QGS are used to get Quote for a TD guest. They need to be installed on TDX host.

SDK PyPI package can be found [here](https://pypi.org/project/ccnp/). Please check our [documentation](https://intel.github.io/confidential-cloud-native-primitives/) for more details.
| CPU | Host OS | Host packages | Guest OS | Guest packages | DCAP packages |
|---|---|---|---|---|---|
| Intel® Emerald Rapids | Ubuntu 22.04| Build packages referring to [here](https://github.com/intel/tdx-tools/tree/tdx-1.5/build/ubuntu-22.04) | Ubuntu 22.04 | Build packages referring to [here](https://github.com/intel/tdx-tools/tree/tdx-1.5/build/ubuntu-22.04) | [here](https://download.01.org/intel-sgx/sgx-dcap/1.19/linux/distro/ubuntu22.04-server/)
| Intel® Emerald Rapids | Ubuntu 23.10 | Setup TDX host referring to [here](https://github.com/canonical/tdx) | Ubuntu 22.04 | Build packages referring to [here](https://github.com/intel/tdx-tools/tree/tdx-1.5/build/ubuntu-22.04)| Setup containerized [PCCS](https://github.com/intel/confidential-cloud-native-primitives/tree/main/container/pccs) and [QGS](https://github.com/intel/confidential-cloud-native-primitives/tree/main/container/qgs) on the host |

![](docs/ccnp_arch.png)
_NOTE: the following installation will be performed in a confidential VM. Make sure you have confidential VM booted before moving forward._

*Note: For Intel TDX, it bases on Linux TDX Software Stack at [tdx-tools](https://github.com/intel/tdx-tools), the corresponding white
paper is at [Whitepaper: Linux* Stacks for Intel® Trust Domain Extension 1.0](https://www.intel.com/content/www/us/en/content-details/779108/whitepaper-linux-stacks-for-intel-trust-domain-extension-1-0.html).*
### 2.2 Deploy CCNP Services

It supports to deploy CCNP services as DaemonSets in Kubernetes cluster or docker containers on a single confidential VM. Please refer to below guides for different deployment environments.

## 3. Installation
- [CCNP deployment guide - K8S](deployment/README.md): on confidential VM node of Kubernetes cluster.

Here provides the description on the installation steps for the services and the
SDK.
- [CCNP deployment guide - Docker](deployment/README.md): on confidential VM using docker compose.

[CCNP deployment guide](deployment/README.md) introduces how to deploy CCNP services,
which also includes an example of running CCNP example pod to get cloud native primitives
using CCNP SDK.
This project should also be able deployed on [diverse cloud native PaaS frameworks](https://www.redhat.com/en/blog/confidential-computing-use-cases) like confidential cluster, `kubevirt` etc in future.
An example of landing architecture on confidential cluster is as follows.

You can also use the following guides as alternatives of installing each service
separately.
![](/docs/ccnp-landing-confidential-cluster.png)

- Quote Server: [Installation guide](service/quote-server/README.md)
- Measurement Server: [Installation guide](service/measurement-server/README.md)
- Event Log Server: [Installation guide](service/eventlog-server/README.md)
### 2.3 Install SDK

For SDK, user can simply install from PyPI using command:
CCNP SDK can be used by a workload for cloud native primitives collecting. It needs to be installed within the workload container image and called whenever the primitives are required. The SDK can be installed from PyPI using the command:

```
pip install ccnp
```

Or to install from source code with the following command:
Alternatively, the CCNP can be installed from source code with the following command. Make sure to clone the repository into your confidential VM and then run the following command:

```
cd sdk/python3
pip install -e .
```

For the ccnp device plugin, user can find the installation guide under the 'Installation'
section [here](device-plugin/ccnp-device-plugin/README.md)
### 2.4 Install CCNP Device Plugin
Follow the CCNP device plugin [Installation Guide](device-plugin/ccnp-device-plugin/README.md)

## 4. Contributing
## 3. Contributing

This project welcomes contributions and suggestions. Most contributions require
you to agree to a Contributor License Agreement (CLA) declaring that you have the
Expand All @@ -126,14 +109,22 @@ once across all repos using our CLA.
See [CONTRIBUTING.md](CONTRIBUTING.md) for details on building, testing, and contributing
to these libraries.

## 5. Provide Feedback
## 4. Provide Feedback

If you encounter any bugs or have suggestions, please file an issue in the Issues
section of the project.


_Note: This is pre-production software and, as such, it may be substantially modified as updated versions are made available._

## 5. Reference

[Trusted Computing](https://en.wikipedia.org/wiki/Trusted_Computing)

[TCG PC Client Platform TPM Profile Specification](https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/)

[TCG PC Client Platform Firmware Profile Specification](https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/)

## 6. Contributors

<!-- spell-checker: disable -->
Expand Down Expand Up @@ -180,7 +171,7 @@ _Note: This is pre-production software and, as such, it may be substantially mod
<a href="https://github.com/HaokunX-intel">
<img src="https://avatars.githubusercontent.com/u/108452001?v=4" width="100;" alt="HaokunX-intel"/>
<br />
<sub><b>Null</b></sub>
<sub><b>Haokun Xing</b></sub>
</a>
</td></tr>
<tr>
Expand Down

0 comments on commit ff490ec

Please sign in to comment.