4.6. 创建 initdata
您可以创建 initdata 以在运行时安全地初始化带有敏感或特定于工作负载的数据的 pod,从而避免需要在虚拟机镜像中嵌入此数据。这种方法通过降低公开机密信息的风险并消除自定义镜像构建需求来提供额外的安全性。
您可以为 pod 配置映射中指定 initdata,对于全局配置,或者在 pod 清单中为特定 pod 指定。pod 清单中的 initdata 值覆盖 pod 配置映射中设置的值。
在生产环境中,您必须创建 initdata 来覆盖默认的 permissive Kata 代理策略。
您可以在对等 pod 配置映射中指定 initdata,用于全局配置,或者在对等 pod 清单中为特定 pod 指定。peer pod 清单中的 initdata 值覆盖对等 pod 配置映射中设置的值。
如果您在红帽构建的 Trustee 的 kbs-config 配置映射中配置 insecure_http = true,则必须删除 kbs_cert 设置。
流程
运行以下命令,获取红帽构建的 Trustee IP 地址:
$ oc get node $(oc get pod -n trustee-operator-system \ -o jsonpath='{.items[0].spec.nodeName}') \ -o jsonpath='{.status.addresses[?(@.type=="InternalIP")].address}'输出示例
192.168.122.22运行以下命令来获取端口:
$ oc get svc kbs-service -n trustee-operator-system输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kbs-service NodePort 172.30.116.11 <none> 8080:32178/TCP 12d创建
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 := true 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 IP 地址和端口,例如
https://192.168.122.22:32178。 - <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 配置映射或对等 pod 清单中使用。