Skip to content

Commit 251b366

Browse files
authored
Merge pull request #224123 from jl-pm/patch-5
AKS question addition
2 parents fdf34ec + 65253e6 commit 251b366

File tree

1 file changed

+82
-6
lines changed

1 file changed

+82
-6
lines changed

articles/security/fundamentals/trusted-hardware-identity-management.md

Lines changed: 82 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ ms.date: 10/24/2022
1111

1212
# Trusted Hardware Identity Management
1313

14-
The Trusted Hardware Identity Management (THIM) service handles cache management of certificates for all Trusted Execution Environments (TEE) residing in Azure and provides trusted computing base (TCB) information to enforce a minimum baseline for attestation solutions.
14+
The Trusted Hardware Identity Management (THIM) service handles cache management of certificates for all trusted execution environments (TEE) residing in Azure and provides trusted computing base (TCB) information to enforce a minimum baseline for attestation solutions.
1515

1616
## THIM & attestation interactions
1717

@@ -23,7 +23,7 @@ THIM defines the Azure security baseline for Azure Confidential computing (ACC)
2323

2424
### The "next update" date of the Azure-internal caching service API, used by Microsoft Azure Attestation, seems to be out of date. Is it still in operation and can it be used?
2525

26-
The "tcbinfo" field contains the TCB information. The THIM service by default provides an older tcbinfo -- updating to the latest tcbinfo from Intel would cause attestation failures for those customers who haven't migrated to the latest Intel SDK, and could results in outages.
26+
The "tcbinfo" field contains the TCB information. The THIM service by default provides an older tcbinfo--updating to the latest tcbinfo from Intel would cause attestation failures for those customers who haven't migrated to the latest Intel SDK, and could results in outages.
2727

2828
Open Enclave SDK and Microsoft Azure Attestation don't look at nextUpdate date, however, and will pass attestation.
2929

@@ -39,19 +39,19 @@ Azure Data Center Attestation Primitives (DCAP), a replacement for Intel Quote P
3939

4040
### Why are there different baselines between THIM and Intel?
4141

42-
THIM and Intel provide different baseline levels of the trusted computing base. While Intel can be viewed as having the latest and greatest, this imposes requirements upon the consumer to ensure that all the requirements are satisfied, thus leading to a potential breakage of customers if they haven't updated to the specified requirements. THIM takes a slower approach to updating the TCB baseline to allow customers to make the necessary changes at their own pace. This approach, while does provide an older TCB baseline, ensures that customers will not break if they haven't been able to meet the requirements of the new TCB baseline. This reason is why THIM's TCB baseline is of a different version from Intel's. We're customer-focused and want to empower the customer to meet the requirements imposed by the new TCB baseline on their pace, instead of forcing them to update and causing them a disruption that would require reprioritization of their workstreams.
42+
THIM and Intel provide different baseline levels of the trusted computing base. While Intel can be viewed as having the latest and greatest, this imposes requirements upon the consumer to ensure that all the requirements are satisfied, thus leading to a potential breakage of customers if they haven't updated to the specified requirements. THIM takes a slower approach to updating the TCB baseline to allow customers to make the necessary changes at their own pace. This approach, while does provide an older TCB baseline, ensures that customers won't break if they haven't been able to meet the requirements of the new TCB baseline. This reason is why THIM's TCB baseline is of a different version from Intel's. We're customer-focused and want to empower the customer to meet the requirements imposed by the new TCB baseline on their pace, instead of forcing them to update and causing them a disruption that would require reprioritization of their workstreams.
4343

4444
THIM is also introducing a new feature that will enable customers to select their own custom baseline. This feature will allow customers to decide between the newest TCB or using an older TCB than provided by Intel, enabling customers to ensure that the TCB version to enforce is compliant with their specific configuration. This new feature will be reflected in a future iteration of the THIM documentation.
4545

4646
### With Coffeelake I could get my certificates directly from Intel PCK. Why, with Icelake, do I need to get the certificates from THIM, and what do I need to do to fetch those certificates?
4747

4848
The certificates are fetched and cached in THIM service using platform manifest and indirect registration. As a result, Key Caching Policy will be set to never store platform root keys for a given platform. Direct calls to the Intel service from inside the VM are expected to fail.
4949

