Como protejo minha instância de contêiner do Amazon ECS seguindo as práticas recomendadas e técnicas de hardening?

7 minuto de leitura
0

Minhas instâncias do Amazon Elastic Container Service (Amazon ECS) ou instâncias subjacentes do Amazon Elastic Compute Cloud (Amazon EC2) estão com problemas como encerramentos inesperados, reinicializações, problemas de escalabilidade ou perda de dados. Quero proteger minha instância de contêiner do Amazon ECS.

Breve descrição

Se você usar o tipo de inicialização do Amazon EC2 no Amazon ECS, problemas de instância do EC2, como encerramentos, reinicializações ou gargalos de desempenho, afetarão o contêiner. Para resolver esses problemas, adote as práticas recomendadas para proteger suas instâncias de contêiner do Amazon ECS e resolver as questões atreladas à manutenção, escalabilidade e solução de problemas do Amazon EC2.

Resolução

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

Proteger as instâncias de contêiner do Amazon ECS

Limitar o acesso do usuário-raiz da conta da AWS

Não use a conta-raiz, a menos que seja necessário, por exemplo, para alterar as configurações da conta ou modificar a senha do usuário-raiz. Em vez disso, use os perfis e políticas do AWS Identity and Access Management (IAM) para configurar um acesso que cumpra o princípio do privilégio mínimo. Além disso, configure a autenticação multifator (MFA) da conta-raiz.

Implementar o hardening da segurança

Use grupos de segurança para restringir o tráfego de entrada e saída somente aos endereços IP e portas necessários. Corrija e atualize regularmente suas instâncias de contêiner do Amazon ECS. Também é possível usar o Amazon Inspector para identificar vulnerabilidades.

Use criptografia para dados sigilosos em trânsito, como HTTPS, e em repouso, como volumes do Amazon Elastic Block Storage (Amazon EBS). Para mais informações, consulte Proteção de infraestrutura.

Use o AWS Systems Manager para simplificar as correções e a manutenção de instâncias de contêiner do Amazon ECS. Use o AWS Systems Manager Agent (SSM Agent) pré-instalado em Imagens de máquina da Amazon (AMIs) otimizadas do Amazon ECS para implementar fluxos de trabalho automatizados de gerenciamento de correções. Isso inclui períodos de manutenção programada e estratégias de substituição de instâncias. Para mais informações, consulte Automatizar correções substituindo as instâncias de contêiner do Amazon ECS.

Ativar o registro e o monitoramento

Configure o AWS CloudTrail para registrar atividades de API. É uma prática recomendada configurar alarmes do Amazon CloudWatch para informar sobre altos valores de CpuUtilization, DiskReadOps, DiskWriteOps, NetworkIn ou NetworkOut.

Para monitorar o desempenho da instância de contêiner e o uso de recursos, ative o Container Insights.

Definir uma estratégia de backup e restauração

Use snapshots do Amazon EBS ou crie AMIs como parte de um plano de recuperação de desastres. Para mais informações, consulte Backup e restauração do Amazon EC2 usando o AWS Backup.

Importante: se você excluir um volume do EBS, poderá recuperá-lo somente se tiver criado um snapshot do Amazon EBS ou um backup da AMI.

Para coletar e exportar metadados, logs de instâncias e dados de aplicações, use SSH para se conectar à sua instância. Em seguida, execute o seguinte comando describe-instances da AWS CLI para exportar os metadados da instância:

aws ec2 describe-instances \
--instance-ids i-abcdxyz\
-- query "Reservations[].Instances[]" \
-- output text > file.txt

Para exportar os logs da instância, execute o seguinte comando get-console-output:

aws ec2 get-console-output --instance-id i-abcdxyz --output text

Observação: nos comandos anteriores, substitua i-abcdxyz pelo ID da sua instância.

Solucionar problemas de instância do EC2

Solucionar problemas de encerramentos e reinicializações inesperados

Use a drenagem de instâncias gerenciadas do Amazon ECS para garantir que as workloads parem normalmente e façam a transição para instâncias estáveis durante interrupções pontuais ou eventos similares.

