Práticas recomendadas de segurança de rede para o Amazon ECS
A segurança de rede é um tópico amplo que engloba vários subtópicos. Isso inclui criptografia em trânsito, segmentação e isolamento de rede, firewall, roteamento de tráfego e observabilidade.
Criptografia em trânsito
A criptografia do tráfego de rede impede que usuários não autorizados interceptem e leiam dados quando esses dados são transmitidos pela rede. Com o Amazon ECS, a criptografia de rede pode ser implementada de qualquer uma das formas a seguir.
-
Com uma malha de serviços (TLS):
Com o AWS App Mesh, é possível configurar conexões de TLS entre os proxies Envoy que são implantados com endpoints de malha. Dois exemplos são nós virtuais e gateways virtuais. Os certificados TLS podem vir do AWS Certificate Manager (ACM). Ou podem vir de sua própria autoridade de certificação privada.
-
Uso de instâncias do Nitro:
Por padrão, o tráfego é criptografado automaticamente entre os tipos de instância do Nitro a seguir: C5n, G4, I3en, M5dn, M5n, P3dn e R5n. O tráfego não é criptografado quando é roteado por meio de um gateway de trânsito, balanceador de carga ou intermediário similar.
-
Uso de Server Name Indication (SNI) com um o Application Load Balancer:
O Application Load Balancer (ALB) e o Network Load Balancer (NLB) são compatíveis com Server Name Indication (SNI). Ao usar o SNI, será possível colocar várias aplicações seguras em um único receptor. Para isso, cada uma tem seu próprio certificado TLS. Recomendamos que você provisione certificados para o balanceador de carga usando o AWS Certificate Manager (ACM) e, em seguida, adicione-os à lista de certificados do ouvinte. O balanceador de carga AWS usa um algoritmo inteligente de seleção de certificado com suporte para SNI. Se o nome de host fornecido por um cliente corresponder a um único certificado na lista, o balanceador de carga escolherá esse certificado. Se um nome de host fornecido por um cliente corresponder a vários certificados na lista, o balanceador de carga selecionará um certificado ao qual o cliente possa oferecer suporte. Os exemplos incluem o certificado autoassinado ou um certificado gerado por meio do ACM.
-
Criptografia de ponta a ponta com certificados TLS:
Isso envolve a implantação de um certificado TLS com a tarefa. Isso pode ser um certificado autoassinado ou um certificado de uma autoridade de certificação confiável. É possível obter o certificado referenciando um segredo para o certificado. Caso contrário, será possível optar por executar um contêiner que emita uma Solicitação de Assinatura de Certificado (CSR) para o ACM e, em seguida, monte o segredo resultante em um volume compartilhado.
Redes de tarefas
As recomendações a seguir são em consideração a como o Amazon ECS funciona. O Amazon ECS não usa uma rede de sobreposição. Em vez disso, as tarefas são configuradas para operar em diferentes modos de rede. Por exemplo, tarefas configuradas para usar o modo bridge
adquirem um endereço IP não roteável de uma rede Docker que é executada em cada host. As tarefas configuradas para usar o modo de rede awsvpc
adquirem um endereço IP da sub-rede do host. As tarefas configuradas com rede host
usam a interface de rede do host. awsvpc
é o modo de rede preferido. Isso ocorre porque é o único modo possível de ser usado para atribuir grupos de segurança às tarefas. Também é o único modo disponível para tarefas do AWS Fargate no Amazon ECS.
Grupos de segurança para tarefas
Recomendamos configurar suas tarefas para usar o modo de rede awsvpc
. Depois de configurar sua tarefa para usar esse modo, o agente do Amazon ECS provisionará e anexará automaticamente uma interface de rede elástica (ENI) à tarefa. Quando a ENI for provisionada, a tarefa será registrada em um grupo de segurança da AWS. O grupo de segurança atua como um firewall virtual para controlar o tráfego de entrada e saída.
AWS PrivateLink e Amazon ECS
AWS PrivateLink é uma tecnologia de rede que permite criar endpoints privados para diferentes serviços da AWS, incluindo o Amazon ECS. Os endpoints são necessários em ambientes de sandbox, onde não há nenhum gateway da Internet (IGW) conectado ao Amazon VPC e nenhuma rota alternativa para a Internet. O uso de AWS PrivateLink garante que as chamadas para o serviço Amazon ECS permaneçam dentro da Amazon VPC e não atravessem a Internet. Para obter instruções sobre como criar endpoints de AWS PrivateLink para o Amazon ECS e outros serviços relacionados, consulte Endpoints da Amazon VPC de interface do Amazon ECS.
Importante
As tarefas do AWS Fargate não exigem um endpoint AWS PrivateLink para o Amazon ECS.
Tanto o Amazon ECR quanto o Amazon ECS oferecem suporte a políticas de endpoints. Essas políticas permitem refinar o acesso às APIs de um serviço. Por exemplo, é possível criar uma política de endpoint para o Amazon ECR que só permita que imagens sejam enviadas para registros em contas específicas da AWS. Uma política como essa pode ser usada para evitar que os dados sejam exfiltrados por meio de imagens de contêineres e, ao mesmo tempo, permitir que os usuários acessem registros autorizados do Amazon ECR. Para obter mais informações, consulte Uso de políticas de endpoint da VPC.
A política a seguir permite que todas as entidades principais da AWS da sua conta realizem todas as ações somente nos seus repositórios do Amazon ECR:
{ "Statement": [ { "Sid": "LimitECRAccess", "Principal": "*", "Action": "*", "Effect": "Allow", "Resource": "arn:aws:ecr:
region
:account_id
:repository/*" }, ] }
É possível aprimorar isso ainda mais definindo uma condição que use a nova propriedade PrincipalOrgID
. Isso evita o envio e a extração de imagens por uma entidade principal do IAM que não faça parte do seu AWS Organizations. Para obter mais informações, consulte aws:PrincipalOrgID.
Recomendamos aplicar a mesma política a ambos os endpoints com.amazonaws.
e region
.ecr.dkrcom.amazonaws.
.region
.ecr.api
Configurações do agente de contêiner
O arquivo de configuração do agente de contêiner do Amazon ECS inclui várias variáveis de ambiente relacionadas à segurança da rede. ECS_AWSVPC_BLOCK_IMDS
e ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST
são usadas para bloquear o acesso de uma tarefa aos metadados do Amazon EC2. HTTP_PROXY
é usada para configurar o agente para rotear por meio de um proxy HTTP para se conectar à Internet. Para obter instruções sobre como configurar o agente e o runtime do Docker para rotear por meio de um proxy, consulte Configuração do proxy HTTP.
Importante
Essas configurações não estão disponíveis quando você usa o AWS Fargate.
Recomendações de segurança de rede
Recomendamos que você faça o seguinte ao configurar sua Amazon VPC, balanceadores de carga e rede.
Uso da criptografia de rede com o Amazon ECS, quando aplicável
Você deve usar criptografia de rede quando aplicável. Alguns programas de conformidade, como o PCI DSS, exigem que você criptografe os dados em trânsito se eles contiverem dados do titular do cartão. Se sua workload tiver requisitos semelhantes, configure a criptografia de rede.
Os navegadores modernos avisam quando os usuários se conectam a sites inseguros. Se o seu serviço for administrado por um balanceador de carga voltado para o público, use TLS/SSL para criptografar o tráfego do navegador do cliente para o balanceador de carga e recriptografar no backend, se necessário.
Uso do modo de rede awsvpc
e de grupos de segurança para controlar o tráfego entre tarefas e outros recursos no Amazon ECS
Você deve usar o modo de rede awsvpc
e grupos de segurança quando precisar controlar o tráfego entre tarefas e entre tarefas e outros recursos de rede. Se o seu serviço estiver por trás de um ALB, use grupos de segurança para permitir somente o tráfego de entrada de outros recursos de rede usando o mesmo grupo de segurança do seu ALB. Se a sua aplicação estiver protegida por um NLB, configure o grupo de segurança da tarefa para permitir somente tráfego de entrada do intervalo CIDR do Amazon VPC e dos endereços IP estáticos atribuídos ao NLB.
Grupos de segurança também devem ser usados para controlar o tráfego entre tarefas e outros recursos dentro da Amazon VPC, como bancos de dados do Amazon RDS.
Criação de clusters do Amazon ECS em VPCs da Amazon separadas quando o tráfego de rede precisar ser estritamente isolado
Você deve criar clusters em Amazon VPCs separadas quando o tráfego de rede precisar ser estritamente isolado. Evite executar workloads que tenham requisitos rígidos de segurança em clusters com workloads que não precisem cumprir esses requisitos. Quando o isolamento estrito da rede for obrigatório, crie clusters em Amazon VPCs separadas e exponha seletivamente serviços a outras Amazon VPCs usando endpoints da Amazon VPC. Para obter mais informações, consulte Endpoints da Amazon VPC.
Configuração de endpoints do AWS PrivateLink para o Amazon ECS, quando necessário
Você deve configurar endpoints de AWS PrivateLink quando necessário. Se sua política de segurança impedir que você conecte um gateway da Internet (IGW) às suas Amazon VPCs, configure endpoints de AWS PrivateLink para o Amazon ECS e outros serviços, como Amazon ECR, AWS Secrets Manager e Amazon CloudWatch.
Uso de logs de fluxo da Amazon VPC para analisar o tráfego de e para tarefas de execução prolongada no Amazon ECS
Você deve usar o Amazon VPC Flow Logs para analisar o tráfego de e para tarefas de longa execução. As tarefas que usam o modo de rede awsvpc
obtêm seu próprio ENI. Ao fazer isso, é possível monitorar o tráfego que entra e sai de tarefas individuais usando o Amazon VPC Flow Logs. Uma atualização recente do Amazon VPC Flow Logs (v3) enriquece os logs com metadados de tráfego, incluindo o ID da VPC, o ID da sub-rede e o ID da instância. Esses metadados podem ser usados para ajudar a restringir uma investigação. Para obter mais informações, consulte Amazon VPC Flow Logs.
nota
Devido à natureza temporária dos contêineres, os logs de fluxo nem sempre são uma forma eficaz de analisar padrões de tráfego entre diferentes contêineres ou contêineres e outros recursos de rede.