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 :
-
Déployez le pilote Amazon EFS Container Storage Interface (CSI) pour votre cluster Amazon EKS.
-
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.
-
Clonez le référentiel GitHub sur votre système local :
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
Accédez au répertoire exemple encryption_in_transit :
cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
-
Récupérez l’ID de votre système de fichiers Amazon EFS :
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
-
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.
-
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
-
Vérifiez que votre pod est en état de fonctionnement :
kubectl get pods
-
Répertoriez les volumes persistants dans l’espace de noms par défaut :
kubectl get pv
-
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 :
-
Déployez le pilote Amazon EFS CSI pour votre cluster Amazon EKS.
-
Activez le chiffrement au repos pour votre cluster Amazon EKS afin de créer un système de fichiers Amazon EFS.
-
Clonez le référentiel GitHub suivant sur votre système local :
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
-
Accédez au répertoire exemple de multiple_pods :
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
-
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": ""
},
]
}
-
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]
-
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
-
Vérifiez que votre pod est en état de fonctionnement :
kubectl get pods
-
Répertoriez les volumes persistants dans l’espace de noms par défaut :
kubectl get pv
-
Décrivez le volume persistant :
kubectl describe pv efs-pv
- 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