|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
卷安全
Harvester允许您加密和解密虚拟机镜像。加密机制利用 Linux 内核模块 dm_crypt 和命令行工具 cryptsetup。
先决条件
准备以下资源:
-
机密:Kubernetes 密钥用作 dm_crypt 的密码短语。您必须指定`CRYPTO_KEY_VALUE`字段的值。所有其他字段都是固定的。
密钥示例:
apiVersion: v1 kind: Secret metadata: name: encryption namespace: default data: CRYPTO_KEY_CIPHER: aes-xts-plain64 CRYPTO_KEY_HASH: sha256 CRYPTO_KEY_PROVIDER: secret CRYPTO_KEY_SIZE: 256 CRYPTO_KEY_VALUE: "Your encryption passphrase" CRYPTO_PBKDF: argon2i该示例包含Kubernetes密钥的默认YAML代码。除此之外,您可以使用 用于LUKS模式的加密选项,这是cryptsetup的操作模式。Harvester v1.4.1 及更高版本支持这些选项,但您必须确认您的节点支持这些选项。
选项 可能值 CRYPTO_KEY_CIPHER
aes-xts-plain, aes-xts-plain64, aes-cbc-plain, aes-cbc-plain64, aes-cbc-essiv:sha256
CRYPTO_KEY_HASH
sha256, sha384, sha512
CRYPTO_KEY_SIZE
256, 384, 512
CRYPTO_PBKDF
argon2i, argon2id, pbkdf2
您可以使用 kubectl 或 Harvester UI(Edit as YAML 功能)在系统名称空间中创建密钥。系统名称空间中的资源不会在 Harvester UI 密钥 屏幕上显示。
-
StorageClass:图像使用 Longhorn 加密,因此必须将必需字段传递给 Longhorn CSI 驱动程序。您可以在创建 StorageClass 时指定加密密钥。有关更多信息,请参见 Image StorageClass。
StorageClass 示例:
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: encryption parameters: csi.storage.k8s.io/node-publish-secret-name: encryption csi.storage.k8s.io/node-publish-secret-namespace: default csi.storage.k8s.io/node-stage-secret-name: encryption csi.storage.k8s.io/node-stage-secret-namespace: default csi.storage.k8s.io/provisioner-secret-name: encryption csi.storage.k8s.io/provisioner-secret-namespace: default encrypted: "true" migratable: "true" numberOfReplicas: "3" staleReplicaTimeout: "2880" provisioner: driver.longhorn.io reclaimPolicy: Delete volumeBindingMode: Immediate您可以使用 Harvester UI(Edit as YAML 功能)和 kubectl 在系统名称空间中创建一个密钥。系统名称空间中的资源不会在 Harvester UI 密钥 屏幕上显示。
与 Rancher 集成的高级用法
该密钥是未加密的 Base64 编码字符串。为了保护密钥安全,您可以使用项目和名称空间来隔离权限。有关更多信息,请参见 Multi-Tenancy。