Ir para o conteúdo

Como faço para montar um sistema de arquivos criptografado do Amazon EFS em um pod no Amazon EKS?

5 minuto de leitura
0

Quero montar um sistema de arquivos criptografado do Amazon Elastic File System (Amazon EFS) em um pod no Amazon Elastic Kubernetes Service (Amazon EKS).

Resolução

É possível criptografar seus dados em seu sistema de arquivos do Amazon EFS enquanto eles estão em estado de dados em trânsito e dados em repouso. Os dados em trânsito são definidos por padrão.

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Criptografe dados em trânsito com TLS

Para criptografar seus dados em trânsito com o TLS, conclua as seguintes etapas:

  1. Implante o driver Container Storage Interface (CSI) do Amazon EFS em seu cluster do Amazon EKS.

  2. Crie um sistema de arquivos do Amazon EFS.
    Observação: ao criar o sistema de arquivos, crie um destino de montagem para o Amazon EFS em todas as Zonas de disponibilidade em que seus nós do EKS estão localizados.

  3. Clone o repositório do GitHub em seu sistema local.

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vá até o diretório de exemplo encryption_in_transit:

    cd aws-efs-csi-driver/examples/kubernetes/encryption_in_transit/
  5. Para recuperar seu ID do sistema de arquivos do Amazon EFS, execute o seguinte comando describe-file-systems:

    aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
  6. Acesse o arquivo pv.yaml no diretório /examples/kubernetes/encryption_in_transit/specs/. Em seguida, substitua o valor de VolumeHandle pelo FileSystemId do sistema de arquivos do Amazon EFS que precisa ser montado.
    O arquivo pv.yaml deve ser semelhante ao seguinte:

    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"

    Observação: substitua FileSystemId pelo seu ID do sistema de arquivos Amazon EFS. A opção de montagem volumeAttributes: encryptInTransit ativa a criptografia em trânsito.

  7. Implante a classe de armazenamento, a declaração de volume persistente, o volume persistente e o pod do diretório /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 verificar se seu pod está em um estado de execução, execute o seguinte comando:

    kubectl get pods
  9. Para listar os volumes persistentes no namespace padrão, execute o seguinte comando:

    kubectl get pv
  10. Para descrever o volume persistente, execute o seguinte comando:

kubectl describe pv efs-pv

Observação: o ID do sistema de arquivos do Amazon EFS está listado como o VolumeHandle. Para verificar se os dados estão gravados no sistema de arquivos do Amazon EFS, execute o seguinte comando:

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

Criptografe dados em repouso

Observação: depois de criar um sistema de arquivos do EFS, não é possível alterar sua configuração de criptografia. Isso significa que não é possível modificar um sistema de arquivos não criptografado para torná-lo criptografado.

Para criptografar dados em repouso, conclua as seguintes etapas:

  1. Implante o driver CSI do Amazon EFS em seu cluster do Amazon EKS.

  2. Crie um sistema de arquivos do Amazon EFS com criptografia em repouso ativa.
    Observação: o Console de gerenciamento da AWS ativa automaticamente a criptografia em repouso com uma chave do AWS Key Management Service (AWS KMS) gerenciada pela AWS. A AWS CLI e SDK exigem que você ative a criptografia explicitamente.

  3. Clone o repositório do GitHub a seguir em seu sistema local:

    git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
  4. Vá para o diretório de exemplo multiple_pods:

    cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
  5. Para recuperar seu ID do sistema de arquivos do Amazon EFS, execute o seguinte comando:

    aws efs describe-file-systems

    Exemplo de saída:

    {
      "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. Acesse o arquivo pv.yaml no diretório /examples/kubernetes/multiple_pods/specs/. Em seguida, substitua o valor de volumeHandle pelo FileSystemId do sistema de arquivos do Amazon EFS que precisa ser montado.
    O arquivo pv.yaml deve ser semelhante ao seguinte:

    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

    Observação: substitua FileSystemId pelo seu ID do sistema de arquivos Amazon EFS.

  7. Implante a classe de armazenamento, a declaração de volume persistente, o volume persistente e o pod do diretório /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 verificar se seu pod está em um estado de execução, execute o seguinte comando:

    kubectl get pods
  9. Para listar os volumes persistentes no namespace padrão, execute o seguinte comando:

    kubectl get pv
  10. Para descrever o volume persistente, execute o seguinte comando:

kubectl describe pv efs-pv
  1. Para verificar se os dados estão gravados no sistema de arquivos do Amazon EFS, execute os seguintes comandos:
kubectl exec -ti app1 -- tail /data/out1.txt
kubectl exec -ti app2 -- tail /data/out1.txt
AWS OFICIALAtualizada há 4 meses