Kerberos 传输中加密
通过使用 Kerberos 在线加密,您可以为托管群集和存储后端之间的流量启用加密,从而提高数据访问安全性。
Trident 支持将 Kerberos 加密用于 ONTAP 作为存储后端:
-
本地 ONTAP - Trident 支持通过 NFSv3 和 NFSv4 连接从 Red Hat OpenShift 和上游 Kubernetes 集群到本地 ONTAP 卷的 Kerberos 加密。
可以创建、删除、调整大小、快照、克隆、只读克隆以及导入使用 NFS 加密的卷。
使用本地 ONTAP 卷配置运行中的 Kerberos 加密
您可以在托管集群与本地 ONTAP 存储后端之间的存储流量上启用 Kerberos 加密。
|
|
仅使用 ontap-nas 存储驱动程序支持针对具有本地 ONTAP 存储后端的 NFS 流量的 Kerberos 加密。
|
-
请确保您拥有该
tridentctl实用程序的访问权限。 -
确保您拥有对 ONTAP 存储后端的管理员访问权限。
-
确保您知道要从 ONTAP 存储后端共享的卷的名称。
-
确保已准备好 ONTAP 存储虚拟机,以支持 NFS 卷的 Kerberos 加密。请参阅 "在 dataLIF 上启用 Kerberos"获取说明。
-
请确保您使用 Kerberos 加密的任何 NFSv4 卷配置正确。请参阅 NetApp NFSv4 域配置部分(第 13 页) "NetApp NFSv4 增强功能和最佳实践指南"。
添加或修改 ONTAP 导出策略
您需要向现有的 ONTAP 导出策略添加规则,或创建支持 Kerberos 加密的新导出策略,用于 ONTAP 存储 VM 根卷以及与上游 Kubernetes 集群共享的任何 ONTAP 卷。您添加的导出策略规则或创建的新导出策略需要支持以下访问协议和访问权限:
使用 NFS、NFSv3 和 NFSv4 访问协议配置导出策略。
根据您对卷的需求,您可以配置三种不同版本的 Kerberos 加密之一:
-
Kerberos 5 - (身份验证和加密)
-
Kerberos 5i -(具有身份保护的身份验证和加密)
-
Kerberos 5p -(具有身份和隐私保护的身份验证和加密)
使用适当的访问权限配置 ONTAP 导出策略规则。例如,如果群集将使用 Kerberos 5i 和 Kerberos 5p 加密的混合方式装载 NFS 卷,请使用以下访问设置:
| 类型 | 只读访问 | 读/写访问权限 | 超级用户访问 |
|---|---|---|---|
UNIX |
已启用 |
已启用 |
已启用 |
Kerberos 5i |
已启用 |
已启用 |
已启用 |
Kerberos 5p |
已启用 |
已启用 |
已启用 |
有关如何创建 ONTAP 导出策略和导出策略规则,请参阅以下文档:
创建存储后端
您可以创建包含 Kerberos 加密功能的 Trident 存储后端配置。
在创建配置 Kerberos 加密的存储后端配置文件时,可以使用 spec.nfsMountOptions 参数指定三个不同版本的 Kerberos 加密之一:
-
spec.nfsMountOptions: sec=krb5(身份验证和加密) -
spec.nfsMountOptions: sec=krb5i(具有身份保护的身份验证和加密) -
spec.nfsMountOptions: sec=krb5p(具有身份和隐私保护的身份验证和加密)
仅指定一个 Kerberos 级别。如果在参数列表中指定多个 Kerberos 加密级别,则仅使用第一个选项。
-
在托管群集上,使用以下示例创建存储后端配置文件。用您环境中的信息替换括号 <> 中的值:
apiVersion: v1 kind: Secret metadata: name: backend-ontap-nas-secret type: Opaque stringData: clientID: <CLIENT_ID> clientSecret: <CLIENT_SECRET> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-ontap-nas spec: version: 1 storageDriverName: "ontap-nas" managementLIF: <STORAGE_VM_MGMT_LIF_IP_ADDRESS> dataLIF: <PROTOCOL_LIF_FQDN_OR_IP_ADDRESS> svm: <STORAGE_VM_NAME> username: <STORAGE_VM_USERNAME_CREDENTIAL> password: <STORAGE_VM_PASSWORD_CREDENTIAL> nasType: nfs nfsMountOptions: ["sec=krb5i"] #can be krb5, krb5i, or krb5p qtreesPerFlexvol: credentials: name: backend-ontap-nas-secret -
使用上一步中创建的配置文件创建后端:
tridentctl create backend -f <backend-configuration-file>如果后端创建失败,则后端配置有问题。您可以通过运行以下命令查看日志以确定原因:
tridentctl logs在识别并更正配置文件的问题后,您可以再次运行 create 命令。
创建存储类
您可以创建存储类,以使用 Kerberos 加密配置卷。
在创建存储类对象时,可以使用 mountOptions 参数指定 Kerberos 加密的三个不同版本之一:
-
mountOptions: sec=krb5(身份验证和加密) -
mountOptions: sec=krb5i(具有身份保护的身份验证和加密) -
mountOptions: sec=krb5p(具有身份和隐私保护的身份验证和加密)
仅指定一个 Kerberos 级别。如果在参数列表中指定多个 Kerberos 加密级别,则仅使用第一个选项。如果在存储后端配置中指定的加密级别与在存储类对象中指定的级别不同,则存储类对象优先。
-
使用以下示例创建 StorageClass Kubernetes 对象:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ontap-nas-sc provisioner: csi.trident.netapp.io mountOptions: - sec=krb5i #can be krb5, krb5i, or krb5p parameters: backendType: ontap-nas storagePools: ontapnas_pool trident.netapp.io/nasType: nfs allowVolumeExpansion: true -
创建存储类:
kubectl create -f sample-input/storage-class-ontap-nas-sc.yaml -
确保已创建存储类:
kubectl get sc ontap-nas-sc此时将显示与以下内容类似的输出:
NAME PROVISIONER AGE ontap-nas-sc csi.trident.netapp.io 15h
配置卷
创建存储后端和存储类后,现在可以配置卷。有关说明,请参阅 "预配卷"。
使用 Azure NetApp Files 卷配置运行中的 Kerberos 加密
您可以在托管集群与单个 Azure NetApp Files 存储后端或 Azure NetApp Files 存储后端虚拟池之间的存储流量上启用 Kerberos 加密。
-
请确保已在托管红帽 OpenShift 群集上启用 Trident。
-
请确保您拥有该
tridentctl实用程序的访问权限。 -
通过注意要求并按照 "Azure NetApp Files 文档"中的说明,确保已为 Kerberos 加密准备 Azure NetApp Files 存储后端。
-
请确保您使用 Kerberos 加密的任何 NFSv4 卷配置正确。请参阅 NetApp NFSv4 域配置部分(第 13 页) "NetApp NFSv4 增强功能和最佳实践指南"。
创建存储后端
您可以创建包含 Kerberos 加密功能的 Azure NetApp Files 存储后端配置。
当您创建配置 Kerberos 加密的存储后端配置文件时,您可以将其定义为应在以下两种可能的级别之一应用:
-
使用
spec.kerberos字段的*存储后端级别* -
使用
spec.storage.kerberos字段的 虚拟池级别
在虚拟池级别定义配置时,将使用存储类中的标签选择池。
在任一级别,您都可以指定 Kerberos 加密的三个不同版本之一:
-
kerberos: sec=krb5(身份验证和加密) -
kerberos: sec=krb5i(具有身份保护的身份验证和加密) -
kerberos: sec=krb5p(具有身份和隐私保护的身份验证和加密)
-
在托管群集上,使用以下示例之一创建存储后端配置文件,具体取决于需要定义存储后端的位置(存储后端级别或虚拟池级别)。使用环境中的信息替换括号 <> 中的值:
存储后端级别示例apiVersion: v1 kind: Secret metadata: name: backend-tbc-secret type: Opaque stringData: clientID: <CLIENT_ID> clientSecret: <CLIENT_SECRET> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc spec: version: 1 storageDriverName: azure-netapp-files subscriptionID: <SUBSCRIPTION_ID> tenantID: <TENANT_ID> location: <AZURE_REGION_LOCATION> serviceLevel: Standard networkFeatures: Standard capacityPools: <CAPACITY_POOL> resourceGroups: <RESOURCE_GROUP> netappAccounts: <NETAPP_ACCOUNT> virtualNetwork: <VIRTUAL_NETWORK> subnet: <SUBNET> nasType: nfs kerberos: sec=krb5i #can be krb5, krb5i, or krb5p credentials: name: backend-tbc-secret虚拟池级别示例--- apiVersion: v1 kind: Secret metadata: name: backend-tbc-secret type: Opaque stringData: clientID: <CLIENT_ID> clientSecret: <CLIENT_SECRET> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc spec: version: 1 storageDriverName: azure-netapp-files subscriptionID: <SUBSCRIPTION_ID> tenantID: <TENANT_ID> location: <AZURE_REGION_LOCATION> serviceLevel: Standard networkFeatures: Standard capacityPools: <CAPACITY_POOL> resourceGroups: <RESOURCE_GROUP> netappAccounts: <NETAPP_ACCOUNT> virtualNetwork: <VIRTUAL_NETWORK> subnet: <SUBNET> nasType: nfs storage: - labels: type: encryption kerberos: sec=krb5i #can be krb5, krb5i, or krb5p credentials: name: backend-tbc-secret -
使用上一步中创建的配置文件创建后端:
tridentctl create backend -f <backend-configuration-file>如果后端创建失败,则后端配置有问题。您可以通过运行以下命令查看日志以确定原因:
tridentctl logs在识别并更正配置文件的问题后,您可以再次运行 create 命令。
创建存储类
您可以创建存储类,以使用 Kerberos 加密配置卷。
-
使用以下示例创建 StorageClass Kubernetes 对象:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sc-nfs provisioner: csi.trident.netapp.io parameters: backendType: azure-netapp-files trident.netapp.io/nasType: nfs selector: type=encryption -
创建存储类:
kubectl create -f sample-input/storage-class-sc-nfs.yaml -
确保已创建存储类:
kubectl get sc -sc-nfs此时将显示与以下内容类似的输出:
NAME PROVISIONER AGE sc-nfs csi.trident.netapp.io 15h
配置卷
创建存储后端和存储类后,现在可以配置卷。有关说明,请参阅 "预配卷"。