《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用机密容器(3) https://developer.aliyun.com/article/1231358?groupCode=aliyun_linux
步骤五:安装并启动verdictd
Verdictd是一种远程认证实现,由一组构建块组成,这些构建块利用Intel/AMD的安全特性来发现、验证和支持关键的基础安全和机密计算用例。它依靠RATS-TLS应用远程认证基础和标准规范来维护平台数据收集服务和高效的验证引擎来执行全面的信任评估。这些信任评估可用于管理应用于任何给定工作负载的不同信任和安全策略。 更多信息请参考verdictd项目文档。
1. 请执行以下命令,安装verdictd
yum install -y verdictd
2. 配置CSV OPA文件
获得measurement
CSV 机器容器启动的时候,要对kernel,intird,ovmf和cmdline进行度量,来确保云上启动的guest VM的确
是符合预期的CSV VM。
默认情况下,请使用/opt/csv/calculate_hash.py计算measurement。
为确保/opt/csv/calculate_hash.py运行正常,请安装snowland-smx模块,以pip3为例:
pip3 install snowland-smx
安装完成后执行:
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 --cmdline/opt/csv/ ccv0-guest/cmdline
输出结果类似如下:
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=
注意:如果您修改了Kata的 配置文件(/etc/kata-containers/confifiguration.toml),可能会影响cmdline的内容。
请您用 ps -ef | grep qemu 输出qemu实际启动VM的命令参数,然后参考 -append 的参数获得guest VM的cmdline. 最后重新使用/opt/csv/calculate_hash.py脚本计算measurement.
例如:
# ps -ef /opt/qemu/bin/qemu-system-x86_64 ... -kernel /opt/csv/ccv0-guest/vmlinuz-5.15.0-rc5+ \ -initrd /opt/csv/ccv0-guest/initrd.run.img \ -append tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkb d=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k console=hvc0 console=hvc1 cryptomgr.notests net.ifnames=0 pci=lastbus=0 debug panic=1 nr_cpus=96 scsi_mod.scan= none agent.log=debug agent.debug_console agent.debug_console_vport=1026 agent.con fifig_fifile=/etc/agent-confifig.toml agent.log=debug initcall_debug \ -pidfifile /run/vc/vm/0d134059d36e2c099363d0c48d176e18ae9133dcb4ce25094079cfc1fd5de 3a5/pid ...
则guest VM 的cmdline 为
tsc=reliable no_timer_check rcupdate.rcu_expedited=1 i8042.direct=1 i8042.dumbkbd=1 i8042.nopnp=1 i8042.noaux=1 noreplace-smp reboot=k console=hvc0 console=hvc1 crypto mgr.notests net.ifnames=0 pci=lastbus=0 debug panic=1 nr_cpus=96 scsi_mod.scan=none agent.log=debug agent.debug_console agent.debug_console_vport=1026 agent.confifig_ fifile=/etc/agent-confifig.toml agent.log=debug initcall_debug
配置csvData
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
《云原生机密计算最佳实践白皮书》——06运行时底座——海光CSV机密容器——基于runtime-attestation使用机密容器(5) https://developer.aliyun.com/article/1231355?groupCode=aliyun_linux