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.

  1. Notez les pools de travailleurs de votre cluster sur lesquels vous souhaitez activer l'EIT.

  2. Modifiez le fichier « addon-vpc-file-csi-driver-configmap ».

    oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system
    
  3. 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ètres EIT_METADATA_RETRY_COUNT et EIT_METADATA_RETRY_INTERVAL pour 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
    
  4. 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.

  1. 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-system
    

    Exemple 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"
    
  2. 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-data
    

    Redémarrez le nœud mis hors tension.

    ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_ID
    

    Une 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>
    
  3. 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 ».
  4. 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

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 utilisent hostNetwork: true et se connectent à 127.0.0.1 dans 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.

  1. 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" et proto=tcp dans 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
    
  2. Appliquer la classe de stockage.

    oc apply -f rfs-eit-sc.yaml
    
  3. 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
    
  4. Appliquez le PVC.

    oc apply -f rfs-eit-pvc.yaml
    
  5. 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
    
  6. 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.

  1. 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
    
  2. 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.

  3. 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 ».

Etapes suivantes