O plug-in de controle de acesso baseado em endereço IP do API Gateway controla o acesso às suas APIs com base no endereço IP de origem ou na faixa de endereços IP do chamador. Configure uma lista de permissões ou de bloqueios para uma API a fim de permitir ou negar solicitações de origens específicas.
1. Visão geral
Use uma lista de permissões ou de bloqueios:
-
Lista de permissões: Configure esta lista com base em endereços IP ou na combinação de appId e endereço IP. O API Gateway rejeita solicitações de origens ausentes na lista de permissões.
Lista de permissões de IP: Permite apenas solicitações dos endereços IP de origem especificados.
Se houver um appId configurado, a regra se aplica exclusivamente a esse aplicativo, permitindo que ele acesse a API apenas pelos endereços IP definidos, sem afetar outros aplicativos autorizados.
Lista de bloqueios: Configure uma lista de bloqueios de IP. O API Gateway rejeita todas as solicitações originadas dos endereços IP presentes nessa lista.
O plug-in de controle de acesso baseado em endereço IP é compatível com endereços IPv4 e IPv6.
2. Configuração do plug-in
Configure seu plug-in no formato JSON ou YAML. O esquema é idêntico para ambos. Para converter entre eles, busque uma ferramenta de conversão de yaml para json. A tabela a seguir apresenta um modelo no formato YAML.
---
type: ALLOW # The control mode. Valid values: ALLOW (for a whitelist) and REFUSE (for a blacklist).
resource: "XFF:-1" # Optional. If this parameter is specified, an IP address from the X-Forwarded-For header is used as the client's source IP for evaluation. This example uses the last IP address in the header.
items:
- blocks: # An IP address range.
- 61.3.XX.XX/24
appId: 219810 # Optional. If specified, this entry applies only to this appId.
- blocks: # An IP address.
- 79.11.XX.XX
- blocks: # A user VPC.
- 192.168.XX.XX/32 # This applies to dedicated instances. For requests sent from a user VPC to API Gateway, the source IP address that API Gateway detects is in this address range.
Em instâncias dedicadas, o API Gateway aceita solicitações de dentro de uma VPC do usuário. Nesse cenário, o serviço lê diretamente o endereço IP de origem interno da VPC, como 192.168.XX.XX. Use esses endereços internos da VPC diretamente ao configurar sua lista de permissões ou de bloqueios.
3. Tratar solicitações encaminhadas por um WAF
Se um serviço de middleware, como Web Application Firewall (WAF), estiver implantado antes do API Gateway, use o campo resource para aplicar a filtragem de IP no nível da API. Esse campo é opcional. Sem essa especificação, o sistema usa o endereço IP do salto anterior para avaliação. Ao definir esse campo, use um valor do cabeçalho X-Forwarded-For como base para a avaliação de IP.
O WAF adiciona o endereço IP de origem de uma solicitação recebida ao final do cabeçalho X-Forwarded-For e encaminha a solicitação para o API Gateway. Em seguida, o API Gateway identifica o endereço IP de origem verificando o valor no cabeçalho X-Forwarded-For. Nessa situação, recomendamos o uso de "XFF:-1" para identificar o endereço IP do salto imediatamente anterior ao WAF.
O parâmetro resource deve seguir o formato XFF:index. O index indica a posição do endereço IP no cabeçalho X-Forwarded-For. O índice começa em zero e pode ser negativo. Por exemplo, se o valor de X-Forwarded-For for IP1,IP2,IP3, o índice 0 seleciona IP1, enquanto o índice -1 seleciona IP3 (o último endereço IP).
4. Acesso entre VPCs
Em cenários de acesso entre VPCs, o API Gateway lê diretamente o endereço IP de origem de dentro da VPC de origem. Portanto, use endereços IP internos da VPC diretamente no plug-in de controle de acesso baseado em endereço IP. O API Gateway também lê o ID da VPC de origem, o que permite usar um plug-in de controle de acesso baseado em parâmetros para restringir o acesso a VPCs específicas.
5. Tráfego combinado de WAF e entre VPCs
Se sua API atender tanto a tráfego público (roteado por um WAF) quanto a tráfego interno, use os campos resource e allowResourceMissing para gerenciar ambos os cenários. Defina o campo resource para obter o IP do cliente a partir do cabeçalho X-Forwarded-For no tráfego do WAF. Depois, defina allowResourceMissing como true. Essa configuração permite que o API Gateway recorra ao IP do salto anterior para o tráfego interno, que não possui o cabeçalho X-Forwarded-For.
---
type: ALLOW # The control mode. Valid values: ALLOW (for a whitelist) and REFUSE (for a blacklist).
resource: "XFF:-1" # Optional. If this parameter is specified, an IP address from the X-Forwarded-For header is used as the client's source IP for evaluation. This example uses the last IP address in the header.
allowResourceMissing: "true" # Allows the resource to be missing. If missing, the IP address of the preceding hop is used for evaluation.
items:
- blocks: # An IP address range.
- 61.3.XX.XX/24 # Specify a CIDR block.
appId: 219810 # Optional. If specified, this entry applies only to this appId.
- blocks: # An IP address.
- 79.11.XX.XX # Specify an IP address.
- blocks: # A user VPC.
- 192.168.XX.XX/32 # This applies to dedicated instances. For requests sent from a user VPC to API Gateway, the source IP address that API Gateway detects is in this address range.
6. Usar conjuntos de dados de plug-in
Para obter mais informações sobre a configuração do plug-in, consulte Plug-in de controle de acesso baseado em endereço IP.
6,1. Criar um conjunto de dados de plug-in
Faça login no console do API Gateway e selecione uma região. No painel de navegação à esquerda, escolha .
Na página Plug-in List, clique em na aba Plug-in Datasets. No canto superior direito da aba, clique em Criar Conjunto de Dados. Na caixa de diálogo exibida, insira um Name para o conjunto de dados e selecione IP_WHITELIST_CIDR na lista suspensa Type.
-
Clique em no ID do conjunto de dados desejado para acessar sua página de detalhes. Clique em Criar Entrada de Conjunto de Dados. Na caixa de diálogo exibida, insira um Data Value (um endereço IP ou um bloco CIDR) e especifique o Validity Period. As entradas de dados expiram automaticamente.
Para Validity Period, selecione Short-term (especificando uma data de expiração) ou Long-term. Opcionalmente, insira também uma Description.
Os conjuntos de dados de plug-in têm efeito apenas em instâncias dedicadas. Se um plug-in que utiliza um conjunto de dados estiver vinculado a uma API fora de uma instância dedicada, a configuração do conjunto de dados não será aplicada.
6,2. Configurar o plug-in com um conjunto de dados
Para usar um conjunto de dados de plug-in em um plug-in de controle de acesso baseado em endereço IP, adicione o campo blocksDatasetId a um item no array items. Os campos blocksDatasetId e blocks são compatíveis. Dentro de cada item, use blocksDatasetId e blocks em conjunto ou individualmente.
---
type: ALLOW
items:
- blocksDatasetId: 87b65008e92541938537b1a4a236eda5
appId: 219810
- blocksDatasetId: 87b65008e92541938537b1a4a236eda3
blocks:
- 127.0.XX.XX
- 192.168.XX.XX/24