Quero permitir que somente endereços IP específicos acessem minha API REST do Amazon API Gateway.
Breve descrição
Para permitir que somente endereços IP específicos acessem a API REST, crie uma política de recursos que negue acesso a todos os outros endereços IP.
Depois de anexar a política de recursos à API REST, os usuários com permissões podem chamar a API a partir de endereços IP específicos. A API nega chamadas de qualquer outro endereço IP e mostra um erro “HTTP 403 Forbidden”.
Para bloquear endereços IP específicos e permitir o acesso de todos os outros, consulte Exemplo: negar tráfego da API com base no intervalo ou endereço IP de origem.
Observação: é possível usar políticas de recursos para APIs HTTP do API Gateway.
Resolução
Configure um método de API
Para testar o acesso, use sua API REST existente do API Gateway ou crie uma API REST de exemplo. Se você usar a API de exemplo PetStore, vá para a seção Criar e anexar uma política de recursos.
Para criar uma integração simulada para sua API REST existente, conclua as seguintes etapas:
- Abra o console do API Gateway.
- Escolha sua API REST.
- No painel Recursos, em Métodos, selecione Criar método.
- Em Tipo de método, selecione QUALQUER.
- Em Tipo de integração, selecione Simulação.
Observação: a integração simulada responde a qualquer solicitação recebida.
- Selecione Criar método.
Crie e anexe a política de recursos
Conclua as seguintes etapas:
- Abra o console do API Gateway.
- Escolha sua API REST.
- No painel de navegação, selecione Política de recurso.
- Selecione Criar política.
- Em Política de recursos, insira a seguinte política de recursos:
{ "Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*/*/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*/*/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"]
}
}
}
]
}
Observação: substitua sourceIpOrCIDRBlock pelos endereços IP aos quais você deseja conceder acesso. Use uma notação CIDR para especificar um intervalo de endereços IP, como por exemplo ["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]. A condição aws:SourceIp funciona somente para intervalos de endereços IP públicos. Para permitir acesso a intervalos de endereços IP privados, use a condição aws:VpcSourceIp. Em aws:VpcSourceIp, insira o endereço IP privado do cliente HTTP que invoca seu endpoint de API privado por meio do endpoint de nuvem privada virtual (VPC) da interface. É possível invocar endpoints de API privados no API Gateway somente por meio de um endpoint da VPC de interface.
- Selecione Salvar alterações.
Para encontrar os endereços IP privados que chamam sua API REST, verifique os Amazon CloudWatch Logs. Para obter mais informações, consulte Tutorial: Exibir CloudWatch Logs.
Implante sua API
Conclua as etapas a seguir:
- Abra o console do API Gateway.
- Escolha sua API REST.
- No painel Recursos da sua API REST, selecione Implantar API.
- Em Estágio de implantação, escolha Novo estágio.
- Em Nome do estágio, insira um nome. Por exemplo, insira v1 ou demo.
- Selecione Implantar.
Importante: você deve reimplantar sua API REST sempre que fizer alterações na sua política de recursos.
Teste a política de recursos
Com base no seu sistema operacional (SO), execute um dos seguintes comandos para testar um ambiente com um endereço IP permitido.
Ambientes Linux, Unix e macOS:
curl -IX GET https://yourInvokeUrl/
Windows PowerShell:
curl https://yourInvokeUrl/
Observação: substitua https://yourInvokeUrl/ pelo URL de invocação da sua API REST.
Se você configurou corretamente a política de recursos, o ambiente permitido recebe uma resposta “HTTP 200 OK”. Execute novamente o mesmo comando em um ambiente sem um endereço IP permitido. Um ambiente negado recebe um erro “HTTP 403 Forbidden”.
Para testar sua política de recursos, também é possível usar a aplicação Postman no site do Postman.
Observação: se você não tiver acesso a vários ambientes, execute uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Em seguida, adicione o endereço IP da instância à política de recursos da sua API e reimplante sua API.
Informações relacionadas
Criar e anexar uma política de recursos do API Gateway a uma API
Exemplos de políticas de recursos do API Gateway
Visão geral da linguagem de políticas de acesso para o Amazon API Gateway
Controlar e gerenciar o acesso às APIs REST no API Gateway