5.9. 配置信任值、策略和 secret
您可以为 Trustee 配置以下值、策略和 secret:
- 可选:参考值提供程序服务的引用值。
- 可选: 验证策略。
- 为 Intel Trust Domain Extensions (TDX)置备证书缓存服务。
- 可选: Trustee 客户端的自定义密钥的 Secret。
- 可选:用于容器镜像签名验证的 Secret。
- 容器镜像签名验证策略。这个策略是必需的。如果不使用容器镜像签名验证,您必须创建一个不验证签名的策略。
- 资源访问策略。
5.9.1. 配置参考值
您可以通过指定硬件平台的可信摘要来配置参考值。
客户端从正在运行的软件、受信任的执行环境(TEE)硬件和固件中收集测量,并将声明中的引用提交到 Attestation Server。这些测量必须与注册到 Trustee 的可信摘要匹配。此过程可确保机密虚拟机(CVM)正在运行预期的软件堆栈,并且未被篡改。
流程
创建
rvps-configmap.yaml
清单文件:apiVersion: v1 kind: ConfigMap metadata: name: rvps-reference-values namespace: trustee-operator-system data: reference-values.json: | [ 1 ]
- 1
- 如果需要,为您的硬件平台指定可信摘要。否则,将它留空。
运行以下命令来创建 RVPS 配置映射:
$ oc apply -f rvps-configmap.yaml
5.9.2. 创建 attestation 策略
您可以创建一个 attestation 策略来覆盖默认的 attestation 策略。
流程
根据以下示例创建
attestation-policy.yaml
清单文件:apiVersion: v1 kind: ConfigMap metadata: name: attestation-policy namespace: trustee-operator-system data: default.rego: | package policy 1 import future.keywords.every default allow = false allow { every k, v in input { judge_field(k, v) } } judge_field(input_key, input_value) { has_key(data.reference, input_key) reference_value := data.reference[input_key] match_value(reference_value, input_value) } judge_field(input_key, input_value) { not has_key(data.reference, input_key) } match_value(reference_value, input_value) { not is_array(reference_value) input_value == reference_value } match_value(reference_value, input_value) { is_array(reference_value) array_include(reference_value, input_value) } array_include(reference_value_array, input_value) { reference_value_array == [] } array_include(reference_value_array, input_value) { reference_value_array != [] some i reference_value_array[i] == input_value } has_key(m, k) { _ = m[k] }
- 1
- attestation 策略遵循 Open Policy Agent 规格。在本例中,attestation 策略将 attestation 报告中提供的声明与 RVPS 数据库中注册的引用值进行比较。只有所有值都匹配时才会成功 attestation 进程。
运行以下命令来创建 attestation 策略配置映射:
$ oc apply -f attestation-policy.yaml
5.9.3. 为 TDX 配置 PCCS
如果使用 Intel Trust Domain Extensions (TDX),您必须将 Trustee 配置为使用 Provisioning Certificate Caching Service (PCCS)。
PCCS 检索配置认证密钥(PCK)证书,并将其缓存在本地数据库中。
不要使用公共 Intel PCCS 服务。在内部或公共云中使用本地缓存服务。
流程
根据以下示例创建
tdx-config.yaml
清单文件:apiVersion: v1 kind: ConfigMap metadata: name: tdx-config namespace: trustee-operator-system data: sgx_default_qcnl.conf: | \ { "collateral_service": "https://api.trustedservices.intel.com/sgx/certification/v4/", "pccs_url": "<pccs_url>" 1 }
- 1
- 指定 PCCS URL,例如
https://localhost:8081/sgx/certification/v4/
。
运行以下命令来创建 TDX 配置映射:
$ oc apply -f tdx-config.yaml
5.9.4. 使用客户端自定义密钥创建 secret
您可以为 Trustee 客户端创建一个包含一个或多个自定义密钥的 secret。
在本例中,kbsres1
机密有两个条目(key
1、key2),
客户端会检索它们。您可以使用相同的格式根据您的要求添加额外的 secret。
先决条件
- 您已创建了一个或多个自定义密钥。
流程
根据以下示例,为自定义密钥创建 secret:
$ oc apply secret generic kbsres1 \ --from-literal key1=<custom_key1> \ 1 --from-literal key2=<custom_key2> \ -n trustee-operator-system
- 1
- 指定自定义密钥。
kbsres1
secret 在KbsConfig
自定义资源的spec.kbsSecretResources
键中指定。
5.9.5. 为容器镜像签名验证创建 secret
如果使用容器镜像签名验证,您必须创建一个包含公共容器镜像签名密钥的 secret。
Confidential compute attestation Operator 使用 secret 来验证签名,确保环境中仅部署可信和经过身份验证的容器镜像。
您可以使用 Red Hat Trusted Artifact Signer 或其他工具为容器镜像签名。
5.9.6. 创建容器镜像签名验证策略
您可以创建容器镜像签名验证策略,因为始终启用签名验证。如果缺少此策略,则 pod 不会启动。
如果您不使用容器镜像签名验证,您可以在不签名验证的情况下创建策略。
如需更多信息,请参阅 containers-policy.json 5。
流程
根据以下示例创建
security-policy-config.json
文件:没有签名验证:
{ "default": [ { "type": "insecureAcceptAnything" }], "transports": {} }
使用签名验证:
{ "default": [ { "type": "insecureAcceptAnything" } ], "transports": { "<transport>": { 1 "<registry>/<image>": 2 [ { "type": "sigstoreSigned", "keyPath": "kbs:///default/<type>/<tag>" 3 } ] } } }
运行以下命令来创建安全策略:
$ oc apply secret generic security-policy \ --from-file=osc=./<security-policy-config.json> \ -n trustee-operator-system
不要更改机密类型
security-policy
或 key,osc
。security-policy
secret 在KbsConfig
自定义资源的spec.kbsSecretResources
键中指定。
5.9.7. 创建资源访问策略
您可以为 Trustee 策略引擎配置资源访问策略。此策略决定信任哪个资源可以访问。
Trustee 策略引擎与 Attestation Service 策略引擎不同,后者决定了 TEE 证据的有效性。
流程
创建
resourcepolicy-configmap.yaml
清单文件:apiVersion: v1 kind: ConfigMap metadata: name: resource-policy namespace: trustee-operator-system data: policy.rego: | 1 package policy 2 default allow = false allow { input["tee"] != "sample" }
- 1
- 资源策略
policy.rego
的名称必须与 Trustee 配置映射中定义的资源策略匹配。 - 2
- 资源策略遵循 Open Policy Agent 规格。当 TEE 不是 tester 的示例时,此示例允许检索所有资源。
运行以下命令来创建资源策略配置映射:
$ oc apply -f resourcepolicy-configmap.yaml