2.8. 创建 initdata
您可以创建 initdata 以在运行时安全地初始化带有敏感或特定于工作负载的数据的 pod,从而避免需要在虚拟机镜像中嵌入此数据。这种方法通过降低公开机密信息的风险并消除自定义镜像构建需求来提供额外的安全性。
重要
如果您在红帽构建的 Trustee 的 kbs-config 配置映射中配置 insecure_http = true,则必须删除 kbs_cert 设置。
流程
创建
initdata.toml文件:algorithm = "sha384" version = "0.1.0" [data] "aa.toml" = ''' [token_configs] [token_configs.coco_as] url = '<trustee_url>' [token_configs.kbs] url = '<trustee_url>' ''' "cdh.toml" = ''' socket = 'unix:///run/confidential-containers/cdh.sock' credentials = [] [kbc] name = 'cc_kbc' url = '<trustee_url>' kbs_cert = """ -----BEGIN CERTIFICATE----- <kbs_certificate> -----END CERTIFICATE----- """ [image] image_security_policy_uri = 'kbs:///default/<secret-policy-name>/<key> ''' "policy.rego" = ''' package agent_policy default AddARPNeighborsRequest := true default AddSwapRequest := true default CloseStdinRequest := true default CopyFileRequest := true default CreateContainerRequest := true default CreateSandboxRequest := true default DestroySandboxRequest := true default GetMetricsRequest := true default GetOOMEventRequest := true default GuestDetailsRequest := true default ListInterfacesRequest := true default ListRoutesRequest := true default MemHotplugByProbeRequest := true default OnlineCPUMemRequest := true default PauseContainerRequest := true default PullImageRequest := true default ReadStreamRequest := false default RemoveContainerRequest := true default RemoveStaleVirtiofsShareMountsRequest := true default ReseedRandomDevRequest := true default ResumeContainerRequest := true default SetGuestDateTimeRequest := true default SignalProcessRequest := true default StartContainerRequest := true default StartTracingRequest := true default StatsContainerRequest := true default StopTracingRequest := true default TtyWinResizeRequest := true default UpdateContainerRequest := true default UpdateEphemeralMountsRequest := true default UpdateInterfaceRequest := true default UpdateRoutesRequest := true default WaitProcessRequest := true default ExecProcessRequest := false default SetPolicyRequest := false default WriteStreamRequest := false ExecProcessRequest if { input_command = concat(" ", input.process.Args) some allowed_command in policy_data.allowed_commands input_command == allowed_command } policy_data := { "allowed_commands": [ "curl http://127.0.0.1:8006/cdh/resource/default/attestation-status/status" ] } '''- url
- 指定红帽构建的 Trustee
- <kbs_certificate>
- 为 attestation 代理指定 Base64 编码的 TLS 证书。
- kbs_cert
-
如果您在红帽构建的 Trustee 的
kbs-config配置映射中配置insecure_http = true,请删除kbs_cert设置。 - image_security_policy_uri
-
可选,只有在启用了容器镜像签名验证策略时。将
<secret-policy-name>和 <key> 替换为 创建 KbsConfig 自定义资源中指定 的 secret 名称和密钥。
运行以下命令,将
initdata.toml文件转换为 gzip 格式的 Base64 编码字符串:$ cat initdata.toml | gzip | base64 -w0 > initdata.txt记录此字符串,以便在 pod 清单中使用。
运行以下命令,计算
initdata.toml文件的 SHA-256 哈希,并将其值分配给hash变量:$ hash=$(sha256sum initdata.toml | cut -d' ' -f1)运行以下命令,将 32 字节 0s 分配给
initial_pcr变量:$ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000运行以下命令,计算哈希和
initial_pcr的 SHA-256哈希,并将其值分配给PCR8_HASH变量:$ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASH记录 RVPS 配置映射的
PCR8_HASH值。