Limitazione della distribuzione geografica del contenuto - Amazon CloudFront

Limitazione della distribuzione geografica del contenuto

Puoi utilizzare le restrizioni geografiche, note anche come geoblocking, per impedire agli utenti in specifiche aree geografiche di accedere al contenuto distribuito tramite una distribuzione CloudFront. Per utilizzare le restrizioni geografiche, sono disponibili due opzioni:

  • Utilizzo della caratteristica CloudFront delle restrizioni geografiche. Utilizzare questa opzione per limitare l'accesso a tutti i file associati a una distribuzione e per limitare l'accesso a livello di Paese.

  • Utilizzare un servizio di geolocalizzazione di terze parti. Utilizza questa opzione per limitare l'accesso a un sottoinsieme dei file associati a una distribuzione o per limitare l'accesso a un livello più dettagliato che a livello di paese.

Utilizzo delle restrizioni geografiche di CloudFront

Quando un utente richiede contenuti, in genere CloudFront serve il contenuto richiesto indipendentemente dall'ubicazione dell'utente. Se si desidera impedire l'accesso ai contenuti a utenti in determinati Paesi, è possibile utilizzare la caratteristica delle restrizioni geografiche di CloudFront per eseguire una delle seguenti operazioni:

  • Permettere agli utenti di accedere al contenuto solo se si trovano in uno dei Paesi inclusi in una lista di Paesi consentiti.

  • Impedire agli utenti di accedere al contenuto se si trovano in uno dei Paesi inclusi in un elenco di Paesi bloccati.

Ad esempio, se una richiesta proviene da un Paese in cui, per motivi di copyright, non sei autorizzato a distribuire il contenuto, puoi utilizzare le restrizioni geografiche di CloudFront per bloccare la richiesta.

Nota

CloudFront determina la posizione degli utenti utilizzando un database GeoIP di terze parti. La precisione della mappatura tra indirizzi IP e paesi varia in base alla regione. Sulla base di test recenti, la precisione globale è del 99,8%. Se CloudFront non è in grado di determinare la posizione di un utente, fornisce i contenuti richiesti dall'utente.

Di seguito viene descritto il funzionamento delle restrizioni geografiche:

  1. Supponiamo che hai i diritti per distribuire il tuo contenuto solo in Liechtenstein. Aggiorni la distribuzione CloudFront e aggiungi un elenco che contiene solo il Liechtenstein. In alternativa, puoi aggiungere un elenco di blocchi che contiene ogni Paese eccetto il Liechtenstein.

  2. Un utente a Monaco richiede i tuoi contenuti e il DNS instrada la richiesta alla posizione edge di CloudFront a Milano, in Italia.

  3. La posizione edge a Milano cerca la distribuzione e determina che l'utente a Monaco non è autorizzato a scaricare il contenuto.

  4. CloudFront restituisce un codice di stato HTTP 403 (Forbidden) all'utente.

È possibile configurare CloudFront per restituire un messaggio di errore personalizzato all'utente ed è possibile specificare per quanto tempo si desidera che CloudFront memorizzi nella cache la risposta di errore per il file richiesto. Il valore predefinito è 10 secondi. Per ulteriori informazioni, consulta Creazione di una pagina personalizzata di errore per codici di stato HTTP specifici.

Le restrizioni geografiche sono applicabili a un'intera distribuzione. Se hai bisogno di applicare una restrizione a una parte del contenuto e un'altra restrizione (o nessuna restrizione) a un'altra parte del contenuto, devi creare distribuzioni CloudFront distinte oppure utilizzare un servizio di geolocalizzazione di terze parti.

Se abiliti i registri standard (registri degli accessi) di CloudFront, puoi identificare le richieste che CloudFront ha rifiutato cercando le voci di registro per le quali il valore di sc-status (il codice di stato HTTP) è 403. Tuttavia, utilizzando solo i registri standard, non potrai distinguere una richiesta che CloudFront ha rifiutato in base alla posizione dell'utente da una richiesta che CloudFront ha rifiutato perché l'utente non disponeva dell'autorizzazione per accedere al file per un altro motivo. Se disponi di un servizio di geolocalizzazione di terza parte, ad esempio Digital Element o MaxMind, puoi identificare l'ubicazione delle richieste in base all'indirizzo IP nella colonna c-ip (IP client) nei log di accesso. Per ulteriori informazioni sui registri standard di CloudFront, consulta Configurazione e utilizzo di registri standard (registri di accesso).

La procedura seguente descrive come utilizzare la console CloudFront per aggiungere le restrizioni geografiche a una distribuzione esistente. Per informazioni su come utilizzare la console per creare una distribuzione, consulta Creazione di una distribuzione.

