Crittografia in transito per IBM Cloud File Storage for VPC
Cloud privato virtuale
Utilizza la crittografia in transito (EIT) per proteggere i dati durante il trasferimento tra i nodi di lavoro e il servizio File Storage for VPC. Questo argomento tratta l'EIT sia per le condivisioni di file zonali che utilizzano il profilo "
dp2 " sia per le condivisioni di file regionali che utilizzano il profilo " rfs ".
Condivisioni di file a livello di zona — Configurazione della crittografia in transito
Se si decide di utilizzare la crittografia in transito, è necessario trovare un equilibrio tra i requisiti di sicurezza e le esigenze in termini di prestazioni. La crittografia dei dati in transito può influire sulle prestazioni, poiché i dati devono essere crittografati e decrittografati agli endpoint. Per ulteriori informazioni, consultare la sezione " Crittografia VPC in transito ".
Sui nodi di lavoro RHCOS ( CoreOS ), l'EIT non è attivo finché il nodo non viene riavviato dopo che l'operatore ha installato i pacchetti necessari. Quando si abilita l'EIT, è necessario pianificare un riavvio graduale.
- EIT è disponibile per le versioni del cluster 4.16 e successive.
- Per impostazione predefinita, le condivisioni di file vengono crittografate a riposo tramite la crittografia gestita d IBM.
- Per utilizzare EIT con i cluster “Secure by Default”, è necessario aggiungere la seguente regola in uscita al gruppo di sicurezza “
kube-<clusterID>”. Questa regola viene aggiunta automaticamente per i cluster ROKS a partire dalla versione 4.18 e successive. Per le versioni precedenti di Cluster, aggiungere la regola manualmente.- Protocollo: Qualsiasi
- Tipo di fonte: Qualsiasi
- Fonte:
0.0.0.0/0 - Destinazione:
169.254.169.254
- L'EIT non è disponibile per i volumi configurati in modo statico. Per configurare EIT, è necessario utilizzare il provisioning dinamico.
- I pacchetti EIT vengono aggiornati automaticamente nel cluster quando EIT è abilitato.
- La crittografia dei dati in transito può influire sulle prestazioni. L'impatto dipende dalle caratteristiche del carico di lavoro. I carichi di lavoro che eseguono scritture sincrone o aggirano la cache VSI, come i database, potrebbero subire un impatto significativo sulle prestazioni quando la funzione EIT è abilitata. Per valutare l'impatto, confronta il tuo carico di lavoro con e senza EIT.
- Anche senza l’EIT, i dati transitano attraverso una rete di data center sicura. Per ulteriori informazioni sulla sicurezza della rete, consulta le sezioni " Sicurezza nella tua VPC " e "Protezione dei servizi di infrastruttura del Virtual Private Cloud(VPC)con restrizioni basate sul contesto ".
File Storage for VPC è considerato un servizio certificato per i servizi finanziari solo quando è abilitata la crittografia in transito. Per ulteriori informazioni, consulta la sezione " Che cos’è un servizio Financial Services Validated?".
Seguire la procedura riportata di seguito per configurare la crittografia in transito (EIT) per le condivisioni di file nel cluster di Red Hat OpenShift on IBM Cloud. L'abilitazione di EIT installa i pacchetti necessari sui nodi di lavoro.
-
Prendi nota dei pool di worker nel tuo cluster in cui desideri abilitare l'EIT.
-
Modifica il file
addon-vpc-file-csi-driver-configmap.oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system -
Nella ConfigMap, imposta “
ENABLE_EIT: "true"” e aggiungi i pool di worker per i quali desideri abilitare l’EIT nel campo “EIT_ENABLED_WORKER_POOLS”. Ad esempio:"wp1,wp2". È inoltre possibile impostare i parametriEIT_METADATA_RETRY_COUNTeEIT_METADATA_RETRY_INTERVALper controllare il comportamento dei tentativi di recupero durante il recupero dei metadati dell'istanza.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 -
Dopo aver abilitato l'EIT, salvare e chiudere la configmap.
Il completamento di questa fase può richiedere fino a 5 minuti, poiché l'operatore deve installare i pacchetti EIT sui nodi di lavoro specificati.
-
Per verificare che l'EIT sia abilitato, controllare gli eventi della configmap
file-csi-driver-statusper confermare che l'installazione dell'EIT sia avvenuta correttamente su ciascun nodo worker. Cerca gli eventi "Package installation successful" per ciascun nodo nei pool di worker specificati.oc describe cm file-csi-driver-status -n kube-systemOutput di esempio
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" -
Se i pool di worker contengono nodi RHCOS ( CoreOS ), eseguire il drain e il riavvio di ciascun nodo interessato per attivare i pacchetti EIT. L'EIT non è operativo sui nodi RHCOS finché il nodo non viene riavviato. Lo svuotamento del nodo garantisce innanzitutto che i carichi di lavoro in esecuzione vengano riprogrammati su altri nodi prima del riavvio, evitando così qualsiasi impatto sulle applicazioni di produzione.
Svuotare il nodo per terminare in modo sicuro tutti i pod in esecuzione.
oc drain <node-name> --ignore-daemonsets --delete-emptydir-dataRiavvia il nodo in stato di drenaggio.
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_IDUna volta che il nodo è tornato online e si trova nello stato "
Ready", rimuovine il blocco per consentire nuovamente la pianificazione dei carichi di lavoro su di esso.oc uncordon <node-name> -
Selezionare una classe di archiviazione preinstallata che supporti EIT oppure crearne una personalizzata.
- Crea un PVC utilizzando la classe di archiviazione “
ibmc-vpc-file-eit”. - Crea una classe di archiviazione personalizzata e imposta il parametro “
isEITEnabled” su “true”.
- Crea un PVC utilizzando la classe di archiviazione “
-
Crea un PVC che faccia riferimento alla classe di archiviazione selezionata, quindi distribuisci un'app che utilizzi il tuo PVC.
Se, dopo aver completato questi passaggi, dovessi riscontrare problemi con EIT, consulta le seguenti sezioni dedicate alla risoluzione dei problemi:
Condivisione di file a livello regionale — Configurazione della crittografia in transito (Beta)
Il servizio "Regional File Storage " (RFS) con crittografia in transito (EIT) offre connessioni NFS sicure e crittografate con il protocollo " TLS " per la condivisione di file tra più zone di disponibilità all'interno di una regione. Il componente aggiuntivo " File Storage for VPC " gestisce automaticamente un sidecar stunnel su ciascun nodo di lavoro, che incapsula tutto il traffico NFS in TLS 1.3 o versioni successive, in modo trasparente per le vostre applicazioni.
Per ulteriori informazioni su Regional File Storage, consultare la panoramica sull'archiviazione regionale dei file.
RFS con EIT è disponibile solo come versione beta e se ne consiglia l'uso esclusivamente a scopo sperimentale. Non utilizzare questa funzionalità nei carichi di lavoro di produzione.
Modalità di funzionamento
Quando si crea un PVC con classe di archiviazione RFS EIT e un pod lo monta, l'add-on configura automaticamente un tunnel stunnel crittografato sul nodo worker e instrada attraverso di esso tutto il traffico NFS. La crittografia è trasparente per le applicazioni: queste continuano a utilizzare i collegamenti standard NFS, mentre tutti i dati in transito sono protetti con TLS 1.3 o versioni successive.
Il ciclo di vita del tunnel è interamente gestito dal driver: viene creato quando un pod monta il volume e viene smantellato quando il pod viene eliminato.
Prima di iniziare
- Il componente aggiuntivo " File Storage for VPC " ( versione 2.0 o successive ) è installato sul cluster. Per ulteriori informazioni, consultare la sezione " Abilitazione del componente aggiuntivo del cluster ' IBM Cloud File Storage for VPC '".
Limitazioni
Prima di abilitare RFS EIT, prendere visione delle seguenti limitazioni.
- Numero massimo di collegamenti PVC per nodo: 300, una porta per ogni PVC nell'intervallo di porte 11300–11599, con vincolo su
127.0.0.1. - Conflitto di porte per le applicazioni con
hostNetwork: true: i pod delle applicazioni che utilizzanohostNetwork: truee si collegano a127.0.0.1nell'intervallo di porte 11300–11599 potrebbero entrare in conflitto con i montaggi PVC RFS EIT esistenti. - Si applicano inoltre tutte le limitazioni previste per VPC File Storage.
Configurazione della crittografia in transito per Regional File Storage
Seguire la procedura riportata di seguito per configurare una condivisione file regionale con crittografia in transito.
-
Creare una classe di archiviazione che specifichi il profilo "
rfs" e imposti "isEITEnabled: "true"". Salva il seguente codice YAML in un file denominato “rfs-eit-sc.yaml”.Per RFS EIT sono richiesti i seguenti parametri:
profile: "rfs",isENIEnabled: "true",isEITEnabled: "true"eproto=tcpnelle opzioni di montaggio.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 -
Applicare la classe di archiviazione.
oc apply -f rfs-eit-sc.yaml -
Creare un PVC che faccia riferimento alla classe di archiviazione “
ibmc-vpc-file-rfs-eit-custom”. Salva il seguente codice YAML in un file denominato “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 -
Applicare il PVC.
oc apply -f rfs-eit-pvc.yaml -
Crea un pod che monti il PVC. Salva il seguente codice YAML in un file denominato “
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 -
Applicare la capsula.
oc apply -f rfs-eit-pod.yaml
Verifica che la crittografia in transito sia attiva
Una volta avviato il pod, verificare che la crittografia in transito funzioni correttamente controllando la destinazione della condivisione dei file. Il target di montaggio deve visualizzare " Transit Encryption: stunnel " per confermare che l'EIT sia attivo.
-
Attendere che il pod raggiunga lo stato “
Running” e che il PVC raggiunga lo stato “Bound”.oc get pod my-rfs-eit-app oc get pvc my-rfs-eit-pvc -
Recupera l'ID della condivisione file e l'ID della destinazione di montaggio dal volume persistente.
oc describe pv <pv-name> | grep -E "fileShareId|fileShareTargetId"Prendere nota dei valori “
fileShareId” e “fileShareTargetId” riportati nell’output. Li utilizzerai nel passaggio successivo per verificare l'EIT sul lato VPC. -
Verificare che la destinazione di montaggio della condivisione file indichi “
stunnel” come metodo di crittografia di transito.ibmcloud is share-mount-target FILE_SHARE_ID FILE_SHARE_TARGET_ID | grep "Transit Encryption"Esempio di output che conferma che l'EIT è attivo:
Transit Encryption stunnel
Risoluzione dei problemi di RFS EIT
Per assistenza sugli errori più comuni relativi a RFS EIT, consultare la sezione " Risoluzione dei problemi relativi alla crittografia " File Storage " regionale durante il trasferimento ".