You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You must create the peer pods secret for OpenShift sandboxed containers. The secret stores credentials for creating the pod virtual machine (VM) image and peer pod instances.
@@ -166,18 +162,21 @@ By default, the OpenShift sandboxed containers Operator creates the secret based
166
162
```
167
163
168
164
1. Generate the RBAC content by running the following command:
169
-
165
+
170
166
```
171
167
$ az ad sp create-for-rbac --role Contributor --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID \
@@ -402,7 +401,7 @@ Create a secure route with edge TLS termination for Trustee. External ingress tr
402
401
403
402
1. Create a cc-feature-gate.yaml manifest file:
404
403
405
-
```azurecli
404
+
```
406
405
apiVersion: v1
407
406
kind: ConfigMap
408
407
metadata:
@@ -533,8 +532,7 @@ Create a secure route with edge TLS termination for Trustee. External ingress tr
533
532
534
533
$ oc get runtimeclass
535
534
536
-
Example output:
537
-
535
+
**Example output**
538
536
```
539
537
NAME HANDLER AGE
540
538
kata-remote kata-remote 152m
@@ -561,7 +559,7 @@ Create a secure route with edge TLS termination for Trustee. External ingress tr
561
559
562
560
### Create the Trustee config map
563
561
564
-
1. Create a kbs-config-cm.yaml manifest file:
562
+
1. Create a `kbs-config-cm.yaml` manifest file:
565
563
566
564
```
567
565
apiVersion: v1
@@ -608,8 +606,298 @@ Create a secure route with edge TLS termination for Trustee. External ingress tr
608
606
609
607
610
608
609
+
### Configure attestation policies
610
+
611
+
You can configure the following attestation policy settings:
612
+
613
+
**Reference values**
614
+
615
+
You can configure reference values for the Reference Value Provider Service (RVPS) by specifying the trusted digests of your hardware platform.
616
+
617
+
The client collects measurements from the running software, the Trusted Execution Environment (TEE) hardware and firmware and it submits a quote with the claims to the Attestation Server. These measurements must match the trusted digests registered to the Trustee. This process ensures that the confidential VM (CVM) is running the expected software stack and has not been tampered with.
618
+
619
+
**Secrets for clients**
620
+
621
+
You must create one or more secrets to share with attested clients.
622
+
623
+
**Resource access policy**
624
+
625
+
You must configure a policy for the Trustee policy engine to determine which resources to access.
626
+
627
+
Do not confuse the Trustee policy engine with the Attestation Service policy engine, which determines the validity of TEE evidence.
628
+
629
+
**Attestation policy**
630
+
631
+
Optional: You can overwrite the default attestation policy by creating your own attestation policy.
632
+
Provisioning Certificate Caching Service for TDX
633
+
634
+
If your TEE is Intel Trust Domain Extensions (TDX), you must configure the Provisioning Certificate Caching Service (PCCS). The PCCS retrieves Provisioning Certification Key (PCK) certificates and caches them in a local database.
635
+
636
+
1. Create an `rvps-configmap.yaml` manifest file:
637
+
638
+
```
639
+
apiVersion: v1
640
+
kind: ConfigMap
641
+
metadata:
642
+
name: rvps-reference-values
643
+
namespace: trustee-operator-system
644
+
data:
645
+
reference-values.json: |
646
+
[
647
+
]
648
+
```
649
+
650
+
**Notes:**
651
+
652
+
For `reference-values.json` specify the trusted digests for your hardware platform if required. Otherwise, leave it empty.
653
+
654
+
1. Create the RVPS config map by running the following command:
655
+
656
+
`$ oc apply -f rvps-configmap.yaml`
657
+
658
+
1. Create one or more secrets to share with attested clients according to the following example:
In this example, the `kbsres1` secret has two entries (key1, key2), which the Trustee clients retrieve. You can add more secrets according to your requirements.
666
+
667
+
1. Create a resourcepolicy-configmap.yaml manifest file:
668
+
669
+
```
670
+
apiVersion: v1
671
+
kind: ConfigMap
672
+
metadata:
673
+
name: resource-policy
674
+
namespace: trustee-operator-system
675
+
data:
676
+
policy.rego:
677
+
package policy
678
+
default allow = false
679
+
allow {
680
+
input["tee"] != "sample"
681
+
}
682
+
```
683
+
**Notes:**
684
+
685
+
- The name of the resource policy, `policy.rego`, must match the resource policy defined in the Trustee config map.
686
+
- The resource package policy follows the Open Policy Agent specification. This example allows the retrieval of all resources when the TEE is not the sample attester.
687
+
688
+
1. Create the resource policy config map by running the following command:
689
+
690
+
`$ oc apply -f resourcepolicy-configmap.yaml`
691
+
692
+
1. Optional: Create an attestation-policy.yaml manifest file according to the following example:
For `package policy`, The attestation policy follows the Open Policy Agent specification. In this example, the attestation policy compares the claims provided in the attestation report to the reference values registered in the RVPS database. The attestation process is successful only if all the values match.
750
+
751
+
1. Create the attestation policy config map by running the following command:
752
+
753
+
`$ oc apply -f attestation-policy.yaml`
754
+
755
+
1. If your TEE is Intel TDX, create a tdx-config.yaml manifest file:
1. Set the POD_NAME environmental variable by running the following command:
828
+
829
+
`$ POD_NAME=$(oc get pods -l app=kbs -o jsonpath='{.items[0].metadata.name}' -n trustee-operator-system)`
830
+
831
+
1. Check the pod logs by running the following command:
832
+
833
+
`$ oc logs -n trustee-operator-system $POD_NAME`
834
+
835
+
**Example output**
836
+
```
837
+
[2024-05-30T13:44:24Z INFO kbs] Using config file /etc/kbs-config/kbs-config.json
838
+
[2024-05-30T13:44:24Z WARN attestation_service::rvps] No RVPS address provided and will launch a built-in rvps
839
+
[2024-05-30T13:44:24Z INFO attestation_service::token::simple] No Token Signer key in config file, create an ephemeral key and without CA pubkey cert
840
+
[2024-05-30T13:44:24Z INFO api_server] Starting HTTPS server at [0.0.0.0:8080]
841
+
[2024-05-30T13:44:24Z INFO actix_server::builder] starting 12 workers
842
+
[2024-05-30T13:44:24Z INFO actix_server::server] Tokio runtime found; starting in existing Tokio runtime
843
+
```
844
+
845
+
846
+
### Verify the attestation process
847
+
848
+
You can verify the attestation process by creating a test pod and retrieving its secret.
849
+
850
+
Important: This procedure is an example to verify that attestation is working. Do not write sensitive data to standard I/O because the data can be captured by using a memory dump. Only data written to memory is encrypted.
851
+
852
+
By default, an agent side policy embedded in the pod VM image disables the exec and log APIs for a Confidential Containers pod. This policy ensures that sensitive data is not written to standard I/O.
853
+
854
+
In a test scenario, you can override the restriction at runtime by adding a policy annotation to the pod. For Technology Preview, runtime policy annotations are not verified by remote attestation.
0 commit comments