Chiffrement en transit pour IBM Cloud File Storage for VPC
Cloud privé virtuel
Utilisez le chiffrement en transit (EIT) pour protéger les données lors de leur transfert entre vos nœuds de travail et le service File Storage for VPC. Cette rubrique traite de l'EIT ( dp2 ) tant pour les partages de fichiers zonaux
utilisant le profil « » que pour les partages de fichiers régionaux utilisant le profil « rfs ».
Partages de fichiers par zone — Configuration du chiffrement en transit
Si vous choisissez d'utiliser le chiffrement en transit, veillez à trouver un juste équilibre entre vos exigences en matière de sécurité et vos besoins en termes de performances. Le chiffrement des données en transit peut nuire aux performances, car celles-ci doivent être chiffrées puis déchiffrées au niveau des terminaux. Pour plus d'informations, consultez la section « Chiffrement VPC en transit ».
Sur les nœuds de travail RHCOS ( CoreOS ), l'EIT n'est pas actif tant que le nœud n'a pas été redémarré après l'installation des paquets requis par l'opérateur. Prévoyez un redémarrage progressif lorsque vous activez l'EIT.
- EIT est disponible pour les versions en cluster d' 4.16. et ultérieures.
- Par défaut, les partages de fichiers sont chiffrés au repos grâce au chiffrement géré par l' IBM.
- Pour utiliser EIT avec des clusters « Secure by Default », vous devez ajouter la règle de sortie suivante au groupe de sécurité «
kube-<clusterID>». Cette règle est ajoutée automatiquement pour les clusters ROKS à partir de la version 4.18. Pour les versions plus anciennes du cluster, ajoutez la règle manuellement.- Protocole: au choix
- Type de source: tout
- Source:
0.0.0.0/0 - Destinataire:
169.254.169.254
- La fonctionnalité EIT n'est pas disponible pour les volumes provisionnés de manière statique. Pour configurer l'EIT, vous devez utiliser l'approvisionnement dynamique.
- Les paquets EIT sont automatiquement mis à jour dans votre cluster lorsque l'EIT est activé.
- Le chiffrement des données en transit peut avoir un impact sur les performances. L'impact dépend des caractéristiques de votre charge de travail. Les charges de travail qui effectuent des écritures synchrones ou qui contournent la mise en cache VSI, telles que les bases de données, peuvent subir une baisse significative de leurs performances lorsque la fonctionnalité EIT est activée. Pour évaluer l'impact, comparez les performances de votre charge de travail avec et sans EIT.
- Même sans l'EIT, les données transitent par un réseau de centres de données sécurisé. Pour plus d'informations sur la sécurité réseau, consultez les articles « Sécurité dans votre VPC » et « Protection des services d'infrastructure du cloud privé virtuel(VPC)à l'aide de restrictions basées sur le contexte ».
File Storage for VPC Ce service n'est considéré comme un service certifié pour les services financiers que lorsque le chiffrement en transit est activé. Pour plus d'informations, consultez la rubrique « Qu'est-ce qu'un service certifié « Financial Services Validated »? ».
Suivez les étapes ci-dessous pour configurer le chiffrement en transit (EIT) pour les partages de fichiers dans votre cluster « Red Hat OpenShift on IBM Cloud ». L'activation d'EIT installe les paquets requis sur vos nœuds de travail.
-
Notez les pools de travailleurs de votre cluster sur lesquels vous souhaitez activer l'EIT.
-
Modifiez le fichier «
addon-vpc-file-csi-driver-configmap».oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system -
Dans la carte de configuration, définissez «
ENABLE_EIT: "true"» et ajoutez les pools de travailleurs pour lesquels vous souhaitez activer l'EIT dans le champ «EIT_ENABLED_WORKER_POOLS». Par exemple :"wp1,wp2". Vous pouvez également définir les paramètresEIT_METADATA_RETRY_COUNTetEIT_METADATA_RETRY_INTERVALpour contrôler le comportement des tentatives de récupération des métadonnées d'instance.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 -
Une fois l'EIT activé, enregistrez puis fermez le configmap.
Cette étape peut prendre jusqu'à 5 minutes, le temps que l'opérateur installe les paquets EIT sur les nœuds de travail spécifiés.
-
Pour vérifier que l'EIT est activé, consultez les événements de la configmap «
file-csi-driver-status» afin de vous assurer que l'installation de l'EIT s'est bien déroulée sur chaque nœud de travail. Recherchez les événements «Package installation successful» pour chaque nœud de vos pools de travailleurs spécifiés.oc describe cm file-csi-driver-status -n kube-systemExemple de sortie
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 vos pools de travail comportent des nœuds RHCOS ( CoreOS ), videz et redémarrez chaque nœud concerné afin d'activer les paquets EIT. L'EIT ne fonctionne pas sur les nœuds RHCOS tant que le nœud n'a pas été redémarré. Le fait de vider le nœud au préalable garantit que les charges de travail en cours d'exécution sont réaffectées à d'autres nœuds avant le redémarrage, ce qui évite tout impact sur les applications de production.
Videz le nœud afin de fermer en toute sécurité tous les pods en cours d'exécution.
oc drain <node-name> --ignore-daemonsets --delete-emptydir-dataRedémarrez le nœud mis hors tension.
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_IDUne fois que le nœud est de nouveau en ligne et dans l'état «
Ready», désactivez-le pour permettre à nouveau la planification de charges de travail sur celui-ci.oc uncordon <node-name> -
Sélectionnez une classe de stockage préinstallée prenant en charge l'EIT ou créez votre propre classe de stockage.
- Créez un PVC à l'aide de la classe de stockage «
ibmc-vpc-file-eit». - Créez votre propre classe de stockage et définissez le paramètre «
isEITEnabled» sur «true».
- Créez un PVC à l'aide de la classe de stockage «
-
Créez un PVC faisant référence à la classe de stockage que vous avez sélectionnée, puis déployez une application qui utilise votre PVC.
Si vous rencontrez des problèmes avec EIT après avoir suivi ces étapes, consultez les rubriques de dépannage suivantes :
Partages de fichiers régionaux — Configuration du chiffrement en transit (bêta)
Le service « Regional File Storage » (RFS) avec chiffrement en transit (EIT) fournit des connexions sécurisées de type « NFS », chiffrées selon le protocole « TLS », pour le partage de fichiers entre plusieurs zones de disponibilité au sein d'une même région. Le module complémentaire « File Storage for VPC » gère automatiquement un sidecar stunnel sur chaque nœud de travail, qui encapsule tout le trafic NFS dans TLS 1.3 ou une version supérieure, de manière transparente pour vos applications.
Pour en savoir plus sur l' File Storage régionale, consultez le site Présentation du stockage régional de fichiers.
La fonctionnalité RFS avec EIT n'est disponible qu'en version bêta et est recommandée uniquement à des fins expérimentales. N'utilisez pas cette fonctionnalité dans les charges de travail de production.
Fonctionnement
Lorsque vous créez un PVC avec une classe de stockage RFS EIT et qu'un pod le monte, l'extension configure automatiquement un tunnel stunnel chiffré sur le nœud de travail et achemine tout le trafic NFS via ce tunnel. Le chiffrement est transparent pour vos applications : celles-ci continuent d'utiliser des montages standard de type « NFS », tandis que toutes les données en transit sont protégées par le protocole TLS 1.3 ou une version supérieure.
Le cycle de vie du tunnel est entièrement géré par le pilote : il est créé lorsqu'un pod monte le volume et supprimé lorsque le pod est supprimé.
Avant de commencer
- Le module complémentaire « File Storage for VPC », version 2.0 ou ultérieure, est installé sur votre cluster. Pour plus d'informations, consultez la section « Activation du module complémentaire de cluster « IBM Cloud File Storage for VPC » ».
Limitations
Veuillez prendre connaissance des restrictions suivantes avant d'activer la fonctionnalité RFS EIT.
- Nombre maximal de connexions PVC par nœud : 300, un port par PVC dans la plage de ports 11300–11599, lié à
127.0.0.1. - Conflit de ports pour les applications utilisant
hostNetwork: true: les pods d'application qui utilisenthostNetwork: trueet se connectent à127.0.0.1dans la plage de ports 11300–11599 peuvent entrer en conflit avec des montages PVC EIT RFS existants. - Toutes les restrictions applicables à l' File Storage VPC s'appliquent également.
Configuration du chiffrement en transit pour Regional File Storage
Suivez les étapes ci-dessous pour configurer un partage de fichiers régional avec chiffrement en transit.
-
Créez une classe de stockage qui spécifie le profil «
rfs» et définit la valeur «isEITEnabled: "true"». Enregistrez le code YAML suivant dans un fichier nommé «rfs-eit-sc.yaml».Les paramètres suivants sont obligatoires pour RFS EIT :
profile: "rfs",isENIEnabled: "true",isEITEnabled: "true"etproto=tcpdans les options de montage.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 -
Appliquer la classe de stockage.
oc apply -f rfs-eit-sc.yaml -
Créez un PVC faisant référence à la classe de stockage «
ibmc-vpc-file-rfs-eit-custom». Enregistrez le code YAML suivant dans un fichier nommé «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 -
Appliquez le PVC.
oc apply -f rfs-eit-pvc.yaml -
Créez un pod qui monte le PVC. Enregistrez le code YAML suivant dans un fichier nommé «
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 -
Appliquez la capsule.
oc apply -f rfs-eit-pod.yaml
Vérification que le chiffrement en transit est activé
Une fois le pod lancé, vérifiez que le chiffrement en transit fonctionne correctement en contrôlant la cible de partage de fichiers. La cible de montage doit afficher « Transit Encryption: stunnel » pour confirmer que l'EIT est
actif.
-
Attendez que le pod passe à l'état «
Running» et que le PVC passe à l'état «Bound».oc get pod my-rfs-eit-app oc get pvc my-rfs-eit-pvc -
Récupérez l'ID du partage de fichiers et l'ID de la cible de montage à partir du volume persistant.
oc describe pv <pv-name> | grep -E "fileShareId|fileShareTargetId"Notez les valeurs «
fileShareId» et «fileShareTargetId» figurant dans le résultat. Vous les utiliserez à l'étape suivante pour vérifier l'EIT du côté du VPC. -
Vérifiez que la cible de montage du partage de fichiers indique «
stunnel» comme méthode de chiffrement de transit.ibmcloud is share-mount-target FILE_SHARE_ID FILE_SHARE_TARGET_ID | grep "Transit Encryption"Exemple de sortie confirmant que l'EIT est activé :
Transit Encryption stunnel
Dépannage de RFS EIT
Pour obtenir de l'aide concernant les erreurs courantes liées à l'EIT RFS, consultez la section « Dépannage du chiffrement des données en transit de l' File Storage e régionale ».