11.15. 将 Tang 部署为容器

tang 容器镜像为在 OpenShift Container Platform(OCP)集群中或独立的虚拟机中运行的 Clevis 客户端提供 Tang-server 解密功能。

先决条件

  • podman 软件包及其依赖项已安装在系统上。
  • 你可以使用 podman login registry.redhat.io 命令登录到 registry.redhat.io 容器目录。如需更多信息,请参阅 红帽容器注册表身份验证
  • Clevis 客户端安装在包含 LUKS 加密卷的系统上,您希望使用 Tang 服务器自动解锁这些卷。

步骤

  1. registry.redhat.io 注册中心中拉取 tang 容器镜像:

    # podman pull registry.redhat.io/rhel9/tang
  2. 运行容器,指定其端口,并指定到 Tang 密钥的路径。前面的示例运行 tang 容器,指定端口 7500,并指示到 /var/db/tang 目录的 Tang 密钥的路径:

    # podman run -d -p 7500:7500 -v tang-keys:/var/db/tang --name tang registry.redhat.io/rhel9/tang

    请注意,Tang 默认使用端口 80,但这可能与其他服务冲突,如 Apache HTTP 服务器。

  3. [可选] 为提高安全性,定期轮转 Tang 密钥。您可以使用 tangd-rotate-keys 脚本,例如:

    # podman run --rm -v tang-keys:/var/db/tang registry.redhat.io/rhel9/tang tangd-rotate-keys -v -d /var/db/tang
    Rotated key 'rZAMKAseaXBe0rcKXL1hCCIq-DY.jwk' -> .'rZAMKAseaXBe0rcKXL1hCCIq-DY.jwk'
    Rotated key 'x1AIpc6WmnCU-CabD8_4q18vDuw.jwk' -> .'x1AIpc6WmnCU-CabD8_4q18vDuw.jwk'
    Created new key GrMMX_WfdqomIU_4RyjpcdlXb0E.jwk
    Created new key _dTTfn17sZZqVAp80u3ygFDHtjk.jwk
    Keys rotated successfully.

验证

  • 在包含 LUKS 加密卷的系统上,通过 Tang 服务器自动解锁,检查 Clevis 客户端是否可以使用 Tang 加密和解密纯文本消息:

    # echo test | clevis encrypt tang '{"url":"http://localhost:7500"}' | clevis decrypt
    The advertisement contains the following signing keys:
    
    x1AIpc6WmnCU-CabD8_4q18vDuw
    
    Do you wish to trust these keys? [ynYN] y
    test

    localhost URL 上的 Tang 服务器可用并通过端口 7500 进行通信时,上一示例命令在其输出的末尾显示 test 字符串。

其他资源

  • podman(1)clevis(1)tang(8)手册页