Considerazioni sulla sicurezza per Canary Synthetics - Amazon CloudWatch

Considerazioni sulla sicurezza per Canary Synthetics

Nelle sezioni seguenti vengono descritti i problemi di sicurezza che occorre considerare durante la creazione e l'esecuzione di Canary in Synthetics.

Utilizzo di connessioni sicure

Poiché il codice Canary e i risultati delle sessioni di test Canary possono contenere informazioni riservate, non connettere il Canary a endpoint su connessioni non crittografate. Utilizza sempre connessioni crittografate, ad esempio quelle che iniziano con https://.

Considerazioni sulle convenzioni di denominazione dei Canary

L'Amazon Resource Name (ARN) di un Canary è incluso nell'intestazione user-agent come parte delle chiamate in uscita effettuate dal browser Chromium basato su Puppeteer incluso come una parte della libreria wrapper di CloudWatch Synthetics. Questo consente di identificare il traffico Canary di CloudWatch Synthetics e di rapportarlo ai Canary che stanno effettuando chiamate.

L'ARN del Canary include il nome Canary. Scegli nomi Canary che non rivelano informazioni proprietarie.

Inoltre, assicurati di indirizzare i Canary solo ai siti Web e agli endpoint che controlli.

Segreti e informazioni sensibili in codice canary

Durante il trasferimento del codice in un canary tramite un file con estensione zip, è possibile visualizzare il contenuto dello script nei registri AWS CloudTrail.

Se lo script canary contiene informazioni sensibili o segreti (come chiavi di accesso o credenziali del database), ti consigliamo di archiviare lo script come oggetto con controllo delle versioni in Amazon S3 e trasferire la posizione Amazon S3 al canary, invece di trasferire il codice canary tramite un file con estensione zip.

Se vuoi utilizzare un file con estensione zip per trasferire lo script canary, ti consigliamo di non includere segreti o informazioni sensibili nel codice sorgente del canary. Per ulteriori informazioni su come utilizzare Gestione dei segreti AWS per mantenere al sicuro i segreti, consulta Cos'è Gestione dei segreti AWS?.

Considerazioni sulle autorizzazioni

Ti consigliamo di limitare l'accesso alle risorse create o utilizzate da CloudWatch Synthetics. Utilizza le autorizzazioni strette sui bucket Amazon S3 in cui i Canary archiviano i risultati della sessione di test e altri artefatti, come log e screenshot.

Allo stesso modo, mantieni autorizzazioni strette sulle posizioni in cui è archiviato il codice sorgente del Canary, in modo che nessun utente cancelli accidentalmente o intenzionalmente i livelli Lambda o le funzioni Lambda utilizzate per il Canary.

Per essere sicuro di eseguire il codice Canary desiderato, puoi utilizzare funzione Versioni multiple degli oggetti sul bucket Amazon S3 in cui è archiviato il codice del Canary. Quindi, quando specifichi questo codice da eseguire come un Canary, puoi includere l'oggetto versionId come parte del percorso, come negli esempi seguenti.

https://bucket.s3.amazonaws.com/path/object.zip?versionId=version-id https://s3.amazonaws.com/bucket/path/object.zip?versionId=version-id https://bucket.s3-region.amazonaws.com/path/object.zip?versionId=version-id

Tracce di stack e messaggi di eccezione

Per impostazione predefinita, i Canary CloudWatch Synthetics acquisiscono qualsiasi eccezione generata dallo script Canary, a prescindere che lo script sia personalizzato o proveniente da un piano. CloudWatch Synthetics registra sia il messaggio di eccezione sia la traccia di stack in tre posizioni:

  • Nel servizio CloudWatch Synthetics per velocizzare il debug durante la descrizione delle sessioni di test

  • In CloudWatch Logs a seconda della configurazione utilizzata per creare le funzioni Lambda

  • Nel file di log Synthetics, che è un file di testo normale che viene caricato nella posizione Amazon S3 specificata dal valore impostato per il resultsLocation del Canary

Se desideri inviare e archiviare meno informazioni, puoi acquisire le eccezioni prima che tornino nella libreria wrapper di CloudWatch Synthetics.

