Saltar al contenido

¿Cómo puedo montar un sistema de archivos cifrado de Amazon EFS en un pod de Amazon EKS?

5 minutos de lectura
0

Quiero montar un sistema de archivos cifrado de Amazon Elastic File System (Amazon EFS) en un pod de Amazon Elastic Kubernetes Service (Amazon EKS).

Resolución

Puedes cifrar los datos de tu sistema de archivos de Amazon EFS mientras estén en estado de datos en tránsito y datos en reposo. Los datos en tránsito están configurados de forma predeterminada.

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de errores de la AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Cifrado de datos en tránsito con TLS

Para cifrar los datos en tránsito con TLS, sigue estos pasos:

  1. Implementa el controlador de interfaz de almacenamiento en contenedores (CSI) de Amazon EFS para tu clúster de Amazon EKS.

  2. Crea un sistema de archivos de Amazon EFS.
    Nota: Al crear el sistema de archivos, crea un destino de montaje para Amazon EFS en todas las zonas de disponibilidad en las que se encuentran los nodos de EKS.

  3. Clona el repositorio de GitHub en tu sistema local.

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Ve al directorio de ejemplo: encryption_in_transit:

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Para recuperar el ID del sistema de archivos de Amazon EFS, ejecuta el siguiente comando describe-file-systems:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Abre al archivo pv.yaml en el directorio /examples/kubernetes/encryption_in_transit/specs/. A continuación, sustituye el valor de VolumeHandle por el FileSystemId del sistema de archivos de Amazon EFS que debe montarse.
    El archivo pv.yaml debe tener un aspecto similar al siguiente:

    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"

    Nota: Sustituye FileSystemId por el ID del sistema de archivos de Amazon EFS. La opción de montaje volumeAttributes: encryptInTransit activa el cifrado en tránsito.

  7. Despliega la clase de almacenamiento, la reclamación de volumen persistente, el volumen persistente y el pod desde el directorio: /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. Para comprobar que el pod está en ejecución, ejecuta el siguiente comando:

    kubectl get pods
  9. Para enumerar los volúmenes persistentes en el espacio de nombres predeterminado, ejecuta el siguiente comando:

    kubectl get pv
  10. Para describir el volumen persistente, ejecuta el siguiente comando:

kubectl describe pv efs-pv

Nota: El ID del sistema de archivos de Amazon EFS aparece como VolumeHandle. Para comprobar que los datos están escritos en el sistema de archivos de Amazon EFS, ejecuta el siguiente comando:

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

Cómo cifrar datos en reposo

Nota: Después de crear un sistema de archivos EFS, no puedes cambiar su configuración de cifrado. Esto significa que no puedes modificar un sistema de archivos no cifrado para cifrarlo.

Para cifrar los datos en reposo, sigue estos pasos:

  1. Despliega el controlador CSI de Amazon EFS para tu clúster de Amazon EKS.

  2. Crea un sistema de archivos de Amazon EFS con el cifrado en reposo activo.
    Nota: La consola de administración de AWS activa automáticamente el cifrado en reposo con una clave de AWS Key Management Service (AWS KMS) administrada por AWS. La CLI de AWS y el SDK requieren que actives el cifrado de forma explícita.

  3. Clona el siguiente repositorio de GitHub en tu sistema local:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Ve al directorio de ejemplo multiple_pods:

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Para recuperar el ID del sistema de archivos de Amazon EFS, ejecuta el siguiente comando:

    aws efs describe-file-systems

    Resultado de ejemplo:

    {
      "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. Abre al archivo pv.yaml en el directorio: /examples/kubernetes/multiple_pods/specs/. A continuación, sustituye el valor de volumeHandle por el FileSystemId del sistema de archivos Amazon EFS que debe montarse.
    El archivo pv.yaml debe tener un aspecto similar al siguiente:

    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

    Nota: Sustituye FileSystemId por el ID del sistema de archivos de Amazon EFS.

  7.  Despliega la clase de almacenamiento, la reclamación de volumen persistente, el volumen persistente y el pod desde el directorio /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. Para comprobar que el pod está en ejecución, ejecuta el siguiente comando:

    kubectl get pods
  9. Para enumerar los volúmenes persistentes en el espacio de nombres predeterminado, ejecuta el siguiente comando:

    kubectl get pv
  10. Para describir el volumen persistente, ejecuta el siguiente comando:

kubectl describe pv efs-pv
  1. Para comprobar que los datos están escritos en el sistema de archivos de Amazon EFS, ejecuta los siguientes comandos:
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
OFICIAL DE AWSActualizada hace 3 meses