Passer au contenu

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

Lecture de 5 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).

Résolution

Vous pouvez chiffrer vos données dans le système de fichiers Amazon EFS lorsqu'elles sont en transit et au repos. Les données en transit sont définies par défaut.

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 à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

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éer un système de fichiers Amazon EFS
    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 à l’exemple de répertoire encryption_in_transit :

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Pour récupérer l'ID du système de fichiers Amazon EFS, exécutez la commande describe-file-systems suivante :

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Ouvrez le 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.
    Le fichier pv.yaml doit se présenter comme suit :

    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 : remplacez FileSystemId par l'ID du système de fichiers Amazon EFS. 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. Pour vérifier que le pod est en état de fonctionnement, exécutez la commande suivante :

    kubectl get pods
  9. Pour répertorier les volumes persistants dans l'espace de noms par défaut, exécutez la commande suivante :

    kubectl get pv
  10. Pour décrire le volume persistant, exécutez la commande suivante :

kubectl describe pv efs-pv

Remarque : l’ID du système de fichiers Amazon EFS est répertorié sous la forme VolumeHandle. Pour vérifier que les données sont écrites sur le système de fichiers Amazon EFS, exécutez la commande suivante :

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

Chiffrer les données au repos

Remarque : après avoir créé un système de fichiers EFS, vous ne pouvez pas modifier ses paramètres de chiffrement. Cela signifie que vous ne pouvez pas chiffrer un système de fichiers actuellement non chiffré.

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. Créez un système de fichiers Amazon EFS avec le chiffrement au repos actif.
    Remarque : la console de gestion AWS active automatiquement le chiffrement au repos à l'aide d'une clé AWS Key Management Service (AWS KMS) gérée par AWS. L'AWS CLI et le kit SDK nécessitent que vous activiez le chiffrement de manière explicite.

  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. Pour récupérer l'ID du système de fichiers Amazon EFS, exécutez la commande suivante :

    aws efs describe-file-systems

    Exemple de sortie :

    {
      "FileSystems": [
        {
          "SizeInBytes": {
            "Timestamp": **timestamp**,
            "Value": **value**
          },
          "ThroughputMode": "**throughput-mode**",
          "CreationToken": "**creation-token**",
          "Encrypted": true,
          "CreationTime": **creation-time**,
          "PerformanceMode": "**performance-mode**",
          "FileSystemId": "**file-system-id**",
          "NumberOfMountTargets": **number**,
          "LifeCycleState": "available",
          "KmsKeyId": "arn:aws:kms:ap-southeast-1:**account-id**:key/**key-id**",
          "OwnerId": "**owner-id**"
        }
      ]
    }
  6. Ouvrez le 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.
    Le fichier pv.yaml doit se présenter comme suit :

    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

    Remarque : remplacez FileSystemId par l'ID du système de fichiers Amazon EFS.

  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. Pour vérifier que le pod est en état de fonctionnement, exécutez la commande suivante :

    kubectl get pods
  9. Pour répertorier les volumes persistants dans l'espace de noms par défaut, exécutez la commande suivante :

    kubectl get pv
  10. Pour décrire le volume persistant, exécutez la commande suivante :

kubectl describe pv efs-pv
  1. Pour vérifier que les données sont écrites sur le système de fichiers Amazon EFS, exécutez les commandes suivantes :
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS OFFICIELA mis à jour il y a 9 mois