Per aggiungere le restrizioni geografiche alla distribuzione Web CloudFront (console)
  1. Accedi alla AWS Management Console e apri la console CloudFront all'indirizzo https://console.aws.amazon.com/cloudfront/v3/home.

  2. Scegli la distribuzione che intendi aggiornare.

  3. Scegli Geographic restrictions (Restrizioni geografiche).

  4. Scegli Modifica.

  5. Seleziona Allow list (Elenco consentiti) per creare un elenco di Paesi consentiti, oppure Block list (Elenco di blocchi) per creare un elenco di Paesi bloccati.

  6. Aggiungi i Paesi desiderati all'elenco, quindi scegli Save changes (Salva modifiche).

Utilizzo di un servizio di geolocalizzazione di terza parte

La caratteristica delle restrizioni geografiche di CloudFront consente di controllare la distribuzione dei contenuti a livello di Paese per tutti i file che vengono distribuiti mediante una determinata distribuzione Web. Se esiste un caso d'uso per le restrizioni geografiche in cui le restrizioni non coincidono con i confini del Paese, oppure se desideri limitare l'accesso a solo alcuni dei file che stai distribuendo mediante una determinata distribuzione, puoi combinare CloudFront con un servizio di geolocalizzazione di terze parti. In questo modo puoi controllare l'accesso al tuo contenuto in base non solo al paese ma anche alla città, al CAP o persino alla latitudine e longitudine.

Quando utilizzi un servizio di geolocalizzazione di terza parte, ti consigliamo di utilizzare gli URL firmati di CloudFront, che ti consentono di specificare una data e ora di scadenza dopo le quali l'URL non è più valido. Ti consigliamo inoltre di utilizzare un bucket Amazon S3 come origine in quanto ti consente di utilizzare un controllo di accesso origine di CloudFront per impedire agli utenti di accedere ai tuoi contenuti direttamente dall'origine. Per ulteriori informazioni su URL firmati e controllo di accesso origine, consulta Esecuzione di contenuti privati con URL firmati e cookie firmati.

La procedura seguente descrive come controllare l'accesso ai file utilizzando un servizio di geolocalizzazione di terza parte.

Per utilizzare un servizio di geolocalizzazione di terze parti per limitare l'accesso ai file in una distribuzione CloudFront
  1. Ottieni un account con un servizio di geolocalizzazione.

  2. Carica il tuo contenuto in un bucket Amazon S3 (S3).

  3. Configura Amazon CloudFront e Amazon S3 per fornire contenuti privati. Per ulteriori informazioni, consulta Esecuzione di contenuti privati con URL firmati e cookie firmati.

  4. Scrivi la tua applicazione Web per eseguire le operazioni seguenti:

    • Inviare l'indirizzo IP per ogni richiesta utente al servizio di geolocalizzazione.

    • Valutare il valore restituito dal servizio di geolocalizzazione per determinare se l'utente si trova in una posizione nella quale CloudFront deve distribuire i contenuti.

    • Se si desidera distribuire i contenuti nella posizione dell'utente, generare un URL firmato per i contenuti CloudFront. Se non si desidera distribuire i contenuti in tale posizione, restituire il codice di stato HTTP 403 (Forbidden) all'utente. In alternativa, puoi configurare CloudFront per restituire un messaggio di errore personalizzato. Per ulteriori informazioni, consulta Creazione di una pagina personalizzata di errore per codici di stato HTTP specifici.

    Per ulteriori informazioni, consulta la documentazione del servizio di geolocalizzazione che stai utilizzando.

Puoi utilizzare una variabile di server Web per ottenere gli indirizzi IP degli utenti che visitano il tuo sito Web. Nota quanto segue:

  • Se il tuo server Web non è connesso a Internet attraverso un sistema di bilanciamento del carico, puoi utilizzare una variabile di server Web per ottenere l'indirizzo IP remoto. Tuttavia, questo indirizzo IP non è sempre l'indirizzo IP dell'utente. Può anche essere l'indirizzo IP di un server proxy, a seconda di come l'utente è connesso a Internet.

  • Se il server Web è connesso a Internet attraverso un sistema di bilanciamento del carico, una variabile di server Web potrebbe contenere l'indirizzo IP del sistema di bilanciamento del carico e non l'indirizzo IP dell'utente. In questa configurazione, consigliamo di utilizzare l'ultimo indirizzo IP nell'intestazione HTTP X-Forwarded-For. Questa intestazione in genere contiene più di un indirizzo IP, molti dei quali sono per proxy o sistemi di bilanciamento del carico. L'ultimo indirizzo IP nell'elenco è quello che probabilmente è associato alla posizione geografica dell'utente.

Se il server Web non è connesso a un sistema di bilanciamento del carico, ti consigliamo di utilizzare variabili di server Web anziché l'intestazione X-Forwarded-For per evitare lo spoof di indirizzi IP.