Red Hat Training

A Red Hat training course is available for RHEL 8

11.15. 将 Tang 部署为容器

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

先决条件

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

流程

  1. 从 registry. redhat.io registry 中拉取 rhel8-tang 容器镜像:

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

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

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

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

    # podman run --rm -v tang-keys:/var/db/tang registry.redhat.io/rhel8/rhel8-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)man page