Criptografia em trânsito para IBM Cloud File Storage for VPC
Nuvem Privada Virtual
Utilize a criptografia em trânsito (EIT) para proteger os dados enquanto eles são transferidos entre seus nós de trabalho e o serviço File Storage for VPC. Este tópico aborda o EIT tanto para compartilhamentos de arquivos zonais que utilizam o
perfil “ dp2 ” quanto para compartilhamentos de arquivos regionais que utilizam o perfil “ rfs ”.
Compartilhamentos de arquivos por zona — Configuração da criptografia em trânsito
Se você optar por usar criptografia em trânsito, procure encontrar um equilíbrio entre seus requisitos de segurança e suas necessidades de desempenho. A criptografia de dados em trânsito pode afetar o desempenho, pois os dados precisam ser criptografados e descriptografados nos terminais. Para obter mais informações, consulte “Criptografia de VPC em trânsito ”.
Nos nós de trabalho do RHCOS ( CoreOS ), o EIT não fica ativo até que o nó seja reiniciado, após o operador instalar os pacotes necessários. Planeje uma reinicialização gradual ao ativar o EIT.
- O EIT está disponível para as versões de cluster 4.16 e posteriores.
- Por padrão, os compartilhamentos de arquivos são criptografados em repouso por meio da criptografia gerenciada pel IBM.
- Para usar o EIT com clusters configurados com “Secure by Default”, é necessário adicionar a seguinte regra de tráfego de saída ao grupo de segurança “
kube-<clusterID>”. Essa regra é adicionada automaticamente para clusters ROKS na versão 4.18 e posteriores. Para versões mais antigas do cluster, adicione a regra manualmente.- Protocolo: Qualquer
- Tipo de fonte: Qualquer
- Fonte:
0.0.0.0/0 - Destino:
169.254.169.254
- O EIT não está disponível para volumes provisionados estaticamente. Para configurar o EIT, é necessário utilizar o provisionamento dinâmico.
- Os pacotes do EIT são atualizados automaticamente no seu cluster quando o EIT está ativado.
- A criptografia de dados em trânsito pode afetar o desempenho. O impacto depende das características da sua carga de trabalho. Cargas de trabalho que realizam gravações síncronas ou contornam o cache VSI, como bancos de dados, podem sofrer um impacto substancial no desempenho quando o EIT estiver ativado. Para avaliar o impacto, compare o desempenho da sua carga de trabalho com e sem o EIT.
- Mesmo sem o EIT, os dados trafegam por uma rede segura de data center. Para obter mais informações sobre segurança de rede, consulte “Segurança na sua VPC” e “Proteção dos serviços de infraestrutura da Nuvem Privada Virtual(VPC)com restrições baseadas no contexto ”.
File Storage for VPC só é considerado um serviço validado para serviços financeiros quando a criptografia em trânsito estiver ativada. Para obter mais informações, consulte “O que é um serviço validado para serviços financeiros?”.
Siga as etapas a seguir para configurar a criptografia em trânsito (EIT) para compartilhamentos de arquivos no seu cluster do Red Hat OpenShift on IBM Cloud. A ativação do EIT instala os pacotes necessários nos seus nós de trabalho.
-
Anote os conjuntos de trabalhadores do seu cluster nos quais você deseja habilitar o EIT.
-
Edite o arquivo
addon-vpc-file-csi-driver-configmap``.oc edit cm addon-vpc-file-csi-driver-configmap -n kube-system -
No configmap, defina
ENABLE_EIT: "true"e adicione os pools de workers nos quais deseja habilitar o EIT ao campoEIT_ENABLED_WORKER_POOLS. Por exemplo:"wp1,wp2". Você também pode definir os parâmetrosEIT_METADATA_RETRY_COUNTeEIT_METADATA_RETRY_INTERVALpara controlar o comportamento de repetição de tentativas ao buscar metadados da instância.apiVersion: v1 data: EIT_ENABLED_WORKER_POOLS: "wp1,wp2" # Specify the worker pools where you want to enable EIT. If this field is blank, EIT is not enabled on any worker pools. ENABLE_EIT: "true" # Specify true/false EIT_METADATA_RETRY_COUNT: "3" # Number of retries for fetching instance metadata before an error is returned EIT_METADATA_RETRY_INTERVAL: "30" # Interval in seconds between each metadata fetch retry kind: ConfigMap metadata: creationTimestamp: "2024-06-18T09:45:48Z" labels: app.kubernetes.io/name: ibm-vpc-file-csi-driver name: addon-vpc-file-csi-driver-configmap namespace: kube-system ownerReferences: - apiVersion: csi.drivers.ibmcloud.io/v1 blockOwnerDeletion: true controller: true kind: VPCFileCSIDriver name: ibm-vpc-file-csi-driver uid: d3c8bbcd-24fa-4203-9352-4ab7aa72a055 resourceVersion: "1251777" uid: 5c9d6679-4135-458b-800d-217b34d27c75 -
Depois de habilitar o EIT, salve e feche o configmap.
Essa etapa pode levar até 5 minutos para ser concluída, à medida que o operador instala os pacotes EIT nos nós de trabalho especificados.
-
Para verificar se o EIT está habilitado, analise os eventos do configmap
file-csi-driver-statuspara confirmar se a instalação do EIT foi bem-sucedida em cada nó de trabalho. Procure os eventosPackage installation successfulpara cada nó nos seus conjuntos de trabalhadores especificados.oc describe cm file-csi-driver-status -n kube-systemExemplo de saída
apiVersion: v1 data: EIT_ENABLED_WORKER_NODES: | default: - 10.240.0.10 - 10.240.0.8 PACKAGE_DEPLOYER_VERSION: v1.0.0 events: | - event: EnableVPCFileCSIDriver description: 'VPC File CSI Driver enable successful, DriverVersion: v2.0.3' timestamp: "2024-06-13 09:17:07" - event: EnableEITRequest description: 'Request received to enableEIT, workerPools: , check the file-csi-driver-status configmap for eit installation status on each node of each workerpool.' timestamp: "2024-06-13 09:17:31" - event: 'Enabling EIT on host: 10.240.0.10' description: 'Package installation successful on host: 10.240.0.10, workerpool: wp1' timestamp: "2024-06-13 09:17:48" - event: 'Enabling EIT on host: 10.240.0.8' description: 'Package installation successful on host: 10.240.0.8, workerpool: wp2' timestamp: "2024-06-13 09:17:48" -
Se seus conjuntos de nós de trabalho contiverem nós RHCOS ( CoreOS ), esvazie e reinicie cada nó afetado para ativar os pacotes EIT. O EIT não funciona nos nós RHCOS até que o nó seja reiniciado. A drenagem prévia do nó garante que as cargas de trabalho em execução sejam reprogramadas para outros nós antes da reinicialização, evitando impacto nas aplicações de produção.
Drenar o nó para encerrar com segurança todos os pods em execução.
oc drain <node-name> --ignore-daemonsets --delete-emptydir-dataReinicie o nó que ficou sem energia.
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_IDDepois que o nó estiver novamente online e no estado “
Ready”, desative o uncordon para permitir que as cargas de trabalho sejam agendadas nele novamente.oc uncordon <node-name> -
Selecione uma classe de armazenamento pré-instalada compatível com EIT ou crie sua própria classe de armazenamento.
- Crie um PVC utilizando a classe de armazenamento “
ibmc-vpc-file-eit”. - Crie sua própria classe de armazenamento e defina o parâmetro
isEITEnabledcomotrue``.
- Crie um PVC utilizando a classe de armazenamento “
-
Crie um PVC que faça referência à classe de armazenamento selecionada e, em seguida, implante um aplicativo que utilize esse PVC.
Caso você encontre problemas com o EIT após concluir essas etapas, consulte os tópicos de solução de problemas a seguir:
Compartilhamentos de arquivos regionais — Configuração da criptografia em trânsito (Beta)
O Serviço de Arquivos Regional ( File Storage, RFS) com criptografia em trânsito (EIT) oferece conexões seguras, criptografadas pelo Protocolo de Transmissão de Dados ( TLS ) e pelo Protocolo de Camadas de Aplicação ( NFS ) para compartilhamento de arquivos entre várias zonas de disponibilidade dentro de uma região. O complemento “ File Storage for VPC ” gerencia automaticamente um sidecar stunnel em cada nó de trabalho, que encapsula todo o tráfego NFS em TLS 1.3 ou superior, de forma transparente para suas aplicações.
Para obter informações sobre o Regional File Storage, consulte Visão geral do armazenamento regional de arquivos.
O RFS com EIT está disponível apenas como suporte Beta e é recomendado exclusivamente para uso experimental. Não utilize esse recurso em cargas de trabalho de produção.
Como isso funciona
Quando você cria um PVC com a classe de armazenamento RFS EIT e um pod o monta, o complemento configura automaticamente um túnel stunnel criptografado no nó de trabalho e encaminha todo o tráfego NFS por meio dele. A criptografia é transparente para seus aplicativos — eles continuam a usar montagens padrão do tipo “ NFS ”, enquanto todos os dados em trânsito são protegidos com o “ TLS ” 1.3 ou versão superior.
O ciclo de vida do túnel é totalmente gerenciado pelo driver: ele é criado quando um pod monta o volume e é desativado quando o pod é excluído.
Antes de Iniciar
- O complemento do File Storage for VPC, versão 2.0 ou posterior, está instalado no seu cluster. Para obter mais informações, consulte “Ativando o complemento de cluster do IBM Cloud File Storage for VPC ”.
Limitações
Verifique as seguintes limitações antes de habilitar o RFS EIT.
- Número máximo de conexões PVC por nó: 300, uma porta por PVC no intervalo de portas 11300–11599, vinculada a
127.0.0.1. - Conflito de portas para aplicativos com o
hostNetwork: true: Os pods de aplicativos que utilizam ohostNetwork: truee se conectam ao127.0.0.1no intervalo de portas 11300–11599 podem entrar em conflito com montagens PVC do RFS EIT já existentes. - Todas as restrições aplicáveis ao VPC File Storage também se aplicam.
Configurando a criptografia em trânsito para o Regional File Storage
Siga as etapas a seguir para configurar um compartilhamento de arquivos regional com criptografia em trânsito.
-
Crie uma classe de armazenamento que especifique o perfil “
rfs” e defina “isEITEnabled: "true"”. Salve o seguinte YAML em um arquivo chamadorfs-eit-sc.yaml.Os seguintes parâmetros são necessários para o RFS EIT:
profile: "rfs",isENIEnabled: "true",isEITEnabled: "true"eproto=tcpnas opções de montagem.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-vpc-file-rfs-eit-custom labels: app.kubernetes.io/name: ibm-vpc-file-csi-driver provisioner: vpc.file.csi.ibm.io parameters: profile: "rfs" # Regional File Storage profile billingType: "hourly" throughput: "1000" # Bandwidth in MB/s (25–8192 MB/s for RFS profile) encrypted: "false" encryptionKey: "" # Specify the CRK CRN if encrypted is true resourceGroup: "" # Defaults to the resource group in the storage secret store isENIEnabled: "true" # Required for RFS — enables ENI/VNI feature isEITEnabled: "true" # Enables encryption in transit with stunnel securityGroupIDs: "" # Defaults to the cluster security group kube-<clusterID> subnetID: "" # Defaults to an available subnet in the cluster VPC region: "" # Defaults to the region from the cluster node topology primaryIPID: "" # Optional: existing reserved IP ID (region is required) primaryIPAddress: "" # Optional: IP address for ENI/VNI (region and subnetID required) tags: "" uid: "0" gid: "0" classVersion: "1" mountOptions: - hard - nfsvers=4.1 - sec=sys - proto=tcp # Required for stunnel (encryption in transit) reclaimPolicy: "Delete" allowVolumeExpansion: true -
Aplique a classe de armazenamento.
oc apply -f rfs-eit-sc.yaml -
Crie um PVC que faça referência à classe de armazenamento “
ibmc-vpc-file-rfs-eit-custom”. Salve o seguinte YAML em um arquivo chamadorfs-eit-pvc.yaml.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-rfs-eit-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: ibmc-vpc-file-rfs-eit-custom -
Aplique o PVC.
oc apply -f rfs-eit-pvc.yaml -
Crie um pod que monte o PVC. Salve o YAML a seguir em um arquivo chamado
rfs-eit-pod.yaml.apiVersion: v1 kind: Pod metadata: name: my-rfs-eit-app spec: containers: - name: app image: nginx:latest volumeMounts: - name: rfs-eit-storage mountPath: /data volumes: - name: rfs-eit-storage persistentVolumeClaim: claimName: my-rfs-eit-pvc -
Aplique o sachê.
oc apply -f rfs-eit-pod.yaml
Verificação de que a criptografia em trânsito está ativa
Após o início da operação do pod, verifique se a criptografia em trânsito está funcionando, verificando o destino do compartilhamento de arquivos. O destino da montagem deve exibir “ Transit Encryption: stunnel ” para confirmar
que o EIT está ativo.
-
Aguarde até que o pod atinja o estado “
Running” e o PVC atinja o status “Bound”.oc get pod my-rfs-eit-app oc get pvc my-rfs-eit-pvc -
Obtenha o ID do compartilhamento de arquivos e o ID do destino de montagem do volume persistente.
oc describe pv <pv-name> | grep -E "fileShareId|fileShareTargetId"Anote os valores de “
fileShareId” e “fileShareTargetId” na saída. Você os utilizará na próxima etapa para verificar o EIT no lado da VPC. -
Verifique se o destino de montagem do compartilhamento de arquivos apresenta “
stunnel” como método de criptografia de trânsito.ibmcloud is share-mount-target FILE_SHARE_ID FILE_SHARE_TARGET_ID | grep "Transit Encryption"Exemplo de saída que confirma que o EIT está ativo:
Transit Encryption stunnel
Solução de problemas do RFS EIT
Para obter ajuda com erros comuns do RFS EIT, consulte a seção “Solução de problemas da criptografia regional do File Storage em trânsito ”.