Como faço para permitir que somente endereços IP específicos acessem minha API REST do API Gateway?

5 minuto de leitura
0

Quero permitir que somente endereços IP específicos acessem minha API REST do Amazon API Gateway. Como faço para restringir o acesso à minha API REST do API Gateway?

Breve descrição

Crie uma política de recursos para sua API REST que negue o acesso a qualquer endereço IP que não seja especificamente permitido.

Depois que a política de recursos for anexada à sua API REST, os usuários que chamarem a API de endereços IP especificados (usuários permitidos) poderão acessar a API. Chamadas de qualquer outro endereço IP têm acesso negado e recebem um erro HTTP 403 Proibido.

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: atualmente, as APIs HTTP do API Gateway não oferecem suporte a políticas de recursos.

Resolução

Observação: para o procedimento a seguir, você pode usar sua API REST do API Gateway existente ou criar um exemplo de API REST para testes. Se você usar a API de exemplo (PetStore), vá para a segunda seção: Crie e anexe uma política de recursos que permita acesso somente a endereços IP específicos à sua API REST do API Gateway.

Configurar um método de API

1.    Abra o console do API Gateway.

2.    Escolha sua API REST.

3.    No painel Recursos, escolha Ações. Em seguida, escolha Criar método.

4.    Na lista suspensa abaixo do nó / resource, escolha ANY. Em seguida, escolha o ícone de marca de seleção.

5.    No painel / - ANY - Setup, em Tipo de integração, escolha Simulação.

6.    Escolha Salvar.

Observação: uma integração simulada responde a qualquer solicitação recebida, o que ajuda posteriormente nos testes.

Crie e anexe uma política de recursos que permita acesso somente a endereços IP específicos à sua API REST do API Gateway

1.    Abra o console do API Gateway.

2.    No painel de navegação esquerdo, escolha Política de recursos.

3.    Na caixa de texto Política de recursos, cole o seguinte exemplo de política de recursos:

**Exemplo de 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"]
        }
      }
    }
  ]
}

3.    Para aws:SourceIp, substitua o valor sourceIpOrCIDRBlock pelos endereços IP específicos aos quais você deseja conceder acesso. Você também pode especificar um intervalo de endereços IP usando a notação CIDR.

Exemplo de string de endereço IP público listada na notação CIDR

["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]

Importante: o valor da 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 o valor da condição aws:VpcSourceIp em vez disso. Em seguida, para o valor aws:VpcSourceIp, insira o endereço IP privado do seu cliente HTTP que está invocando seu endpoint de API privado por meio do endpoint de VPC de interface. Você pode invocar endpoints de API privados no API Gateway somente por meio de um endpoint de VPC de interface. Para obter mais informações, consulte aws:VpcSourceIp.

4.    Escolha Salvar.

Observação: a variável $context.identity.sourceIp no Amazon CloudWatch Logs lista todos os endereços IP privados que chamam sua API REST. Para obter mais informações, consulte Variáveis $context para modelos de dados, autorizadores, modelos de mapeamento e registro em log de acesso do CloudWatch.

Implantar sua API

1.    No painel Recursos da sua API REST, escolha Ações.

2.    Escolha Implantar API.

3.    Em Estágio de implantação, escolha [Novo estágio].

4.    Em Nome do estágio, insira um nome. Por exemplo: v1 ou demo.

5.    Escolha Implantar.

Importante: você deverá reimplantar sua API REST sempre que fizer alterações na política de recursos.

Testar a política de recursos

Confirme se a sua API REST retorna uma resposta HTTP 200 OK para endereços IP permitidos testando o URL de invocação da sua API usando curl ou a aplicação Postman. Em seguida, execute outro teste em um ambiente sem um endereço IP permitido para confirmar que sua API REST retorna um erro HTTP 403 Proibido.

Observação: se você não tiver acesso a vários ambientes para testes, poderá configurar uma instância do Amazon Elastic Compute Cloud (Amazon EC2). Se você usar uma instância do Amazon EC2 para testes, certifique-se de adicionar primeiro o endereço IP da instância à política de recursos da sua API. Em seguida, reimplante sua API.

Para testar sua API REST em busca de uma resposta HTTP 200 OK ou erro HTTP 403 usando curl

Com base no seu sistema operacional, execute um dos comandos a seguir.

Importante: substitua https://yourInvokeUrl/ pelo URL de invocação da sua API REST.

Para ambientes Linux, Unix e macOS, execute o seguinte comando:

curl -IX GET https://yourInvokeUrl/

Para o Windows PowerShell, execute o seguinte comando:

curl https://yourInvokeUrl/

Se a política de recursos estiver configurada corretamente, o ambiente permitido receberá uma resposta HTTP 200 OK. O ambiente negado recebe um erro HTTP 403 Proibido.


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 a uma API REST no API Gateway