Ir para o conteúdo

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

4 minuto de leitura
0

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:

  1. Abra o console do API Gateway.
  2. Escolha sua API REST.
  3. No painel Recursos, em Métodos, selecione Criar método.
  4. Em Tipo de método, selecione QUALQUER.
  5. Em Tipo de integração, selecione Simulação.
    Observação: a integração simulada responde a qualquer solicitação recebida.
  6. Selecione Criar método.

Crie e anexe a política de recursos

Conclua as seguintes etapas:

  1. Abra o console do API Gateway.
  2. Escolha sua API REST.
  3. No painel de navegação, selecione Política de recurso.
  4. Selecione Criar política.
  5. 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.
  6. 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:

  1. Abra o console do API Gateway.
  2. Escolha sua API REST.
  3. No painel Recursos da sua API REST, selecione Implantar API.
  4. Em Estágio de implantação, escolha Novo estágio.
  5. Em Nome do estágio, insira um nome. Por exemplo, insira v1 ou demo.
  6. 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