《云原生机密计算最佳实践白皮书》——06运行时底座——AMD SEV机密容器(3) https://developer.aliyun.com/article/1231028?groupCode=aliyun_linux
步骤四:运行workload
示例一:运行一个未加密的容器镜像
为了验证主机上不存在容器镜像,应该登录到 k8s 节点并确保以下命令返回空结果:
crictl -r unix:///run/containerd/containerd.sock image ls | grep bitnami/nginx
启动POD
cat <<-EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: labels: run: nginx name: nginx spec: containers: - image: bitnami/nginx:1.22.0 name: nginx dnsPolicy: ClusterFirst runtimeClassName: kata EOF
预期结果:
pod/nginx created
查看 pod 状态:
kubectl get pods
预期结果如下,注意, STATUS 要是 Running 。
NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 3m50s
示例二:运行一个加密容器
attestation agent 支持两种SEV平台相关的KBC:offlfflffline_sev_kbc 和 online_sev_kbc。
• offlfflffline sev KBC 在运行时不会与 Simple KBS 进行通信,而是使用在VM Boot时期通过QEMU注入的secret。该机制的缺点是对注入的 secret 长度有限制。
• online sev KBC 在offlfflffline sev KBC的基础上,支持在运行时发出请求。online sev KBC 在VM Boot时期通过QEMU注入connection。注入的connection包含一个对称密钥,用于加密和验证 KBC 发出的在线请求。 该连接受 SEV(-ES) 秘密注入过程保护,该过程提供机密性、完整性并防止重放攻击。 simple-kbs 为每个连接生成一个新的对称密钥。 KBC 要求每个在线secret都带有随机 guid 以防止重放攻击。
注意:offlfflffline_sev_kbc 和 online_sev_kbc 是两种option,用户只需要采用一种KBC方式运行镜像即可。
导出SEV证书链
sevctl 是 SEV 平台的命令行管理工具,Kata 机密容器需要 SEV 证书链从而与guest owner建立安全会话。请按照以下步骤安装 sevctl:
dnf install sevctl
SEV 证书链必须放在 /opt/sev 中,使用以下命令导出 SEV 证书链:
mkdir -p /opt/sev sevctl export --full /opt/sev/cert_chain.cert
《云原生机密计算最佳实践白皮书》——06运行时底座——AMD SEV机密容器(5) https://developer.aliyun.com/article/1231024?groupCode=aliyun_linux