Come posso consentire l'accesso ai miei bucket Amazon S3 ai clienti che non utilizzano TLS 1.2 o versioni successive?

8 minuti di lettura
0

I miei clienti non utilizzano TLS 1.2 o versioni successive, quindi non possono accedere ai contenuti archiviati nei miei bucket Amazon Simple Storage Service (Amazon S3). Voglio consentire a questi clienti l'accesso ai contenuti nei miei bucket Amazon S3 utilizzando TLS 1.0 o 1.1.

Breve descrizione

AWS impone l'utilizzo di TLS 1.2 o versioni successive per tutti gli endpoint API AWS. Per continuare a connetterti ai servizi AWS, aggiorna tutti i software che utilizzano TLS 1.0 o 1.1.

Risoluzione

Amazon CloudFront consente l'utilizzo di versioni meno recenti di TLS astraendo i clienti dal protocollo TLS utilizzato tra la distribuzione CloudFront e Amazon S3.

Creare una distribuzione CloudFront con OAC

Con CloudFront, è possibile supportare richieste anonime e pubbliche ai bucket S3. In alternativa, è possibile rendere i bucket S3 privati e accessibili tramite CloudFront solo imponendo richieste firmate per accedere ai bucket S3.

Supportare richieste anonime ai bucket S3

Nota: l'esempio seguente presuppone che tu disponga già di un bucket S3 in uso. Se non disponi di un bucket S3, creane uno.

Per creare la distribuzione CloudFront, segui questa procedura:

  1. Apri la console CloudFront.
  2. Scegli Crea distribuzione.
  3. In Origine, scegli l'endpoint REST API del bucket S3 come Dominio di origine dal menu a tendina.
  4. Per Policy protocollo visualizzatore, seleziona Reindirizza HTTP a HTTPS.
  5. Per Endpoint HTTP consentiti, seleziona GET, HEAD, OPTIONS per supportare richieste di lettura.
  6. Nella sezione Accesso origine, seleziona Impostazioni di controllo degli accessi origine (consigliato).
  7. Seleziona Crea impostazione di controllo e utilizza il nome predefinito. Come comportamento di firma, seleziona Richieste di firma (consigliato) e seleziona Crea. Le impostazioni consigliate del controllo degli accessi origine (OAC) autenticano automaticamente la richiesta del visualizzatore.
  8. Seleziona l'identità nel menu a tendina. Dopo la creazione della distribuzione, aggiorna la policy di bucket per limitare l'accesso a OAC.
  9. In Comportamento predefinito della cache, Visualizzatore, seleziona Reindirizza HTTP a HTTPS come Policy protocollo visualizzatore e lascia le altre impostazioni predefinite.
  10. In Chiave di cache e richieste di origine, seleziona Policy della cache e policy di richiesta di origine (consigliato). Quindi, utilizza CachingOptimized come policy della cache e CORS-S3Origin come policy di richiesta di origine.
  11. Seleziona Crea distribuzione e aspetta che lo stato venga aggiornato a Abilitato.

Imporre richieste firmate per accedere ai bucket S3

Aggiungi maggiore sicurezza ai bucket S3 supportando solamente richieste firmate. Con le richieste firmate, OAC segue i parametri di autenticazione e li inoltra all'origine S3, che nega così le richieste anonime.

Per creare una distribuzione CloudFront che imponga richieste firmate per accedere ai bucket S3, segui questa procedura:

  1. Apri la console CloudFront.
  2. Scegli Crea distribuzione.
  3. In Origine, scegli l'endpoint REST API del bucket S3 come Dominio di origine dal menu a tendina.
  4. Per Policy protocollo visualizzatore, seleziona Reindirizza HTTP a HTTPS.
  5. Per Endpoint HTTP consentiti, seleziona GET, HEAD, OPTIONS per supportare richieste di lettura.
  6. Nella sezione Accesso origine, seleziona Impostazioni di controllo degli accessi origine (consigliato).
  7. Blocca tutte le richieste non firmate selezionando l'opzione Non firmare le richieste.
    Nota: con il blocco delle richieste non firmate, è necessario che ogni cliente firmi le proprie richieste in modo che l'origine S3 possa valutare le autorizzazioni.
  8. Crea una policy della cache personalizzata per inoltrare l'intestazione di autorizzazione del cliente all'origine.
  9. In Chiave di cache e richieste di origine, seleziona Policy della cache e policy di richiesta di origine (consigliato).
  10. Seleziona Crea policy.
  11. Inserisci un nome per la policy della cache nella sezione Nome.
  12. In Impostazioni chiave di cache, vai a Intestazioni e seleziona Includi le seguenti intestazioni.
  13. In Aggiungi intestazione, seleziona Autorizzazione.
  14. Seleziona Crea.

Controllare la policy di sicurezza del cliente

Per controllare una policy di sicurezza in CloudFront, devi disporre di un dominio personalizzato. È consigliabile specificare un nome di dominio alternativo per la distribuzione. È inoltre consigliabile utilizzare un certificato SSL personalizzato configurato in Gestione certificati AWS (ACM). In questo modo avrai maggiore controllo sulla policy di sicurezza e consentirai ai clienti di continuare a utilizzare TLS 1.0. Per ulteriori informazioni, consulta la pagina Protocolli e crittografie supportate tra visualizzatori e CloudFront.

