7.11. 配置信任值、策略和 secret


您可以为 Trustee 配置以下值、策略和 secret:

  • 可选:参考值提供程序服务的引用值。
  • IBM Secure Execution 的测试策略。
  • 可选: Trustee 客户端的自定义密钥的 Secret。
  • 可选:用于容器镜像签名验证的 Secret。
  • 容器镜像签名验证策略。这个策略是必需的。如果不使用容器镜像签名验证,您必须创建一个不验证签名的策略。
  • 资源访问策略。

7.11.1. 配置参考值

您可以通过指定硬件平台的可信摘要来配置参考值。

客户端从正在运行的软件、受信任的执行环境(TEE)硬件和固件中收集测量,并将声明中的引用提交到 Attestation Server。这些测量必须与注册到 Trustee 的可信摘要匹配。此过程可确保机密虚拟机(CVM)正在运行预期的软件堆栈,并且未被篡改。

流程

  1. 创建 rvps-configmap.yaml 清单文件:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: rvps-reference-values
      namespace: trustee-operator-system
    data:
      reference-values.json: |
        [ 1
        ]
    1
    该值留空。
  2. 运行以下命令来创建 RVPS 配置映射:

    $ oc apply -f rvps-configmap.yaml

7.11.2. 为 IBM 安全执行创建 attestation 策略

您必须为 IBM Secure Execution 创建 attestation 策略。

流程

  1. 创建 attestation-policy.yaml 清单文件:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: attestation-policy
      namespace: trustee-operator-system
    data:
      default.rego: | 1
        package policy
        import rego.v1
        default allow = false
        converted_version := sprintf("%v", [input["se.version"]])
        allow if {
            input["se.attestation_phkh"] == "<se.attestation_phkh>" 2
            input["se.image_phkh"] == "<se.image_phkh>"
            input["se.tag"] == "<se.tag>"
            converted_version == "256"
        }
    1
    不要修改策略名称。
    2
    运行 se_parse_hdr.py 脚本,指定您获取的 attestation 策略字段。
  2. 运行以下命令来创建 attestation 策略配置映射:

    $ oc apply -f attestation-policy.yaml

7.11.3. 使用客户端自定义密钥创建 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 键中指定。

7.11.4. 为容器镜像签名验证创建 secret

如果使用容器镜像签名验证,您必须创建一个包含公共容器镜像签名密钥的 secret。

Confidential compute attestation Operator 使用 secret 来验证签名,确保环境中仅部署可信和经过身份验证的容器镜像。

您可以使用 Red Hat Trusted Artifact Signer 或其他工具为容器镜像签名。

流程

  1. 运行以下命令,为容器镜像签名验证创建 secret:

    $ oc apply secret generic <type> \ 1
      --from-file=<tag>=./<public_key_file> \ 2
      -n trustee-operator-system
    1
    指定 KBS secret 类型,例如 img-sig
    2
    指定 secret 标签,如 pub-key,以及公共容器镜像签名密钥。
  2. 记录 &lt ;type&gt; 值。在创建 KbsConfig 自定义资源时,您必须将这个值添加到 spec.kbsSecretResources 键中。

7.11.5. 创建容器镜像签名验证策略

您可以创建容器镜像签名验证策略,因为始终启用签名验证。如果缺少此策略,则 pod 不会启动。

如果您不使用容器镜像签名验证,您可以在不签名验证的情况下创建策略。

如需更多信息,请参阅 containers-policy.json 5

流程

  1. 根据以下示例创建 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
                    }
                ]
            }
        }
      }
      1
      指定 传输的 镜像存储库,例如 "docker":。如需更多信息,请参阅 containers-transports 5
      2
      指定容器 registry 和镜像,例如 "quay.io/my-image"。
      3
      指定您创建的容器镜像签名验证 secret 的类型和标签,例如 img-sig/pub-key
  2. 运行以下命令来创建安全策略:

    $ 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 键中指定。

7.11.6. 创建资源访问策略

您可以为 Trustee 策略引擎配置资源访问策略。此策略决定信任哪个资源可以访问。

注意

Trustee 策略引擎与 Attestation Service 策略引擎不同,后者决定了 TEE 证据的有效性。

流程

  1. 创建 resourcepolicy-configmap.yaml 清单文件:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: resource-policy
      namespace: trustee-operator-system
    data:
      policy.rego: | 1
        package policy 2
        path := split(data["resource-path"], "/")
        default allow = false
        allow {
          count(path) == 3
          input["tee"] == "se"
        }
    1
    资源策略 policy.rego 的名称必须与 Trustee 配置映射中定义的资源策略匹配。
    2
    资源策略遵循 Open Policy Agent 规格。当 TEE 不是 tester 的示例时,此示例允许检索所有资源。
  2. 运行以下命令来创建资源策略配置映射:

    $ oc apply -f resourcepolicy-configmap.yaml
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.