Come posso consentire solo a indirizzi IP specifici di accedere alla mia REST API di API Gateway?

5 minuti di lettura
0

Desidero consentire l'accesso solo a indirizzi IP specifici alla mia REST API di Amazon API Gateway. Come posso limitare l'accesso alla mia REST API di API Gateway?

Breve descrizione

Crea una politica delle risorse per la tua REST API che neghi l'accesso a qualsiasi indirizzo IP non specificamente consentito.

Dopo aver allegato la politica delle risorse a REST API, gli utenti che chiamano l'API da indirizzi IP specificati (utenti consentiti) possono accedere all'API. L’accesso viene negato alle chiamate da qualsiasi altro indirizzo IP e viene visualizzato un errore HTTP 403 Proibito.

Per bloccare indirizzi IP specifici e consentire l'accesso a tutti gli altri, vedi Esempio: Nega il traffico API in base all'indirizzo o all'intervallo IP di origine.

Nota: Le API Gateway HTTP di API attualmente non supportano le politiche sulle risorse .

Risoluzione

Nota: Per la seguente procedura, puoi utilizzare il REST API di API Gateway esistente o creare un REST API di esempio per eseguire test. Se utilizzi l'API a titolo di esempio (PetStore), passa alla seconda sezione: Crea e allega una politica delle risorse che consente solo l'accesso a un indirizzo IP specifico al REST API di API Gateway.

Configurare un metodo API

1.    Apri la console API Gateway.

2.    Scegli la tua REST API.

3.    Nel riquadro Risorse, seleziona Azioni. Quindi, seleziona Crea Metodo.

4.    Nell'elenco a discesa sotto il nodo / risorsa, seleziona QUALSIASI. Quindi, seleziona l'icona del segno di spunta.

5.    Nel riquadro / - ANY - Setup, per Tipo di integrazione, seleziona Mock.

6.    Seleziona Salva.

Nota: Una simulazione di integrazione risponde a qualsiasi richiesta ricevuta, fattore che aiuta in seguito con i test.

Crea e allega una politica delle risorse che consente solo indirizzi IP specifici di accedere al REST API di API Gateway

1.    Apri la console API Gateway.

2.    Nel riquadro di navigazione a sinistra, selezionaPolitica risorse.

3.    Nella casella di testo Politica risorse, incolla il seguente esempio di politica delle risorse:

Esempio di politica delle risorse

{
  "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.    Per aws:SourceIp, sostituisci il valore sourceIpOrCIDRBlock con gli indirizzi IP specifici a cui intendi concedere l'accesso. È altresì possibile specificare un intervallo di indirizzi IP utilizzando la notazione CIDR.

Esempio di stringa di indirizzo IP pubblico elencata nella notazione CIDR

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

Importante: Il valore della condizione aws:SourceIp funziona solo per intervalli di indirizzi IP pubblici. Per consentire l'accesso a intervalli di indirizzi IP privati, utilizza invece il valore della condizione aws:VpcSourceIp. Quindi, per il valore aws:VpcSourceIp, inserisci l'indirizzo IP privato del tuo client HTTP che richiama il tuo endpoint API privato tramite l’endpoint dell’interfaccia VPC. Tieni presente che puoi richiamare gli endpoint API privati in API Gateway esclusivamente tramite un endpoint VPC di interfaccia. Per ulteriori informazioni, consulta aws:VpcSourceIp.

4.    Seleziona Salva.

Nota: La variabile $context.identity.sourceIp in Amazon CloudWatch Logs elenca tutti gli indirizzi IP privati che richiamano la tua REST API. Per ulteriori informazioni, consulta Variabili $context per modelli di dati, autorizzazioni, modelli di mappatura e registrazione degli accessi a CloudWatch.

Implementa la tua API

1.    Nel riquadro Risorse della tua REST API, seleziona Azioni.

  1. Scegli Implementa API.

3.    Per la fase di implementazione, scegli [Nuova fase].

4.    Per Nome fase, inserisci una denominazione. Ad esempio: v1 o demo.

5.    Scegli Implementa.

Importante: Occorre ridistribuire il REST API ogni volta che si apportano modifiche alla politica delle risorse.

Verifica la politica delle risorse

Verifica che la tua REST API restituisca una risposta HTTP 200 OK agli indirizzi IP consentiti testando l'URL di richiamo dell'API utilizzando curl o l'app Postman. Quindi, esegui un altro test da un ambiente senza un indirizzo IP consentito per confermare che la tua REST API restituisca un errore HTTP 403 Forbidden.

Nota: Se non hai accesso a più ambienti per i test, puoi configurare un'istanza Amazon Elastic Compute Cloud (Amazon EC2). Se utilizzi un'istanza Amazon EC2 per i test, assicurati di aggiungere prima l'indirizzo IP dell'istanza alla politica sulle risorse della tua API. A continuazione, ridistribuisci la tua API.

Per testare la tua REST API per una risposta HTTP 200 OK o un errore HTTP 403 utilizzando curl

In base al sistema operativo, esegui uno dei seguenti comandi.

Importante: Sostituisci https://yourInvokeUrl/ con l’URL di richiamo della tua REST API.

Per ambienti Linux, Unix e macOS, esegui il seguente comando:

curl -IX GET https://yourInvokeUrl/

Per Windows PowerShell, esegui il seguente comando:

curl https://yourInvokeUrl/

Se la politica delle risorse è configurata correttamente, l'ambiente autorizzato riceve una risposta HTTP 200 OK. L'ambiente negato riceve un errore HTTP 403 Proibito.


Informazioni correlate

Creare e allegare una politica di risorse API Gateway a un'API

Esempi di politica sulle risorse di API Gateway

Sintassi delle policy di accesso per Amazon API Gateway

Controllo e gestione dell'accesso a una REST API in API Gateway