O controle de acesso do ALB oferece filtragem granular para requisições de clientes por meio de listas de permissões e listas de bloqueios de IP em listeners. Crie uma lista de controle de acesso (ACL), adicione entradas de IP e associe a ACL a um listener para permitir ou negar tráfego de origens específicas.
A Edição Extensível do ALB não oferece suporte a controle de acesso.
ACLs versus grupos de segurança
O ALB disponibiliza dois métodos de controle de acesso: listas de controle de acesso (ACLs) e security groups.
|
Item |
ACL |
Grupo de segurança do ALB |
|
Granularidade de controle |
Baseada no IP de origem. Aplica-se a listeners individuais. |
Baseada no IP de origem, protocolo e porta. Aplica-se a toda a instância do ALB. |
|
Suporte a IPv6 |
Sem suporte. Apenas entradas IPv4 são permitidas. |
Compatível com endereços IPv4 e IPv6. |
|
Comportamento padrão |
No modo de lista de permissões, requisições de IPs fora da ACL são negadas. No modo de lista de bloqueios, requisições de IPs fora da ACL são permitidas. |
Permite todo o tráfego por padrão. Adicione explicitamente uma regra de negação para 0.0.0.0/0 para restringir o acesso. |
|
Casos de uso |
Ideal para listas simples de permissões e bloqueios de IP. Configuração simplificada, sem necessidade de compreender prioridades de regras. |
Indicado para cenários que exigem controle no nível de porta, suporte a IPv6 ou controle de ICMP. |
Pré-requisitos
Você já possui crie an ALB instance e configure a listener.
Criar uma ACL
Uma lista de controle de acesso (ACL) consiste em um conjunto de entradas de IP. Após criar a ACL e adicionar as entradas, associe-a a um listener para implementar o controle de acesso via lista de permissões ou lista de bloqueios.
console
Acesse a página Access Control no console do ALB. Na barra de navegação superior, selecione a região onde a instância de destino está implantada e clique em Create ACL.
Na caixa de diálogo Create ACL, insira um nome para a ACL e clique em OK.
-
Após a criação da ACL, na página Access Control, clique no ID da ACL desejada para abrir sua página de detalhes. Na aba Entry, adicione entradas de IP utilizando um dos métodos abaixo:
Adicionar uma única entrada: Clique em Add Entry. Na caixa de diálogo, insira o IP/CIDR Block e as Remarks, depois clique em Add.
-
Adicionar entradas em lote: Clique em Add ACL Entries. Insira as entradas seguindo este formato:
Insira uma entrada por linha.
Utilize uma barra vertical (|) para separar o endereço IP ou bloco CIDR das observações, por exemplo: 192.168.1.0/24|test-remark.
É possível adicionar até 20 entradas simultaneamente.
Caso o lote contenha uma entrada já existente na ACL, a operação falhará. Remova as entradas duplicadas e envie o lote novamente.
Após adicionar as entradas, você pode exclua-las ou exportá-las diretamente da lista.
API
Chame a CreateAcl para crie uma ACL.
Chame a AddEntriesToAcl para adicionar entradas de IP.
Chame a RemoveEntriesFromAcl para remover entradas de IP.
Ativar ou desativar o controle de acesso
Configure uma lista de permissões ou uma lista de bloqueios para o listener:
Lista de permissões: Permite acesso exclusivamente dos endereços IP presentes na ACL e nega todas as demais requisições.
Lista de bloqueios: Nega acesso dos endereços IP listados na ACL e permite todas as outras requisições.
Independentemente da configuração de lista de permissões ou de bloqueios, se a ACL associada não possuir entradas de IP, o controle de acesso não terá efeito e o listener encaminhará todas as requisições. Antes de configure uma lista de permissões, certifique-se de que a ACL contenha os endereços IP que devem ser autorizados, evitando assim interrupções no service.
console
Acesse a página Instances no console do ALB. Na barra de navegação superior, selecione a região onde a instância de destino está implantada e clique no ID da instância.
-
Na aba Listener, localize o listener desejado. Na coluna Access Control, clique em Enable ou Close.
Enable: Na caixa de diálogo, selecione o Access Control Mode (Whitelist ou Blacklist) e uma ACL, em seguida clique em Save.
Close: Na caixa de diálogo de confirmação, clique em OK.
Também é possível ative ou desativar o controle de acesso na seção Access Control da página de detalhes do listener.
API
Chame a AssociateAclsWithListener para associar uma ACL a um listener.
Chame a DissociateAclsFromListener para desassociar uma ACL de um listener.
Perguntas frequentes
Lista de permissões sem efeito
Causa: A ACL não está associada ao listener ou não possui entradas de IP. Uma ACL vazia permite todo o tráfego.
Solução: Na aba Listener da instância ALB, visualize se a coluna Access Control do listener exibe o status Enabled. Confirme também se a ACL associada contém entradas de IP.
Impossibilidade de adicionar 0.0.0.0/0 à lista de permissões
Causa: As ACLs não suportam a entrada 0.0.0.0/0. O console exibirá um erro de formato.
Solução: O procedimento correto é disable access control e reativá-lo quando necessário.
Lista de bloqueios sem efeito
Causa: As requisições chegam ao ALB através de uma CDN ou WAF. O IP de origem visível para o ALB é o da CDN ou WAF, e não o endereço IP real do cliente.
Solução: O controle de acesso do ALB opera na Camada 4 e corresponde ao endereço IP de origem no pacote de requisição. Quando as requisições são encaminhadas por um proxy como CDN ou WAF, o IP de origem passa a ser o do proxy. Consequentemente, uma lista de bloqueios do ALB não consegue bloquear o IP do cliente. Configure a lista de bloqueios na camada da WAF ou da CDN.
Lista de bloqueios não bloqueia o IP do X-Forwarded-For
Causa: O controle de acesso do ALB atua na Camada 4 e corresponde apenas ao endereço IP de origem no pacote de requisição. Ele não analisa o cabeçalho HTTP X-Forwarded-For da Camada 7.
Solução: Implemente essa funcionalidade usando uma custom rule na WAF. Defina o Match Field como X-Forwarded-For, o Logical Operator como Contains, o Match Content como o endereço IP alvo e a Rule Action como Block. Para mais detalhes, consulte Configure match conditions for a custom rule.
Regras allow/deny do NGINX backend sem efeito
Causa: Após o tráfego passar pelo proxy do ALB, o servidor backend recebe o IP local da instância ALB (um endereço IP privado atribuído pelo vSwitch onde a instância reside) como IP de origem. As regras allow/deny do NGINX baseiam-se nesse IP de origem, impossibilitando a correspondência com o IP do cliente.
Soluções:
(Recomendado) Utilize o recurso de controle de acesso do ALB para configure uma lista de permissões ou bloqueios de IP diretamente na camada do ALB.
No NGINX, obtain the real client IP address a partir do cabeçalho de requisição
X-Forwarded-Fore configure as regras allow/deny com base no endereço IP real.
Restrição de acesso por domínio ou caminho
Descrição: As ACLs operam no nível do listener e não diferenciam por nome de domínio ou caminho. Quando ativada, a ACL afeta todos os domínios associados ao listener.
Solução alternativa: Para instâncias ALB Standard ou com WAF habilitado, utilize regras de encaminhamento. Na condição de encaminhamento, configure as condições Domain Name/Path e SourceIp para Return Fixed Response (como 403) nas requisições correspondentes. A condição SourceIp de uma única regra de encaminhamento suporta até cinco endereços IP ou blocos CIDR, mas não aceita o formato 0.0.0.0/x. Se você tiver muitos endereços IP ou utilizar uma instância ALB Basic, recomendamos o uso da WAF. Crie uma custom rule na WAF para combinar condições de host/caminho e IP para o controle de acesso.
Bloqueio de endereços IP de outros países
Descrição: O controle de acesso do ALB não possui funcionalidade de bloqueio geográfico e não identifica automaticamente o país de origem de um endereço IP.
Solução alternativa: Adicione manualmente faixas de IP estrangeiras conhecidas a uma lista de bloqueios. No entanto, esse método não é atualizado automaticamente e está sujeito a limites de entradas. Recomendamos o uso do recurso geo-blocking da WAF.
Controle de acesso em cenários de proxy multicamada
Quando um proxy de Camada 7 é implantado à frente de uma instância ALB, o recurso de controle de acesso do ALB, que opera na Camada 4, visualiza apenas o endereço IP de origem do proxy anterior, sem conseguir identificar o IP real do cliente. Por isso, é essencial configure o controle de acesso na camada adequada. Considere um cenário onde a WAF está conectada via registro CNAME (Cliente → CDN → WAF → ALB → ECS). Abaixo estão o endereço IP de origem visível e as recomendações de controle de acesso para cada camada.
Instâncias ALB com WAF habilitado utilizam um sdk para proteção. A WAF não participa do encaminhamento de tráfego, portanto, não há salto de IP de origem da WAF. Caso nenhum proxy de Camada 7, como uma CDN, esteja implantado à frente da instância ALB, a questão descrita nesta seção não se aplica.
|
Camada |
IP de origem visível |
Recomendação de controle de acesso |
|
WAF |
|
Configure listas de permissões e bloqueios de IP nesta camada. Quando configurada corretamente, a WAF bloqueia requisições com base no IP real do cliente e também oferece suporte a bloqueio geográfico. |
|
ALB |
O IP de origem da WAF. |
Configure uma lista de permissões na instância ALB para permitir acesso apenas da WAF source IP ranges. Isso impede que invasores contornem a WAF e acessem diretamente o endereço IP público da instância ALB. Consulte as faixas de IP de origem da WAF na página Access Management no console da WAF. |
|
ECS Backend |
O endereço IP local da instância ALB (um IP privado atribuído pelo vSwitch onde a instância reside). |
Garanta que o bloco CIDR do IP local da instância ALB não seja bloqueado pelo iptables ou por outros softwares de segurança de terceiros nas instâncias ECS backend. Caso contrário, tanto as verificações de integridade quanto o encaminhamento de requisições falharão. |
Faturamento
O recurso de controle de acesso é gratuito. Para mais informações sobre o faturamento das instâncias ALB, consulte ALB billing.
Cotas
|
Item |
Edição |
Cota |
|
Número de listeners associáveis a uma ACL |
Basic/Standard/WAF-enabled |
50 |
|
Número de ACLs associáveis a um listener |
Basic/Standard/WAF-enabled |
3 |
|
Número de ACLs criáveis por região |
Basic/Standard/WAF-enabled |
1000 |
|
Número de entradas adicionáveis a uma ACL |
Basic/Standard/WAF-enabled |
500 |
|
Número de entradas de ACL associáveis a uma instância ALB |
Basic/Standard/WAF-enabled |
800 |
|
Número de entradas de ACL associáveis a um listener |
Basic |
300 |
|
Standard/WAF-enabled |
500 |
Essas cotas são limites rígidos e não podem ser aumentados. Para mais informações, consulte ALB quotas and limits.