《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用签名容器(1) https://developer.aliyun.com/article/1231240?groupCode=aliyun_linux
步骤六: 安装并启动Verdictd
Verdictd是一种远程认证实现,由一组构建块组成,这些构建块利用Intel/AMD的安全特性来发现、验证和支持关键的基础安全和机密计算用例。它依靠RATS-TLS应用远程认证基础和标准规范来维护平台数据收集服务和高效的验证引擎来执行全面的信任评估。这些信任评估可用于管理应用于任何给定工作负载的不同信任和安全策略。 更多信息请参考verdictd项目文档。
1. 安装verdicted
yum remove verdictd -y rm -rf /usr/share/rats-tls /usr/local/lib/rats-tls/ /usr/local/bin/verdict* yum install -y verdictd
2. 配置verdicted
2.1 将步骤二中的pubring.gpg复制到 /opt/verdictd/gpg/
cp /root/.gnupg/pubring.gpg /opt/verdictd/gpg/keyring.gpg
2.2 将policy.json写入到 /opt/verdictd/image/
在实际操作中,应将用户docker.io/test更名为实际操作的docker.io用户名,docker.io/xxxx。
cat>/opt/verdictd/image/policy.json <<EOF { "default": [ { "type": "reject" } ], "transports": { "docker": { "docker.io/test": [ { "type": "signedBy", "keyType": "GPGKeys", "keyPath": "/run/image-security/simple_signing/pubkey.gpg" } ] } } } EOF
2.3 将sigstore.yaml写入到 /opt/verdictd/image/
cat>/opt/verdictd/image/sigstore.yaml <<EOF default-docker: sigstore: fifile:///var/lib/containers/sigstore docker: docker.io/test: sigstore: fifile:///var/lib/containers/sigstore EOF
2.4 配置CSV OPA文件
使用/opt/csv/calculate_hash.py计算measure:
yum install -y gop /opt/csv/calculate_hash.py --ovmf /opt/csv/ccv0-guest/OVMF.fd --kernel /opt/csv/ccv0 guest/vmlinuz-5.15.0-rc5+ --initrd /opt/csv/ccv0-guest/initrd.run.img --cmdlin/opt/csv/ ccv0-guest/cmdlinee
输出结果类似如下:
Calculating hash of kernel at /opt/csv/ccv0-guest/vmlinuz-5.15.0-rc5+ Calculating hash of initrd at /opt/csv/ccv0-guest/initrd.run.img Calculating hash of kernel params (/opt/csv/ccv0-guest/cmdline) Firmware Digest: OJXIhq3PHbknNmpAIy8YpUHOpY0wvGRXULOW8djVAZA=
配置csvData,需确保csvData中的measure与前一步计算的Firmware Digest一致。
mkdir -p /opt/verdictd/opa/ && cat <<EOF | sudo tee /opt/verdictd/opa/csvData { "measure": ["OJXIhq3PHbknNmpAIy8YpUHOpY0wvGRXULOW8djVAZA="] } EOF
配置csvPolicy.rego:
cat <<EOF | sudo tee /opt/verdictd/opa/csvPolicy.rego package policy # By default, deny requests. default allow = false allow { measure_is_grant } measure_is_grant { count(data.measure) == 0 } measure_is_grant { count(data.measure) > 0 input.measure == data.measure[_] } EOF
3. 启动verdictd
使用以下命令启动verdictd,从而于Attestation-Agent建立基于CSV的安全信道。
verdictd --listen 0.0.0.0:20002 --verififier csv --attester nullattester --client-api 127.0.0.1:20001 --mutual
注意:verdictd 启动的时候有一个报错。原因是在注册SGX相关的 instance时出错,在CSV平台上可以忽略。
[ERROR] failed on dlopen(): libsgx_dcap_quoteverify.so.1: cannot open shared object fifile: No such fifile or directory
《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用签名容器(3) https://developer.aliyun.com/article/1231237?groupCode=aliyun_linux