|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
k3s 密文加密
K3s 支持启用静态密文加密。有关更多信息,请参见 密文加密。
密文加密工具
|
版本门控
自 v1.21.8+k3s1 起可用 |
K3s 包含一个 CLI 工具 secrets-encrypt,可自动控制以下内容:
-
禁用/启用密文加密
-
添加新的加密密钥
-
轮换和删除加密密钥
-
重新加密密文
|
未能遵循正确的加密密钥轮换程序可能会导致您的集群永久损坏。请谨慎操作。 |
加密密钥轮换
|
版本门控
自 2024 年 9 月发布起可用:v1.30.5+k3s1,v1.31.1+k3s1。 |
-
单服务器
-
高可用性
要在单服务器集群上轮换密文加密密钥:
-
使用标志
--secrets-encryption启动 K3s 服务器当前 _不_支持在没有加密的情况下启动 K3s 并在稍后启用。
-
轮换密文加密密钥
k3s secrets-encrypt rotate-keys
-
等待重新加密完成。查看服务器日志,或等待:
$ k3s secrets-encrypt status Encryption Status: Enabled Current Rotation Stage: reencrypt_finished
在高可用性设置中轮换密文加密密钥:
-
启动所有三个K3s服务器,使用`--secrets-encryption`标志。为了简洁,服务器将被称为S1、S2、S3。
当前 _不_支持在没有加密的情况下启动 K3s 并在稍后启用。
-
在S1上轮换密文加密密钥
k3s secrets-encrypt rotate-keys -
等待重新加密完成。查看服务器日志,或等待:
$ k3s secrets-encrypt status Encryption Status: Enabled Current Rotation Stage: reencrypt_finishedK3s将每秒重新加密约5个密文。具有大量密文的集群可能需要几分钟才能重新加密。您可以在服务器日志中跟踪进度。
-
使用相同的参数重新启动S1上的K3s。如果将K3s作为服务运行:
# If using systemd systemctl restart k3s # If using openrc rc-service k3s restart -
一旦S1启动,重新启动S2和S3上的K3s。
旧版加密密钥轮换
|
新程序
如果使用K3s版本v1.30+,我们建议使用加密密钥旋转。 |
-
单服务器
-
高可用性
要在单服务器集群上轮换密文加密密钥:
-
使用标志
--secrets-encryption启动 K3s 服务器当前 _不_支持在没有加密的情况下启动 K3s 并在稍后启用。
-
准备
k3s secrets-encrypt prepare -
杀死并使用相同的参数重新启动K3s服务器。如果将K3s作为服务运行:
# If using systemd systemctl restart k3s # If using openrc rc-service k3s restart -
轮换
k3s secrets-encrypt rotate -
杀死并使用相同的参数重新启动K3s服务器。
-
重新加密
K3s将每秒重新加密约5个密文。
具有大量密文的集群可能需要几分钟才能重新加密。k3s secrets-encrypt reencrypt
嵌入式数据库和外部数据库集群的步骤是相同的。
在HA设置中轮换密文加密密钥:
-
启动所有三个K3s服务器,使用`--secrets-encryption`标志。为了简洁,服务器将被称为S1、S2、S3。
-
当前_不_支持在没有加密的情况下启动 K3s 并在稍后启用。
-
虽然不是必需的,但建议您选择一个服务器节点来运行`secrets-encrypt`命令。
-
-
在S1上准备
k3s secrets-encrypt prepare -
使用相同的参数杀死并重启S1。如果将K3s作为服务运行:
# If using systemd systemctl restart k3s # If using openrc rc-service k3s restart -
一旦S1启动,杀死并重启S2和S3。
-
在S1上轮换
k3s secrets-encrypt rotate -
使用相同的参数杀死并重启S1。
-
一旦S1启动,杀死并重启S2和S3。
-
在S1上重新加密
K3s 将每秒重新加密约5个密文。
具有大量密文的集群可能需要几分钟才能重新加密。k3s secrets-encrypt reencrypt -
使用相同的参数杀死并重启S1。
-
一旦S1启动,杀死并重启S2和S3。
禁用/重新启用密文加密
-
单服务器
-
高可用性
在启动带有`--secrets-encryption`标志的服务器后,可以禁用密文加密。
要在单节点集群上禁用密文加密:
-
禁用
k3s secrets-encrypt disable -
杀死并使用相同的参数重新启动K3s服务器。如果将K3s作为服务运行:
# If using systemd systemctl restart k3s # If using openrc rc-service k3s restart -
使用标志重新加密
k3s secrets-encrypt reencrypt --force --skip
要在单节点集群上重新启用密文加密:
-
启用
k3s secrets-encrypt enable -
杀死并使用相同的参数重新启动K3s服务器。
-
使用标志重新加密
k3s secrets-encrypt reencrypt --force --skip
在启动带有`--secrets-encryption`标志的高可用性集群后,可以禁用密文加密。
|
虽然不是必需的,但建议您选择一个服务器节点来运行`secrets-encrypt`命令。 |
为简洁起见,本指南中使用的三台服务器将被称为S1、S2、S3。
要在高可用性集群上禁用密文加密:
-
在S1上禁用
k3s secrets-encrypt disable -
使用相同的参数杀死并重启S1。如果将K3s作为服务运行:
# If using systemd systemctl restart k3s # If using openrc rc-service k3s restart -
一旦S1启动,杀死并重启S2和S3。
-
在S1上使用标志重新加密
k3s secrets-encrypt reencrypt --force --skip
要在高可用性集群上重新启用密文加密:
-
在 S1 上启用
k3s secrets-encrypt enable -
使用相同的参数杀死并重启S1。
-
一旦S1启动,杀死并重启S2和S3。
-
在S1上使用标志重新加密
k3s secrets-encrypt reencrypt --force --skip
密文加密状态
密文加密工具包含一个 status 命令,用于显示节点上当前密文加密的状态信息。
单服务器节点上的命令示例:
$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: start
Server Encryption Hashes: All hashes match
Active Key Type Name
------ -------- ----
* AES-CBC aescbckey
高可用性集群中的另一个示例,在旋转密钥后,但在重启服务器之前:
$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: rotate
Server Encryption Hashes: hash does not match between node-1 and node-2
Active Key Type Name
------ -------- ----
* AES-CBC aescbckey-2021-12-10T22:54:38Z
AES-CBC aescbckey
每个部分的详细信息如下:
-
加密状态:显示节点上是否禁用或启用 Secrets 加密
-
当前旋转阶段:指示节点上的当前旋转阶段。
阶段为:start、prepare、rotate、reencrypt_request、reencrypt_active、reencrypt_finished -
服务器加密哈希:对于高可用性集群,这指示所有服务器的本地文件是否处于相同阶段。这可以用来确定在进入下一个阶段之前是否需要重启服务器。在上面的高可用性示例中,节点 1 和节点 2 的哈希不同,表明它们当前没有相同的加密配置。重启服务器将同步它们的配置。
-
密钥表:总结节点上找到的秘密加密密钥的信息。
-
活动:"*" 表示当前用于密文加密的密钥(如果有的话)。Kubernetes 使用活动密钥来加密任何新密文。
-
密钥类型:使用此工具的所有密钥都是
AES-CBC类型。查看更多信息 这里。 -
名称:加密密钥的名称。
-