简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

安全性

提供者

使用此处列出的建议确保Astra Trident安装安全。

在自己的命名空间中运行 Astra Trident

请务必防止应用程序,应用程序管理员,用户和管理应用程序访问 Astra Trident 对象定义或 Pod ,以确保存储可靠并阻止潜在的恶意活动。

要将其他应用程序和用户与 Astra Trident 分开,请始终在自己的 Kubernetes 命名空间(trident )中安装 Astra Trident 。将 Astra Trident 置于自己的命名空间中可确保只有 Kubernetes 管理人员才能访问 Astra Trident Pod 以及存储在命名空间 CRD 对象中的项目(如适用,还包括后端和 CHAP 密码)。您应确保仅允许管理员访问 Astra Trident 命名空间,从而访问 tridentctl 应用程序。

对 ONTAP SAN 后端使用 CHAP 身份验证

Astra Trident 支持对 ONTAP SAN 工作负载进行基于 CHAP 的身份验证(使用 ontap-sanontap-san-economy. 驱动程序)。NetApp 建议将双向 CHAP 与 Astra Trident 结合使用,以便在主机和存储后端之间进行身份验证。

对于使用 SAN 存储驱动程序的 ONTAP 后端, Astra Trident 可以通过 tridentctl 设置双向 CHAP 并管理 CHAP 用户名和密码。请参见 "此处" 了解 Astra Trident 如何在 ONTAP 后端配置 CHAP 。

注 Trident 20.04 及更高版本支持 ONTAP 后端的 CHAP 。

对 NetApp HCI 和 SolidFire 后端使用 CHAP 身份验证

NetApp 建议部署双向 CHAP ,以确保主机与 NetApp HCI 和 SolidFire 后端之间的身份验证。Astra Trident 使用一个机密对象,每个租户包含两个 CHAP 密码。当 Trident 作为 CSI 配置程序安装时,它会管理 CHAP 密码并将其存储在相应 PV 的 tridentvolume CR 对象中。创建 PV 时, CSI Astra Trident 会使用 CHAP 密码启动 iSCSI 会话并通过 CHAP 与 NetApp HCI 和 SolidFire 系统进行通信。

注 CSI Trident 创建的卷不与任何卷访问组关联。

在非 CSI 前端中,作为辅助节点上的设备连接卷的操作由 Kubernetes 处理。创建卷后,如果该租户的密钥尚不存在,则 Astra Trident 会对 NetApp HCI/SolidFire 系统进行 API 调用,以检索这些密钥。然后, Astra Trident 将这些机密传递给 Kubernetes 。位于每个节点上的 kubelet 通过 Kubernetes API 访问这些机密,并使用它们在访问卷的每个节点与卷所在的 NetApp HCI/SolidFire 系统之间运行 / 启用 CHAP 。

将Astra Trident与NVE和NAE结合使用

NetApp ONTAP 提供空闲数据加密、可在磁盘被盗、退回或重新利用时保护敏感数据。有关详细信息,请参见 "配置 NetApp 卷加密概述"

  • 如果在后端启用了NAE、则在Astra Trident中配置的任何卷都将启用NAE。

  • 如果后端未启用NAE、则在Astra Trident中配置的任何卷都将启用NVE、除非您在后端配置中将NVE加密标志设置为`false`。

注

在启用了NAE的后端的Astra Trident中创建的卷必须经过NVE或NAE加密。

  • 您可以在Trident后端配置中将NVE加密标志设置为`true`、以覆盖NAE加密并按卷使用特定的加密密钥。

  • 在启用了NAE的后端将NVE加密标志设置为`false`将创建启用了NAE的卷。您不能通过将NVE加密标志设置为`false`来禁用NAE加密。

  • 您可以通过将NVE加密标志显式设置为`true`来在Astra Trident中手动创建NVE卷。

有关后端配置选项的详细信息、请参见:

使用Linux统一密钥设置(Unified Key Setup、LUKS)启用每个卷的主机端加密

您可以启用Linux统一密钥设置(LUKS)来对Astra Trident上的ONTAP SAN和ONTAP SAN经济卷进行加密。在Astra Trident中、LUKS加密的卷会按照建议使用AES-XTS-plain64 Cypher和模式 "NIST"

有关ONTAP SAN的后端配置选项的详细信息、请参见 "ONTAP SAN配置选项"

开始之前
  • 工作节点必须安装Cryptsetup 2.1或更高版本。有关详细信息,请访问 "Gitlab:密码设置"

  • 出于性能原因、我们建议员工节点支持高级加密标准新指令(AES-NI)。要验证AES-NI支持、请运行以下命令:

    grep "aes" /proc/cpuinfo

    如果未返回任何内容、则您的处理器不支持AES-NI。有关AES-NI的详细信息、请访问: "Intel:高级加密标准说明(AES-NI)"

步骤
  1. 在后端配置中定义LUKS加密属性。

    "storage": [
        {
            "labels":{"luks": "true"},
            "zone":"us_east_1a",
            "defaults": {
                "luksEncryption": "true"
            }
        },
        {
            "labels":{"luks": "false"},
            "zone":"us_east_1a",
            "defaults": {
                "luksEncryption": "false"
            }
        },
    ]
  2. 使用 …​ parameters.selector 使用LUKS加密定义存储池。例如:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: luks
    provisioner: netapp.io/trident
    parameters:
      selector: "luks=true"
      csi.storage.k8s.io/node-stage-secret-name: luks-${pvc.name}
      csi.storage.k8s.io/node-stage-secret-namespace: ${pvc.namespace}
  3. 创建包含LUKS密码短语的密码短语。例如:

    apiVersion: v1
    kind: Secret
    metadata:
      name: luks-pvc1
    stringData:
      luks-passphrase-name: B
      luks-passphrase: secretB
      previous-luks-passphrase-name: A
      previous-luks-passphrase: secretA

限制

  • LUKS加密卷将无法利用ONTAP 重复数据删除和数据压缩功能。

  • 目前不支持LUKS密码短语轮换。要更改密码短语、请手动将数据从一个PVC复制到另一个PVC。