Salta al contenuto

Come posso inviare intestazioni di sicurezza personalizzate tramite Gateway API per integrazioni proxy o non proxy Lambda?

4 minuti di lettura
0

Desidero inviare intestazioni di sicurezza personalizzate tramite Gateway Amazon API per integrazioni proxy o non proxy AWS Lambda.

Risoluzione

Per aggiungere intestazioni di sicurezza personalizzate nelle risposte di Gateway API, segui il metodo corrispondente al tipo di integrazione.

Nota: la seguente risoluzione si applica solo alle REST API di Gateway API. Le API HTTP non supportano la mappatura della risposta del metodo o della risposta dell'integrazione.

Integrazioni proxy Lambda

Per le integrazioni proxy Lambda, Gateway API invia la richiesta e la risposta tra il client e la funzione Lambda integrata senza modifiche. Per inviare intestazioni di sicurezza personalizzate da un'API di Gateway API a una funzione Lambda, devi modificare il codice di origine della funzione.

Completa i seguenti passaggi:

  1. Apri la console Gateway API.

  2. Nel pannello di navigazione, scegli API, quindi seleziona la REST API.

  3. Scegli Crea metodo.

  4. Nel pannello Crea metodo, intraprendi le seguenti azioni:
    Per Tipo di metodo, scegli il tipo di metodo.
    Per Tipo di integrazione, scegli Funzione Lambda.
    Verifica di aver attivato l'integrazione proxy Lambda.
    Per Funzione Lambda, seleziona la funzione Lambda.
    Scegli Crea metodo.

  5. Nel pannello Richiesta di integrazione, seleziona la funzione Lambda.

  6. Per Origine del codice, sostituisci il codice della funzione con il seguente codice Python o il codice Node.js nell'editor di codice.
    Python 3.14 e versioni successive:

    def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'headers': {
            "Strict-Transport-Security": "max-age=100000",
            "X-Frame-Options": "DENY",
            "X-Content-Type-Options": "nosniff",
            "Content-Security-Policy": "default-src 'self'"
         },
        'body': json.dumps("Hello from Lambda with security headers!")
    }

    Node.js 14 e versioni successive:

    exports.handler = async (event) => {
        const response = {
            statusCode: 200,
            headers: {
                'Strict-Transport-Security': 'max-age=31536000; includeSubDomains',
                'Content-Security-Policy': "default-src 'self'",
                'X-Frame-Options': 'DENY',
                'X-Content-Type-Options': 'nosniff'
            },
            body: JSON.stringify('Hello from Lambda with security headers!')
        };
        return response;
    };
  7. Scegli Distribuisci.

Integrazioni non proxy

Per inviare intestazioni di sicurezza personalizzate tramite integrazioni non proxy o personalizzate, come i tipi di integrazione del servizio AWS e HTTP, crea un modello di mappatura o una risposta del metodo.

Crea un modello di mappatura

Completa i seguenti passaggi:

  1. Apri la console Gateway API.

  2. Nel pannello di navigazione, scegli API, quindi seleziona la REST API.

  3. Nel pannello Crea metodo, inserisci il tipo di metodo e il tipo di integrazione, quindi scegli Crea metodo.

  4. Nel pannello Richiesta di integrazione, scegli Modifica.

  5. Espandi Modelli di mappatura, quindi scegli Aggiungi modello di mappatura.

  6. In Tipo di contenuto, inserisci il tipo di contenuto. Ad esempio, application/json.

  7. Nell'editor Corpo del modello, inserisci il seguente modello di mappatura:

    #set($headersToReturn = {  
      "Strict-Transport-Security": "max-age=31536000; includeSubDomains"  
    })#foreach($header in $headersToReturn.keySet())  #set($context.responseOverride.header[$header] = $headersToReturn[$header])#end
  8. Scegli Salva.

  9. Scegli Distribuisci l'API.

Crea una risposta del metodo

Completa i seguenti passaggi:

  1. Apri la console Gateway API.
  2. Nel pannello di navigazione, scegli API, quindi seleziona la REST API.
  3. Nel pannello Risposta metodo, scegli Modifica.
  4. Per Nome intestazione, scegli Aggiungi intestazione.
  5. Inserisci il nome dell'intestazione personalizzata che desideri restituire, ad esempio Strict-Transport-Security.
  6. Scegli **Aggiungi intestazione ** per aggiungere un'altra intestazione che desideri restituire, ad esempio Content-Security-Policy.
  7. Scegli Salva.
  8. Nel pannello Richiesta di integrazione, scegli Modifica.
  9. In Mappature intestazione, inserisci i valori di mappatura dell'intestazione, ad esempio max-age=100000 e self.
  10. Scegli Salva, quindi seleziona Distribuisci l'API.

Esegui un test della configurazione

Per verificare che le intestazioni di sicurezza personalizzate siano incluse nella risposta, esegui questo comando curl per invocare la REST API:

curl -v https://your-api-id.execute-api.your-region.amazonaws.com/your-stage-name

Nota: sostituisci your-api-id con la tua REST API, your-region con la tua Regione AWS e your-stage-name con il nome della tua fase.

Informazioni correlate

Come posso passare intestazioni personalizzate tramite Gateway API a una funzione Lambda con integrazione personalizzata Lambda (non proxy)?

Trasformazioni dei modelli di mappatura per REST API in Gateway API

Come posso risolvere gli errori HTTP 502 generati dalle REST API di Gateway API con l'integrazione proxy Lambda?

Tutorial: creazione di una REST API con un'integrazione non proxy Lambda