How does it work?

Workload Identity Management

In case of workload identities the situation is a bit more complex. Workload is effectively code, and code is more frequently modified, updated and deployed than human identities. To accomodate with the dynamic nature of workload, the CPU acts as attesting entity.

That is,

  1. the attestor measures the identity of the workload and issues the workload certificate. The attestor's identity itself is certified and rooted down to the CPU's manufacturer Intel, AMD, ARM or NVIDIA. Optionally, the cloud service provider's identity may be included.

  2. Upon reception of the workload certificate, the workload identity management provider verifies the claims/measurements in the certificates, compares the values with reference values, and enforces a policy to grant the workload access to a relying workload.

  3. The workload identity management provider issues a time and resource bound auth token, such that attested workload can authenticate to relying workloads.

Architecture

Nitride implements the workload identity provider and issues after workload attestation an authentication token to grant access to relying workloads. Most notably, Vault to provisions the workload with secrets, keys, configuration or environment variables. Other services are supported as well.

enclaivelet - attestation shim

Currently, attestation protocols undergo an standardization attempt by the confidential computing consortium. Until a standard is published, all CPU manufacturers and cloud service provider implement their own attestation protocol. Variants include internal, external, raw, vTPM-based or confidential boot enabled attestation, to name a few.

To handle present and future variances, the enclaivelet implements an attestation shim to request a workload certificate irrespectively of the underlying hardware and cloud service provider nuances. That is, irrespectively of the underlying platform and attestation technology (Intel SGX/TDX, AMD SEV SNP, ARM CCA, NVIDIA CC) the enclaivelet implements the protocol variants and issues a certificate is in JSON format. See examples below.

```json
{"Version":1,
"Source":"kraud",
"Protocol":"sev-snp",
"Instance":"test-instance",
"Attestation":
{
"Version":1,
"Product":"Milan",
"Report":"AgAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAAAGcwEAAAAAAAAAAAAAAAAAAAAOdBorIj5QCum1MOTHf43Iy/ilbsByh8hu0+V8t5MAxiVKtoH520qZEG5vj46nsO4Sv8ziA49cUDLSoBav3cn1bc7o2ZATFLV+WbWmxZTVKCI3lVIcdayxtUWkBWOy/QTLPtgpvTxTXQ23oVPw8JfUF37i4SEFnyyhRfoQVFWJhMtk65eHY34se2tOl2ZhLgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVV2PIaZ/3Fof68FRaxVMwo10ncdTlbIJB0wS0jbW/Mv//////////////////////////////////////////AgAAAAAABnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiZrNBWrlyze8u+gVEwzX165v4K9Qla6nb1lovEfuIX862sA5N4nP6aY/Dk8zS3f88veK0j9Vr02bo+X/N/Vp1AgAAAAAABnMDMwEAAzMBAAIAAAAAAAZzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1wgUTI/UcwHd/Cd+BK+zAk+JHG6lYbroQvmMyaGBfsP02z46p/P83PxmZBk3WnJRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjZpvd96gbS1WUjX3OhWBAwACPWi5EXK1Q/UZuo1ijYVIBtcDo2t4txDefhBs+Q9GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
"Data":"eyJOb25jZSI6ImRHVnpkQzF1YjI1alpRbz0iLCJDb25maWciOnt9fQ=="}
}
```

Last updated