Comment puis-je monter un système de fichiers Amazon EFS chiffré sur un pod dans Amazon EKS ?

Lecture de 4 minute(s)
0

Je souhaite monter un système de fichiers Amazon Elastic File System (Amazon EFS) chiffré sur un pod d’Amazon Elastic Kubernetes Service (Amazon EKS).

Brève description

Vous pouvez chiffrer vos données en transit avec TLS ou au repos.

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente de l'interface AWS CLI.

Résolution

Chiffrer les données en transit avec TLS

Pour chiffrer vos données en transit à l’aide du protocole TLS, procédez comme suit :

  1. Déployez le pilote Amazon EFS Container Storage Interface (CSI) pour votre cluster Amazon EKS.

  2. Créez un système de fichiers Amazon EFS sans chiffrement pour votre cluster.
    Remarque : lorsque vous créez le système de fichiers, créez une cible de montage pour Amazon EFS dans toutes les zones de disponibilité où se trouvent vos nœuds EKS. 

  3. Clonez le référentiel GitHub sur votre système local :

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Accédez au répertoire exemple encryption_in_transit :

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Récupérez l’ID de votre système de fichiers Amazon EFS :

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Accédez au fichier pv.yaml dans le répertoire /examples/kubernetes/encryption_in_transit/specs/. Remplacez ensuite la valeur de VolumeHandle par le FileSystemId du système de fichiers Amazon EFS que vous montez. Exemple :

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs-pv
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: efs-sc
      csi:
        driver: efs.csi.aws.com
        volumeHandle: [FileSystemId]
        volumeAttributes:
          encryptInTransit: "true"

    Remarque : l’option de montage volumeAttributes: encryptInTransit active le chiffrement en transit.

  7. Déployez la classe de stockage, la réclamation de volume persistant, le volume persistant et le pod depuis le répertoire /examples/kubernetes/encryption_in_transit/specs/ :

    kubectl apply -f specs/storageclass.yaml
    kubectl apply -f specs/pv.yaml
    kubectl apply -f specs/claim.yaml
    kubectl apply -f specs/pod.yaml
  8. Vérifiez que votre pod est en état de fonctionnement :

    kubectl get pods
  9. Répertoriez les volumes persistants dans l’espace de noms par défaut :

    kubectl get pv
  10. Décrivez le volume persistant :

kubectl describe pv efs-pv

Remarque : l’ID du système de fichiers Amazon EFS est répertorié sous la forme VolumeHandle. Vérifiez que les données sont écrites sur le système de fichiers Amazon EFS :

kubectl exec -ti efs-app -- tail -f /data/out.txt

Chiffrer les données au repos

Pour chiffrer les données au repos, procédez comme suit :

  1. Déployez le pilote Amazon EFS CSI pour votre cluster Amazon EKS.

  2. Activez le chiffrement au repos pour votre cluster Amazon EKS afin de créer un système de fichiers Amazon EFS.

  3. Clonez le référentiel GitHub suivant sur votre système local :

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Accédez au répertoire exemple de multiple_pods :

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Récupérez l’ID de votre système de fichiers Amazon EFS :

    aws efs describe-file-systems

    Exemple de sortie :

    { "FileSystems": [
     {
     "SizeInBytes": {
     "Timestamp": ,
     "Value":
     },
     "ThroughputMode": "",
     "CreationToken": "",
     "Encrypted": true,
     "CreationTime": ,
     "PerformanceMode": "",
     "FileSystemId": "[FileSystemId]",
     "NumberOfMountTargets": ,
     "LifeCycleState": "available",
     "KmsKeyId": "arn:aws:kms:ap-southeast-1:<account_id>:key/854df848-fdd1-46e3-ab97-b4875c4190e6",
     "OwnerId": ""
     },
     ]
    }
  6. Accédez au fichier pv.yaml dans le répertoire /examples/kubernetes/multiple_pods/specs/. Remplacez ensuite la valeur de volumeHandle par le FileSystemId du système de fichiers Amazon EFS que vous montez. Exemple :

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: efs-pv
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: efs-sc
      csi:
        driver: efs.csi.aws.com
        volumeHandle: [FileSystemId]
  7. Déployez la classe de stockage, la réclamation de volume persistant, le volume persistant et le pod depuis le répertoire /examples/kubernetes/multiple_pods/specs/ :

    kubectl apply -f specs/storageclass.yaml  
    kubectl apply -f specs/pv.yaml
    kubectl apply -f specs/claim.yaml
    kubectl apply -f specs/pod1.yaml
    kubectl apply -f specs/pod2.yaml
  8. Vérifiez que votre pod est en état de fonctionnement :

    kubectl get pods
  9. Répertoriez les volumes persistants dans l’espace de noms par défaut :

    kubectl get pv
  10. Décrivez le volume persistant :

kubectl describe pv efs-pv
  1. Vérifiez que les données sont écrites sur le système de fichiers Amazon EFS :
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois