@@ -14,66 +14,117 @@ data:
1414 default hardware := 97
1515 default configuration := 36
1616
17- ## miminimal but reliable attestation policy
18- ## hardware and firmware changes. This is not in our control. It's up to the user to update acceptable measurements
19- ## In conjuction with verification with the service provider.
20- ## currently setup for azure vTPM
21-
17+ trust_claims := {
18+ "executables": executables,
19+ "hardware": hardware,
20+ "configuration": configuration,
21+ }
2222
2323 ##### Azure vTPM SNP
2424 executables := 3 if {
25- # input.azsnpvtpm.measurement in data.reference.measurement
26- input.azsnpvtpm.tpm.pcr03 in data.reference.snp_pcr03
27- input.azsnpvtpm.tpm.pcr08 in data.reference.snp_pcr08
28- input.azsnpvtpm.tpm.pcr09 in data.reference.snp_pcr09
29- input.azsnpvtpm.tpm.pcr11 in data.reference.snp_pcr11
30- input.azsnpvtpm.tpm.pcr12 in data.reference.snp_pcr12
25+ input["az-snp-vtpm"].tpm.pcr03 in query_reference_value("snp_pcr03")
26+ input["az-snp-vtpm"].tpm.pcr08 in query_reference_value("snp_pcr08")
27+ input["az-snp-vtpm"].tpm.pcr09 in query_reference_value("snp_pcr09")
28+ input["az-snp-vtpm"].tpm.pcr11 in query_reference_value("snp_pcr11")
29+ input["az-snp-vtpm"].tpm.pcr12 in query_reference_value("snp_pcr12")
3130 }
3231
3332 hardware := 2 if {
34- # Check the reported TCB to validate the ASP FW
35- # input.azsnpvtpm.reported_tcb_bootloader in data.reference.tcb_bootloader
36- # input.azsnpvtpm.reported_tcb_microcode in data.reference.tcb_microcode
37- # input.azsnpvtpm.reported_tcb_snp in data.reference.tcb_snp
38- # input.azsnpvtpm.reported_tcb_tee in data.reference.tcb_tee
39- input.azsnpvtpm
40- }
41-
42- # For the 'configuration' trust claim 2 stands for
43- # "The configuration is a known and approved config."
44- #
45- # For this, we compare all the configuration fields.
33+ input["az-snp-vtpm"]
34+ }
35+
4636 configuration := 2 if {
47- # input.azsnpvtpm.platform_smt_enabled in data.reference.smt_enabled
48- # input.azsnpvtpm.platform_tsme_enabled in data.reference.tsme_enabled
49- # input.azsnpvtpm.policy_abi_major in data.reference.abi_major
50- # input.azsnpvtpm.policy_abi_minor in data.reference.abi_minor
51- # input.azsnpvtpm.policy_single_socket in data.reference.single_socket
52- # input.azsnpvtpm.policy_smt_allowed in data.reference.smt_allowed
53- input.azsnpvtpm
37+ input["az-snp-vtpm"]
5438 }
5539
5640 ##### Azure vTPM TDX
5741 executables := 3 if {
58- input.aztdxvtpm. tpm.pcr03 in data.reference. tdx_pcr03
59- input.aztdxvtpm. tpm.pcr08 in data.reference. tdx_pcr08
60- input.aztdxvtpm. tpm.pcr09 in data.reference. tdx_pcr09
61- input.aztdxvtpm. tpm.pcr11 in data.reference. tdx_pcr11
62- input.aztdxvtpm. tpm.pcr12 in data.reference. tdx_pcr12
42+ input["az-tdx-vtpm"]. tpm.pcr03 in query_reference_value(" tdx_pcr03")
43+ input["az-tdx-vtpm"]. tpm.pcr08 in query_reference_value(" tdx_pcr08")
44+ input["az-tdx-vtpm"]. tpm.pcr09 in query_reference_value(" tdx_pcr09")
45+ input["az-tdx-vtpm"]. tpm.pcr11 in query_reference_value(" tdx_pcr11")
46+ input["az-tdx-vtpm"]. tpm.pcr12 in query_reference_value(" tdx_pcr12")
6347 }
6448
6549 hardware := 2 if {
66- # Check the quote is a TDX quote signed by Intel SGX Quoting Enclave
67- input.aztdxvtpm. quote.header.tee_type == "81000000 "
68- input.aztdxvtpm.quote.header.vendor_id == "939a7233f79c4ca9940a0db3957f0607"
50+ input["az-tdx-vtpm"]. quote.header.tee_type == "81000000"
51+ input["az-tdx-vtpm"]. quote.header.vendor_id == "939a7233f79c4ca9940a0db3957f0607 "
52+ }
6953
70- # Check TDX Module version and its hash. Also check OVMF code hash.
71- # input.aztdxvtpm.quote.body.mr_seam in data.reference.mr_seam
72- # input.aztdxvtpm.quote.body.tcb_svn in data.reference.tcb_svn
73- # input.aztdxvtpm.quote.body.mr_td in data.reference.mr_td
54+ configuration := 2 if {
55+ input["az-tdx-vtpm"]
56+ }
57+
58+ ##### Baremetal TDX
59+ executables := 3 if {
60+ input["tdx"]
61+ input.init_data in query_reference_value("init_data")
62+ }
63+ hardware := 2 if { input["tdx"] }
64+ configuration := 2 if { input["tdx"] }
65+
66+ ##### Baremetal SNP
67+ executables := 3 if {
68+ input["snp"]
69+ input.init_data in query_reference_value("init_data")
70+ }
71+ hardware := 2 if { input["snp"] }
72+ configuration := 2 if { input["snp"] }
73+ {{- if .Values.kbs.gpu.enabled }}
74+
75+ ##### GPU Attestation (NVIDIA H100/H200) — CPU-class evidence with GPU data
76+ hardware := 2 if {
77+ input["snp"]
78+ input["gpu"]
79+ }
80+
81+ executables := 3 if {
82+ input["snp"]
83+ input["gpu"]
84+ input.init_data in query_reference_value("init_data")
7485 }
7586
7687 configuration := 2 if {
77- # input.aztdxvtpm.quote.body.xfam in data.reference.xfam
78- input.aztdxvtpm
79- }
88+ input["snp"]
89+ input["gpu"]
90+ }
91+ {{- end }}
92+ {{- if .Values.kbs.gpu.enabled }}
93+ default_gpu.rego : |
94+ package policy
95+
96+ import rego.v1
97+
98+ default hardware := 97
99+ default executables := 33
100+ default configuration := 36
101+
102+ trust_claims := {
103+ "executables": executables,
104+ "hardware": hardware,
105+ "configuration": configuration,
106+ }
107+
108+ hardware := 2 if {
109+ input.nvidia
110+ input.nvidia["x-nvidia-gpu-attestation-report-cert-chain"]["x-nvidia-cert-status"] == "valid"
111+ input.nvidia["x-nvidia-gpu-attestation-report-parsed"]
112+ input.nvidia["x-nvidia-gpu-attestation-report-signature-verified"]
113+ input.nvidia["x-nvidia-gpu-arch-check"]
114+ }
115+
116+ configuration := 2 if {
117+ input.nvidia.secboot
118+ input.nvidia.dbgstat == "disabled"
119+ }
120+
121+ executables := 3 if {
122+ input.nvidia["x-nvidia-gpu-driver-rim-fetched"]
123+ input.nvidia["x-nvidia-gpu-driver-rim-schema-validated"]
124+ input.nvidia["x-nvidia-gpu-driver-rim-signature-verified"]
125+ input.nvidia["x-nvidia-gpu-vbios-rim-fetched"]
126+ input.nvidia["x-nvidia-gpu-vbios-rim-schema-validated"]
127+ input.nvidia["x-nvidia-gpu-vbios-rim-signature-verified"]
128+ input.nvidia.measres == "success"
129+ }
130+ {{- end }}
0 commit comments