Skip to content

Commit 186ee0d

Browse files
m1ghtym03u13r
andauthored
Apply suggestions from code review
Co-authored-by: 3u13r <[email protected]>
1 parent b7f9724 commit 186ee0d

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

dev-docs/user-manual.md

+10-9
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,21 @@ It currently targets the [CoCo preview on AKS](https://learn.microsoft.com/en-us
1111
## The Contrast Coordinator
1212

1313
The Contrast Coordinator is the central remote attestation service of a Contrast deployment.
14-
It runs itself inside a confidential container inside your cluster.
15-
Which gives essential properties. The Coordinator can be verified via remote attestation, and a Contrast deployment is self-contained.
14+
It runs inside a confidential container inside your cluster.
15+
The Coordinator can be verified via remote attestation, and a Contrast deployment is self-contained.
1616
The Coordinator is configured with a *manifest*, a configuration file containing the reference attestation values of your deployment.
17-
It ensures that your app's topology adheres to your specified manifest by verifying the identity and integrity of all your pods.
17+
It ensures that your deployment's topology adheres to your specified manifest by verifying the identity and integrity of all your pods.
1818
The Coordinator is also a certificate authority and issues certificates for your workload pods during the attestation procedure.
1919
Your workload pods can establish secure, encrypted communication channels between themselves based on these certificates and the Coordinator as the root CA.
2020
As your app needs to scale, the Coordinator transparently verifies new instances and then provides them with their certificates to join the deployment.
2121

2222
To verify your deployment, the Coordinator's remote attestation statement combined with the manifest offers a concise single remote attestation statement for your entire deployment.
23-
A third party can use this to verify the integrity of your distributed app, making it easier to assure stakeholders of your app's security.
23+
A third party can use this to verify the integrity of your distributed app, making it easy to assure stakeholders of your app's identity and integrity.
2424

2525
## The Manifest
2626

2727
The manifest is the configuration file for the Coordinator, defining your confidential deployment.
28+
It is automatically generated from your deployment by the Contrast CLI.
2829
It currently consists of the following parts:
2930

3031
* *Policies*: The identities of your Pods, represented by the hashes of their respective runtime policies.
@@ -34,20 +35,20 @@ It currently consists of the following parts:
3435
## Runtime Policies
3536

3637
Runtime Policies are a mechanism to enable the use of the (untrusted) Kubernetes API for orchestration while ensuring the confidentiality and integrity of your confidential containers.
37-
Essentially, they allow us to enforce the integrity of your containers' runtime environment as defined in your deployment files.
38+
They allow us to enforce the integrity of your containers' runtime environment as defined in your deployment files.
3839
The runtime policy mechanism is based on the Open Policy Agent (OPA) and translates the Kubernetes deployment YAMLs into OPA's Rego policy language.
39-
The Kata Agent inside the confidential micro-VM then enforces the policy by only serving permitted requests to your container.
40+
The Kata Agent inside the confidential micro-VM then enforces the policy by only acting on permitted requests.
4041
The Contrast CLI provides the tooling for automatically translating Kubernetes deployment YAMLs into OPA's Rego policy language.
4142

42-
For the interested reader, the trust chain goes as follows:
43+
The trust chain goes as follows:
4344

44-
1. The CLI generates a policy and attaches it to the pod definition.
45+
1. The Contrast CLI generates a policy and attaches it to the pod definition.
4546
2. Kubernetes schedules the pod on a node with kata-cc-isolation runtime.
4647
3. Containerd takes the node, starts the Kata Shim and creates the pod sandbox.
4748
4. The Kata runtime starts a CVM with the policy's digest as `HOSTDATA`.
4849
5. The Kata runtime sets the policy using the `SetPolicy` method.
4950
6. The Kata agent verifies that the incoming policy's digest matches `HOSTDATA`.
50-
7. The CLI sets a manifest at the Contrast Coordinator, including a list of permitted policies.
51+
7. The CLI sets a manifest in the Contrast Coordinator, including a list of permitted policies.
5152
8. The Contrast Coordinator verifies that the started pod has a permitted policy hash in its `HOSTDATA` field.
5253

5354
After the last step, we know that the policy has not been tampered with and, thus, that the workload is as intended.

0 commit comments

Comments
 (0)