Para segurança e desempenho, o Amazon EC2 agenda regularmente eventos de manutenção de rotina em suas instâncias, como reinicializações, interrupções e inícios, e desativação. É possível usar o AWS Health Dashboard para acompanhar esses eventos, que podem levar vários minutos para serem concluídos. Para saber o que fazer após eventos de manutenção de rotina, consulte Ações recomendadas para instâncias do Amazon EC2 afetadas por eventos programados.

Se você enfrentar o encerramento de uma instância spot, consulte Por que o Amazon EC2 interrompeu minha instância spot?

O Amazon EC2 pode encerrar sua instância como parte da manutenção programada. Para gerenciar esse tipo de encerramento de instância, é uma prática recomendada usar os ganchos do ciclo de vida do Amazon EC2 Auto Scaling.

Solucionar problemas de alta utilização de recursos

Para verificar o alto uso da CPU ou da memória, revise os logs da aplicação e as métricas de CpuUtilization, NetworkIn, NetworkOut, DiskReadOps e DiskWriteOps do CloudWatch na sua instância. Além disso, verifique a métrica MemoryUtilized do Container Insights.

Se sua configuração não atender às necessidades de recursos das instâncias, aumente a escala verticalmente das suas instâncias.

Ou use os provedores de capacidade do Amazon ECS para escalar e otimizar dinamicamente os recursos computacionais do seu cluster. Para criar um provedor de capacidade, use o console do Amazon ECS. Ou execute um comando create-capacity-provider semelhante ao exemplo a seguir:

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider "autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED"

Resolver problemas de espaço em disco insuficiente

O armazenamento principal da instância do EC2 que está executando tarefas do Amazon ECS pode ficar cheio pelos seguintes motivos:

  • Logs da aplicação
  • Armazenamento excessivo de imagens de contêiner
  • Arquivos temporários criados pela execução de instâncias de contêiner

Observe que cada arquivo ou diretório usa um inode, independentemente do tamanho. Como resultado, se você tiver vários arquivos pequenos, poderá exceder a cota de inode. Se exceder a cota de inode, não poderá criar novos arquivos mesmo quando houver espaço em disco disponível.

Use as configurações do Amazon ECS para automatizar a limpeza de tarefas e imagens e remover tarefas interrompidas e imagens do Docker não utilizadas. Além disso, use a variável ECS_RESERVED_MEMORY para garantir que as tarefas não consumam toda a memória disponível.

Para limpar automaticamente imagens antigas ou não utilizadas em seus repositórios, use as políticas de ciclo de vida do Amazon Elastic Container Registry (Amazon ECR). Para limpar objetos não utilizados, como imagens, instâncias de contêiner, volumes e redes, use os comandos do Docker prune. Para mais informações, consulte Remover objetos Docker não utilizados no site do Docker Docs.

Para visualizar o espaço em disco usado por todos os sistemas de arquivos instalados, execute o seguinte comando:

df -h

Para visualizar o espaço em disco que um sistema de arquivos específico usa, execute o seguinte comando:

df -h /

Observação: o comando anterior mostra dados somente para o sistema de arquivos raiz.

Problemas de recursos podem ocorrer porque você tem poucos inodes disponíveis. Para verificar o uso do inode, execute o seguinte comando:

df -i

Para visualizar o espaço total em disco que um diretório específico usa, execute o seguinte comando:

du -sh /path/to/directory

Observação: substitua directory pelo nome do seu diretório.

Para listar os maiores diretórios ou arquivos em sua aplicação, execute o seguinte comando:

du -ah /path/to/directory | sort -rh | head -n 10

Observação: o comando anterior lista os 10 maiores arquivos ou diretórios. Substitua 10 pelo número de arquivos e diretórios grandes que você deseja visualizar e directory pelo nome do seu diretório.

Para verificar o tamanho de cada subdiretório em seu diretório, execute o seguinte comando:

du -h --max-depth=1

Para otimizar sua capacidade disponível, use Frota spot ou provedores de capacidade em suas instâncias do EC2. Para mais informações, consulte Otimizar os clusters do Amazon ECS com Frota spot.

Informações relacionadas

Tolerância a falhas e isolamento de falhas

Como posso solucionar problemas de conexão com minha instância Linux do Amazon EC2 usando SSH?

Criptografia do Amazon EBS

Práticas recomendadas para o Amazon EC2

Práticas recomendadas do Amazon ECS

AWS OFICIAL
AWS OFICIALAtualizada há 2 meses