50-
To retrieve the certificate, you must install the [Azure DCAP library](#what-is-the-azure-dcap-library) which replaces Intel QPL. This library directs the fetch requests to THIM service running in Azure cloud. For the downloading the latest DCAP packages, please see: [Where can I download the latest DCAP packages?](#where-can-i-download-the-latest-dcap-packages)
50+
To retrieve the certificate, you must install the [Azure DCAP library](#what-is-the-azure-dcap-library) that replaces Intel QPL. This library directs the fetch requests to THIM service running in Azure cloud. For the downloading the latest DCAP packages, see: [Where can I download the latest DCAP packages?](#where-can-i-download-the-latest-dcap-packages)
5151

5252
### How do I request collateral in a Confidential Virtual Machine (CVM)?
5353

54-
Use the following sample in a CVM guest for requesting AMD collateral that includes the VCEK certificate and certificate chain. For details on this collateral and where it originates from, see [Versioned Chip Endorsement Key (VCEK) Certificate and KDS Interface Specification](https://www.amd.com/system/files/TechDocs/57230.pdf) (from <amd.com>).
54+
Use the following sample in a CVM guest for requesting AMD collateral that includes the VCEK certificate and certificate chain. For details on this collateral and where it originates from, see [Versioned Chip Endorsement Key (VCEK) Certificate and KDS Interface Specification](https://www.amd.com/system/files/TechDocs/57230.pdf).
5555

5656
#### URI parameters
5757

@@ -75,7 +75,7 @@ curl GET "http://169.254.169.254/metadata/THIM/amd/certification" -H "Metadata:
7575
7676
| Name | Description |
7777
|--|--|
78-
| 200 OK | Lists available collateral in http body within JSON format. For details on the keys in the JSON, please see Definitions |
78+
| 200 OK | Lists available collateral in http body within JSON format. For details on the keys in the JSON, see Definitions |
7979
| Other Status Codes | Error response describing why the operation failed |
8080
8181
#### Definitions
@@ -86,6 +86,82 @@ curl GET "http://169.254.169.254/metadata/THIM/amd/certification" -H "Metadata:
8686
| tcbm | Trusted Computing Base |
8787
| certificateChain | Includes the AMD SEV Key (ASK) and AMD Root Key (ARK) certificates |
8888
89+
### How do I request AMD collateral in an Azure Kubernetes Service (AKS) Container on a Confidential Virtual Machine (CVM) node?
90+
91+
Follow the steps for requesting AMD collateral in a confidential container.
92+
1. Start by creating an AKS cluster on CVM mode or adding a CVM node pool to the existing cluster.
93+
1. Create an AKS Cluster on CVM node.
94+
1. Create a resource group in one of the CVM supported regions.
95+
```bash
96+
az group create --resource-group <RG_NAME> --location <LOCATION>
97+
```
98+
2. Create an AKS cluster with one CVM node in the resource group.
99+
```bash
100+
az aks create --name <CLUSTER_NAME> --resource-group <RG_NAME> -l <LOCATION> --node-vm-size Standard_DC4as_v5 --nodepool-name <POOL_NAME> --node-count 1
101+
```
102+
3. Configure kubectl to connect to the cluster.
103+
```bash
104+
az aks get-credentials --resource-group <RG_NAME> --name <CLUSTER_NAME>
105+
```
106+
2. Add a CVM node pool to the existing AKS cluster.
107+
```bash
108+
az aks nodepool add --cluster-name <CLUSTER_NAME> --resource-group <RG_NAME> --name <POOL_NAME > --node-vm-size Standard_DC4as_v5 --node-count 1
109+
```
110+
3. Verify the connection to your cluster using the kubectl get command. This command returns a list of the cluster nodes.
111+
```bash
112+
kubectl get nodes
113+
```
114+
The following output example shows the single node created in the previous steps. Make sure the node status is Ready:
115+
| NAME | STATUS | ROLES | AGE | VERSION |
116+
| -- | -- | -- | -- | -- |
117+
| aks-nodepool1-31718369-0 | Ready | agent | 6m44s | v1.12.8 |
118+
119+
2. Once the AKS cluster is created, create a curl.yaml file with the following content. It defines a job that runs a curl container to fetch AMD collateral from the THIM endpoint. For more information about Kubernetes Jobs, please see [Kubernetes documentation](https://kubernetes.io/docs/concepts/workloads/controllers/job/).
120+
121+
**curl.yaml**
122+
```bash
123+
apiVersion: batch/v1
124+
kind: Job
125+
metadata:
126+
name: curl
127+
spec:
128+
template:
129+
metadata:
130+
labels:
131+
app: curl
132+
spec:
133+
nodeSelector:
134+
kubernetes.azure.com/security-type: ConfidentialVM
135+
containers:
136+
- name: curlcontainer
137+
image: alpine/curl:3.14
138+
imagePullPolicy: IfNotPresent
139+
args: ["-H", "Metadata:true", "http://169.254.169.254/metadata/THIM/amd/certification"]
140+
restartPolicy: "Never"
141+
```
142+
143+
**Arguments**
144+
| Name | Type | Description |
145+
| -- | -- | -- |
146+
| Metadata | Boolean | Setting to True to allow for collateral to be returned |
147+
3. Run the job by applying the curl.yaml.
148+
```bash
149+
kubectl apply -f curl.yaml
150+
```
151+
4. Check and wait for the pod to complete its job.
152+
```bash
153+
kubectl get pods
154+
```
155+
156+
**Example Response**
157+
| Name | Ready | Status | Restarts | Age |
158+
| -- | -- | -- | -- | -- |
159+
| Curl-w7nt8 | 0/1 | Completed | 0 | 72 s |
160+
5. Run the following command to get the job logs and validate if it is working. A successful output should include vcekCert, tcbm and certificateChain.
161+
```bash
162+
kubectl logs job/curl
163+
```
164+
89165
## Next steps
90166
91167
- Learn more about [Azure Attestation documentation](../../attestation/overview.md)

0 commit comments

Comments
 (0)