Puoi anche avere URL di richiesta nei tuoi errori. CloudWatch Synthetics esegue la scansione di eventuali URL nell'errore generato dallo script e redige i parametri URL limitati da essi in base alla configurazione restrictedUrlParameters. Se registri messaggi di errore nello script, puoi utilizzare getSanitizedErrorMessage per redigere gli URL prima della registrazione.

Restrizione dell'ambito dei ruoli IAM

Ti consigliamo di non configurare il Canary per visitare URL o endpoint potenzialmente dannosi. Indirizzare il Canary a siti Web o endpoint non attendibili o sconosciuti potrebbe esporre il codice della funzione Lambda a script di utenti malintenzionati. Se un sito Web dannoso interrompe Chromium, potrebbe accedere al codice Lambda in modo simile a quanto accade quando ci si connette utilizzando un browser Internet.

Esegui la funzione Lambda con un ruolo di esecuzione IAM che dispone di un numero minore di autorizzazioni. In questo modo, se la funzione Lambda è compromessa da uno script dannoso, risulta limitata nelle operazioni che può intraprendere durante l'esecuzione come account AWS del Canary.

Quando utilizzi la console CloudWatch per creare un Canary, questa viene creata con un ruolo di esecuzione IAM con autorizzazioni ridotte.

Redazione dei dati sensibili

CloudWatch Synthetics acquisisce URL, codice di stato, motivo dell'errore (se presente), intestazioni e corpi di richieste e risposte. Ciò consente a un utente canary di comprendere, monitorare ed eseguire il debug dei canary.

Le configurazioni descritte nelle sezioni seguenti possono essere impostate in qualsiasi momento dell'esecuzione del canary. Puoi anche scegliere di applicare configurazioni diverse a diversi passaggi di Synthetics.

URL della richiesta

Per impostazione predefinita, i registri CloudWatch Synthetics richiedono URL, codici di stato e il motivo di stato per ogni URL nei registri Canary. Gli URL della richiesta possono essere visualizzati anche nei report di esecuzione dei canary, nei file HAR e così via. L'URL della richiesta potrebbe contenere parametri di query sensibili, ad esempio token di accesso o password. Puoi redigere informazioni sensibili dalla registrazione di CloudWatch Synthetics.

Per redigere informazioni riservate, imposta la proprietà di configurazione restrictedUrlParameters. Per ulteriori informazioni, consulta Classe SyntheticsConfiguration. In questo modo CloudWatch Synthetics redige i parametri URL, inclusi i valori dei parametri di percorso e query, in base a restrictedUrlParameters prima della registrazione. Se registri gli URL nello script, puoi utilizzare getSanitizedUrl(url, stepConfig = null) per redigere gli URL prima della registrazione. Per ulteriori informazioni, consulta Classe SyntheticsLogHelper.

Headers

Per impostazione predefinita, CloudWatch Synthetics non registra le intestazioni della richiesta/risposta. Per i canary dell'interfaccia utente, questo è il comportamento predefinito per i canary che utilizzano la versione di runtime syn-nodejs-puppeteer-3.2 e versioni successive.

Se le intestazioni non contengono informazioni riservate, puoi abilitare le intestazioni nei report HAR e HTTP impostando la proprietà includeRequestHeaders e includeResponseHeaders su true. Puoi abilitare tutte le intestazioni, ma scegliere di limitare i valori delle chiavi di intestazione sensibili. Puoi ad esempio scegliere di redigere solo intestazioni Authorization da artefatti prodotti dai canary.

Corpo della richiesta e della risposta

Per impostazione predefinita, CloudWatch Synthetics non registra il corpo di richiesta/risposta nei registri o nei report canary. Queste informazioni sono particolarmente utili per i canary delle API. Synthetics acquisisce tutte le richieste HTTP e può mostrare intestazioni e corpi delle richieste e della risposta. Per ulteriori informazioni, consulta executeHttpStep(stepName, requestOptions, [callback], [stepConfig]). Puoi possibile scegliere di abilitare il corpo della richiesta/risposta impostando le proprietà includeRequestBody e includeResponseBody su true.