Cifrado en tránsito para IBM Cloud File Storage for VPC
Nube privada virtual
Utiliza el cifrado en tránsito (EIT) para proteger los datos mientras se transfieren entre tus nodos de trabajo y el servicio File Storage for VPC. Este tema trata sobre la EIT tanto para los recursos compartidos de archivos zonales que utilizan
el perfil « dp2 » como para los recursos compartidos de archivos regionales que utilizan el perfil « rfs ».
Recursos compartidos de zona: configuración del cifrado en tránsito
Si decides utilizar el cifrado en tránsito, busca un equilibrio entre tus requisitos de seguridad y tus necesidades de rendimiento. El cifrado de los datos en tránsito puede afectar al rendimiento, ya que los datos deben cifrarse y descifrarse en los puntos finales. Para obtener más información, consulta « Cifrado de VPC en tránsito ».
En los nodos de trabajo de RHCOS ( CoreOS ), el EIT no se activa hasta que se reinicia el nodo después de que el operador haya instalado los paquetes necesarios. Prevé un reinicio progresivo cuando actives el EIT.
- EIT está disponible para las versiones de clúster « 4.16 » y posteriores.
- De forma predeterminada, los recursos compartidos de archivos se cifran en reposo mediante el cifrado gestionado por IBM.
- Para utilizar EIT con clústeres «Secure by Default», debes añadir la siguiente regla de salida al grupo de seguridad «
kube-<clusterID>». Esta regla se añade automáticamente en los clústeres de ROKS a partir de la versión 4.18 y posteriores. En el caso de versiones anteriores del clúster, añade la regla manualmente.- Protocolo: Cualquiera
- Tipo de fuente: Cualquiera
- Fuente:
0.0.0.0/0 - Destino:
169.254.169.254
- EIT no está disponible para volúmenes aprovisionados de forma estática. Para configurar EIT, debes utilizar el aprovisionamiento dinámico.
- Los paquetes de EIT se actualizan automáticamente en tu clúster cuando se activa EIT.
- El cifrado de los datos en tránsito puede afectar al rendimiento. El impacto depende de las características de tu carga de trabajo. Las cargas de trabajo que realizan escrituras sincrónicas o que eluden el almacenamiento en caché de VSI, como las bases de datos, podrían sufrir un impacto considerable en el rendimiento cuando se habilita EIT. Para evaluar el impacto, compara el rendimiento de tu carga de trabajo con y sin EIT.
- Incluso sin EIT, los datos circulan a través de una red de centros de datos segura. Para obtener más información sobre la seguridad de la red, consulta « Seguridad en tu VPC » y « Protección de los servicios de infraestructura de la nube privada virtual(VPC)mediante restricciones basadas en el contexto ».
File Storage for VPC Solo se considera un servicio validado para servicios financieros cuando el cifrado en tránsito está activado. Para obtener más información, consulta qué es un servicio validado por Financial Services.
Sigue los siguientes pasos para configurar el cifrado en tránsito (EIT) para los recursos compartidos de archivos en tu clúster de Red Hat OpenShift on IBM Cloud. Al habilitar EIT, se instalan los paquetes necesarios en los nodos de trabajo.
-
Anota los grupos de trabajadores de tu clúster en los que quieras habilitar EIT.
-
Edita el archivo «
addon-vpc-file-csi-driver-configmap».oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system -
En el ConfigMap, configura «
ENABLE_EIT: "true"» y añade los grupos de trabajadores en los que quieras habilitar EIT al campo «EIT_ENABLED_WORKER_POOLS». Por ejemplo:"wp1,wp2". También puedes configurar los parámetros «EIT_METADATA_RETRY_COUNT» y «EIT_METADATA_RETRY_INTERVAL» para controlar el comportamiento de los reintentos al recuperar los metadatos de la instancia.apiVersion: v1 data: EIT_ENABLED_WORKER_POOLS: "wp1,wp2" # Specify the worker pools where you want to enable EIT. If this field is blank, EIT is not enabled on any worker pools. ENABLE_EIT: "true" # Specify true/false EIT_METADATA_RETRY_COUNT: "3" # Number of retries for fetching instance metadata before an error is returned EIT_METADATA_RETRY_INTERVAL: "30" # Interval in seconds between each metadata fetch retry kind: ConfigMap metadata: creationTimestamp: "2024-06-18T09:45:48Z" labels: app.kubernetes.io/name: ibm-vpc-file-csi-driver name: addon-vpc-file-csi-driver-configmap namespace: kube-system ownerReferences: - apiVersion: csi.drivers.ibmcloud.io/v1 blockOwnerDeletion: true controller: true kind: VPCFileCSIDriver name: ibm-vpc-file-csi-driver uid: d3c8bbcd-24fa-4203-9352-4ab7aa72a055 resourceVersion: "1251777" uid: 5c9d6679-4135-458b-800d-217b34d27c75 -
Una vez habilitado el EIT, guarda y cierra el configmap.
Este paso puede tardar hasta 5 minutos en completarse, ya que el operador instala los paquetes de EIT en los nodos de trabajo especificados.
-
Para comprobar que EIT está habilitado, revisa los eventos del mapa de configuración «
file-csi-driver-status» para confirmar que la instalación de EIT se ha realizado correctamente en cada nodo de trabajo. Busca los eventos «Package installation successful» correspondientes a cada nodo de los grupos de trabajadores que hayas especificado.oc describe cm file-csi-driver-status -n kube-systemSalida de ejemplo
apiVersion: v1 data: EIT_ENABLED_WORKER_NODES: | default: - 10.240.0.10 - 10.240.0.8 PACKAGE_DEPLOYER_VERSION: v1.0.0 events: | - event: EnableVPCFileCSIDriver description: 'VPC File CSI Driver enable successful, DriverVersion: v2.0.3' timestamp: "2024-06-13 09:17:07" - event: EnableEITRequest description: 'Request received to enableEIT, workerPools: , check the file-csi-driver-status configmap for eit installation status on each node of each workerpool.' timestamp: "2024-06-13 09:17:31" - event: 'Enabling EIT on host: 10.240.0.10' description: 'Package installation successful on host: 10.240.0.10, workerpool: wp1' timestamp: "2024-06-13 09:17:48" - event: 'Enabling EIT on host: 10.240.0.8' description: 'Package installation successful on host: 10.240.0.8, workerpool: wp2' timestamp: "2024-06-13 09:17:48" -
Si tus grupos de trabajadores contienen nodos RHCOS ( CoreOS ), vacía y reinicia cada nodo afectado para activar los paquetes EIT. EIT no funciona en los nodos RHCOS hasta que se reinicia el nodo. Al vaciar primero el nodo, se garantiza que las cargas de trabajo en ejecución se reasignen a otros nodos antes del reinicio, lo que evita que las aplicaciones de producción se vean afectadas.
Drenar el nodo para expulsar de forma segura todos los pods en ejecución.
oc drain <node-name> --ignore-daemonsets --delete-emptydir-dataReinicia el nodo que se ha quedado sin energía.
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_IDUna vez que el nodo vuelva a estar en línea y en estado «
Ready», desactivá el «uncordon» para que se puedan volver a programar cargas de trabajo en él.oc uncordon <node-name> -
Selecciona una clase de almacenamiento preinstalada que admita EIT o crea tu propia clase de almacenamiento.
- Crea un PVC utilizando la clase de almacenamiento «
ibmc-vpc-file-eit». - Crea tu propia clase de almacenamiento y configura el parámetro «
isEITEnabled» en «true».
- Crea un PVC utilizando la clase de almacenamiento «
-
Crea un PVC que haga referencia a la clase de almacenamiento que hayas seleccionado y, a continuación, implementa una aplicación que utilice dicho PVC.
Si sigue teniendo problemas con EIT tras completar estos pasos, consulte los siguientes temas de resolución de problemas:
Recursos compartidos regionales: configuración del cifrado en tránsito (Beta)
El servicio «Regional File Storage » (RFS) con cifrado en tránsito (EIT) ofrece conexiones seguras y cifradas mediante el protocolo « TLS » ( NFS ) para compartir archivos entre varias zonas de disponibilidad dentro de una misma región. El complemento « File Storage for VPC » gestiona automáticamente un sidecar de stunnel en cada nodo de trabajo que envuelve todo el tráfico de NFS en TLS 1.3 o superior, de forma transparente para tus aplicaciones.
Para obtener más información sobre «Regional File Storage », consulta Resumen del almacenamiento regional de archivos.
RFS con EIT solo está disponible en versión beta y se recomienda su uso exclusivamente con fines experimentales. No utilices esta función en cargas de trabajo de producción.
Cómo funciona
Cuando se crea un PVC con una clase de almacenamiento RFS EIT y un pod lo monta, el complemento configura automáticamente un túnel stunnel cifrado en el nodo de trabajo y redirige todo el tráfico de NFS a través de él. El cifrado es transparente para tus aplicaciones: estas siguen utilizando montajes estándar de NFS, mientras que todos los datos en tránsito están protegidos con TLS 1.3 o una versión superior.
El ciclo de vida del túnel lo gestiona íntegramente el controlador: se crea cuando un pod monta el volumen y se desmonta cuando se elimina el pod.
Antes de empezar
- El complemento « File Storage for VPC », versión 2.0 o posterior, está instalado en tu clúster. Para obtener más información, consulta « Activación del complemento de clúster « IBM Cloud File Storage for VPC » ».
Limitaciones
Revisa las siguientes limitaciones antes de habilitar RFS EIT.
- Número máximo de conexiones PVC por nodo: 300, un puerto por PVC del rango de puertos 11300–11599, asignado a
127.0.0.1. - Conflicto de puertos para aplicaciones con
hostNetwork: true: Los pods de aplicaciones que utilizanhostNetwork: truey se vinculan a127.0.0.1en el rango de puertos 11300–11599 pueden entrar en conflicto con los montajes PVC de RFS EIT existentes. - También se aplican todas las restricciones que rigen para VPC File Storage.
Configuración del cifrado en tránsito para Regional File Storage
Sigue los siguientes pasos para configurar un recurso compartido de archivos regional con cifrado en tránsito.
-
Crea una clase de almacenamiento que especifique el perfil «
rfs» y establezca «isEITEnabled: "true"». Guarda el siguiente código YAML en un archivo llamado «rfs-eit-sc.yaml».Para RFS EIT se requieren los siguientes parámetros:
profile: "rfs",isENIEnabled: "true",isEITEnabled: "true"yproto=tcpen las opciones de montaje.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-vpc-file-rfs-eit-custom labels: app.kubernetes.io/name: ibm-vpc-file-csi-driver provisioner: vpc.file.csi.ibm.io parameters: profile: "rfs" # Regional File Storage profile billingType: "hourly" throughput: "1000" # Bandwidth in MB/s (25–8192 MB/s for RFS profile) encrypted: "false" encryptionKey: "" # Specify the CRK CRN if encrypted is true resourceGroup: "" # Defaults to the resource group in the storage secret store isENIEnabled: "true" # Required for RFS — enables ENI/VNI feature isEITEnabled: "true" # Enables encryption in transit with stunnel securityGroupIDs: "" # Defaults to the cluster security group kube-<clusterID> subnetID: "" # Defaults to an available subnet in the cluster VPC region: "" # Defaults to the region from the cluster node topology primaryIPID: "" # Optional: existing reserved IP ID (region is required) primaryIPAddress: "" # Optional: IP address for ENI/VNI (region and subnetID required) tags: "" uid: "0" gid: "0" classVersion: "1" mountOptions: - hard - nfsvers=4.1 - sec=sys - proto=tcp # Required for stunnel (encryption in transit) reclaimPolicy: "Delete" allowVolumeExpansion: true -
Aplica la clase de almacenamiento.
oc apply -f rfs-eit-sc.yaml -
Crea un PVC que haga referencia a la clase de almacenamiento «
ibmc-vpc-file-rfs-eit-custom». Guarda el siguiente código YAML en un archivo llamado «rfs-eit-pvc.yaml».apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-rfs-eit-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: ibmc-vpc-file-rfs-eit-custom -
Aplica el PVC.
oc apply -f rfs-eit-pvc.yaml -
Crea un pod que monte el PVC. Guarda el siguiente código YAML en un archivo llamado «
rfs-eit-pod.yaml».apiVersion: v1 kind: Pod metadata: name: my-rfs-eit-app spec: containers: - name: app image: nginx:latest volumeMounts: - name: rfs-eit-storage mountPath: /data volumes: - name: rfs-eit-storage persistentVolumeClaim: claimName: my-rfs-eit-pvc -
Aplica la cápsula.
oc apply -f rfs-eit-pod.yaml
Comprobación de que el cifrado en tránsito está activo
Una vez que se haya iniciado el pod, comprueba que el cifrado en tránsito funciona correctamente verificando el destino del recurso compartido de archivos. El objetivo de montaje debe mostrar « Transit Encryption: stunnel » para
confirmar que el EIT está activo.
-
Espera a que el pod alcance el estado «
Running» y el PVC alcance el estado «Bound».oc get pod my-rfs-eit-app oc get pvc my-rfs-eit-pvc -
Obtén el ID del recurso compartido y el ID del destino de montaje del volumen persistente.
oc describe pv <pv-name> | grep -E "fileShareId|fileShareTargetId"Toma nota de los valores «
fileShareId» y «fileShareTargetId» que aparecen en la salida. Los utilizarás en el siguiente paso para verificar el EIT en el lado de la VPC. -
Comprueba que el destino de montaje del recurso compartido de archivos indique «
stunnel» como método de cifrado de tránsito.ibmcloud is share-mount-target FILE_SHARE_ID FILE_SHARE_TARGET_ID | grep "Transit Encryption"Ejemplo de salida que confirma que EIT está activo:
Transit Encryption stunnel
Solución de problemas de RFS EIT
Si necesitas ayuda con los errores habituales de RFS EIT, consulta la sección « Solución de problemas del cifrado regional de File Storage en tránsito ».