Se utilizzi il nome di dominio predefinito *.cloudfront.net, CloudFront fornisce automaticamente un certificato e configura la policy di sicurezza in modo da consentire TLS 1.0 e 1.1. Per ulteriori informazioni, consulta Impostazioni di distribuzione.

Per configurare un nome di dominio alternativo per la distribuzione CloudFront, segui questa procedura:

  1. Accedi alla Console di gestione AWS, quindi apri la console CloudFront.
  2. Scegli l'ID della distribuzione che desideri aggiornare.
  3. Nella scheda Generale, scegli Modifica.
  4. In Nomi di dominio alternativi (CNAME), scegli Aggiungi elemento e inserisci il nome di dominio.
    Nota: È consigliabile utilizzare un nome canonico (CNAME) personalizzato per accedere alle risorse. L'uso di un CNAME offre maggiore controllo sul routing e consente una transizione migliore per i clienti.
  5. In Certificato SSL personalizzato, scegli dal menu a tendina il certificato SSL personalizzato che copre il CNAME per assegnarlo alla distribuzione.
    Nota: per ulteriori informazioni sull'installazione di un certificato, consulta la pagina Come posso configurare la mia distribuzione CloudFront per utilizzare un certificato SSL/TLS?
  6. Scegli Crea distribuzione e aspetta che lo stato venga aggiornato a Abilitato.

Dopo aver creato la distribuzione, devi consentire l'accesso al bucket a OAC. Completa i seguenti passaggi:

  1. Vai alla pagina della console CloudFront e apri la distribuzione CloudFront.
  2. Seleziona la scheda Origini, seleziona la tua origine e clicca su Modifica.
  3. Scegli Copia policy, apri l'autorizzazione del bucket e aggiorna la policy di bucket.
  4. Apri la pagina Vai alle autorizzazioni del bucket S3.
  5. In Policy di bucket, scegli Modifica. Incolla la politica copiata in precedenza e scegli Salva. Se la policy di bucket richiede più della semplice lettura da S3, puoi aggiungere le API necessarie.

Se utilizzi un nome di dominio personalizzato, modifica le voci DNS per utilizzare il nuovo URL della distribuzione CloudFront. Se non utilizzi un nome di dominio personalizzato, devi fornire il nuovo URL della distribuzione CloudFront agli utenti. Inoltre, è necessario aggiornare qualsiasi software client o dispositivo che utilizza il vecchio URL.

Se utilizzi un AWS SDK per accedere agli oggetti Amazon S3, devi modificare il codice per utilizzare i normali endpoint HTTPS. Inoltre, assicurati di utilizzare il nuovo URL CloudFront. Se gli oggetti non sono pubblici e richiedono maggiore controllo, puoi eseguire contenuti privati con URL firmati e cookie firmati.

Utilizzare URL prefirmati S3 per accedere agli oggetti

Se il flusso di lavoro si basa su URL prefirmati S3, utilizza una distribuzione CloudFront per trasmettere la query all'origine S3. Per prima cosa, genera un URL prefirmato per l'oggetto che desideri. Quindi sostituisci l'host nell'URL con l'endpoint CloudFront per consegnare la chiamata tramite CloudFront e aggiornare automaticamente il protocollo di crittografia. Per testare e generare un URL prefirmato, esegui il seguente comando dell'interfaccia della linea di comando (CLI):

aws s3 presign s3://BUCKET_NAME/test.jpg

Esempio di output:

https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature    =[...]

Ora sostituisci l'URL S3 con il nuovo endpoint CloudFront. Ad esempio, sostituisci questo URL S3:

BUCKET_NAME.s3.eu-west-1.amazonaws.com

con questo endpoint:

https://DISTRIBUTION_ID.cloudfront.net.

Esempio di output:

https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]

Per utilizzare URL prefirmati, applica le seguenti impostazioni di CloudFront:

  1. Imposta il comportamento di firma OAC su Non firmare le richieste.
  2. Imposta la policy di richiesta di origine della distribuzione CloudFront su Impostazioni richiesta di origine: Intestazioni – Nessuna; Cookie – Nessuno; Stringhe di query – Tutte.
  3. Imposta la politica della cache su Intestazioni – Nessuna; Cookie – Nessuno; Stringhe di query – Nessuna.

In AWS CloudTrail, la richiesta GET di download da un URL S3 prefirmato viene visualizzata come l'identità che ha generato l'URL prefirmato.

Se utilizzi un AWS SDK per accedere agli oggetti S3, devi modificare il codice per utilizzare l'URL prefirmato. Utilizza invece una normale richiesta HTTPS e utilizza il nuovo URL CloudFront.

Verificare di utilizzare protocolli di crittografia moderni per Amazon S3

Per testare la nuova policy, utilizza il seguente comando curl di esempio per effettuare richieste HTTPS utilizzando uno specifico protocollo legacy:

curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0

Il comando curl di esempio effettua una richiesta a CloudFront utilizzando TLS 1.0. In questo mdoo si connette all'origine S3 utilizzando TLS 1.2 e scarica correttamente il file.

È consigliabile utilizzare Data Lake AWS CloudTrail per identificare connessioni TLS meno recenti agli endpoint dei servizi AWS. È possibile configurare il data store degli eventi di data lake CloudTrail perché registri eventi di gestione o eventi di dati. L'evento CloudTrail corrispondente nel data lake CloudTrail mostra la versione 1.2 di TLS, a conferma del fatto che i clienti utilizzano una policy di sicura moderna per connettersi ad Amazon S3.

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa