3.6. 创建 initdata


您可以创建 initdata 以在运行时安全地初始化带有敏感或特定于工作负载的数据的 pod,从而避免需要在虚拟机镜像中嵌入此数据。这种方法通过降低公开机密信息的风险并消除自定义镜像构建需求来提供额外的安全性。

您可以为 pod 配置映射中指定 initdata,对于全局配置,或者在 pod 清单中为特定 pod 指定。pod 清单中的 initdata 值覆盖 pod 配置映射中设置的值。

重要

在生产环境中,您必须创建 initdata 来覆盖默认的 permissive Kata 代理策略。

您可以在对等 pod 配置映射中指定 initdata,用于全局配置,或者在对等 pod 清单中为特定 pod 指定。peer pod 清单中的 initdata 值覆盖对等 pod 配置映射中设置的值。

然后,您从 initdata.toml 文件中为红帽构建的 Trust Value Provider Service (RVPS)配置映射生成平台配置寄存器(PCR) 8 哈希。

红帽构建的 Trustee 使用 RVPS 验证机密工作负载发送的测试证据。RVPS 包含可信引用值,如文件哈希,与测试请求中包含的 PCR 测量进行比较。这些哈希不是由红帽构建的 Trustee 生成。

重要

如果您在红帽构建的 Trustee 的 kbs-config 配置映射中配置 insecure_http = true,则必须删除 kbs_cert 设置。

流程

  1. 运行以下命令,获取红帽构建的 Trustee URL:

    $ TRUSTEE_URL=$(oc get route kbs-service \
      -n trustee-operator-system -o jsonpath='{.spec.host}') \
      && echo $TRUSTEE_URL
    Copy to Clipboard Toggle word wrap
  2. 创建 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"
      ]
    }
    '''
    Copy to Clipboard Toggle word wrap
    url
    指定红帽构建的 Trustee URL。如果您使用 insecure_http 配置红帽构建的 Trustee 用于测试目的,请使用 HTTP。否则,请使用 HTTPS。对于生产环境系统,请避免使用 insecure_http,除非您将环境配置为外部处理 TLS,例如使用代理。
    <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 名称和密钥。
  3. 运行以下命令,将 initdata.toml 文件转换为 gzip 格式的 Base64 编码字符串:

    $ cat initdata.toml | gzip | base64 -w0 > initdata.txt
    Copy to Clipboard Toggle word wrap

    记录此字符串,以便在对等 pod 配置映射或对等 pod 清单中使用。

  4. 运行以下命令,计算 initdata.toml 文件的 SHA-256 哈希,并将其值分配给 hash 变量:

    $ hash=$(sha256sum initdata.toml | cut -d' ' -f1)
    Copy to Clipboard Toggle word wrap
  5. 运行以下命令,将 32 字节 0s 分配给 initial_pcr 变量:

    $ initial_pcr=0000000000000000000000000000000000000000000000000000000000000000
    Copy to Clipboard Toggle word wrap
  6. 运行以下命令,计算哈希和 initial_pcr 的 SHA-256 哈希,并将其值分配给 PCR8_HASH 变量:

    $ PCR8_HASH=$(echo -n "$initial_pcr$hash" | xxd -r -p | sha256sum | cut -d' ' -f1) && echo $PCR8_HASH
    Copy to Clipboard Toggle word wrap

    记录 RVPS 配置映射的 PCR8_HASH 值。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat