

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Limitazione dell’accesso ad Application Load Balancer
<a name="restrict-access-to-load-balancer"></a>

Puoi utilizzare Application Load Balancer interni e con accesso a Internet con Amazon. CloudFront È possibile utilizzare Application Load Balancer interni all'interno di sottoreti private CloudFront utilizzando origini VPC. CloudFront Le origini VPC consentono di servire contenuti da applicazioni ospitate in sottoreti VPC private senza esporli alla rete Internet pubblica. Per ulteriori informazioni, consulta [Limitazione dell’accesso con VPC Origins](private-content-vpc-origins.md).

Se si utilizza un Application Load Balancer CloudFront con accesso a Internet con, è possibile utilizzare le seguenti mitigazioni di sicurezza per impedire agli utenti di accedere direttamente a un Application Load Balancer e consentire l'accesso solo tramite. CloudFront

1. Configura CloudFront per aggiungere un'intestazione HTTP personalizzata alle richieste inviate all'Application Load Balancer.

1. Configura Application Load Balancer per inoltrare solo le richieste che contengono l'intestazione HTTP personalizzata.

1. Richiedi HTTPS per migliorare la sicurezza di questa soluzione.

CloudFront può anche contribuire a ridurre la latenza e persino ad assorbire alcuni attacchi Distributed Denial of Service (S)DDo.

Se il tuo caso d'uso richiede un doppio accesso alle applicazioni Web da entrambi CloudFront e da Application Load Balancer direttamente su Internet, valuta la possibilità di suddividere l'applicazione APIs Web come segue:
+ APIs che deve passare. CloudFront In questo caso, valuta la possibilità di utilizzare un Application Load Balancer privato separato come origine.
+ APIs che richiedono l'accesso tramite Application Load Balancer. In questo caso, si CloudFront ignora.

In alternativa, per un'applicazione Web o altri contenuti forniti da un Application Load Balancer con accesso a Internet in Elastic Load Balancing CloudFront , puoi memorizzare nella cache gli oggetti e servirli direttamente agli utenti (visualizzatori), riducendo il carico sull'Application Load Balancer. Un bilanciatore del carico connesso a Internet ha un nome DNS risolvibile pubblicamente e instrada le richieste dei client verso le destinazioni su Internet.

Per ulteriori informazioni, consulta i seguenti argomenti. Dopo aver completato questi passaggi, gli utenti possono accedere all'Application Load Balancer solo tramite. CloudFront

**Topics**
+ [Configura CloudFront per aggiungere un'intestazione HTTP personalizzata alle richieste](#restrict-alb-add-custom-header)
+ [Configurazione di un Application Load Balancer per inoltrare solo le richieste che contengono un’intestazione specifica](#restrict-alb-route-based-on-header)
+ [(Facoltativo) Migliorare la sicurezza di questa soluzione](#restrict-alb-improve-security)
+ [(Facoltativo) Limita l'accesso all'origine utilizzando l'elenco di prefissi AWS-managed per CloudFront](#limit-access-to-origin-using-aws-managed-prefixes)

## Configura CloudFront per aggiungere un'intestazione HTTP personalizzata alle richieste
<a name="restrict-alb-add-custom-header"></a>

È possibile CloudFront configurare l'aggiunta di un'intestazione HTTP personalizzata alle richieste inviate all'origine (in questo caso, un Application Load Balancer).

**Importante**  
Questo caso d'uso si basa sul mantenere segreti il nome dell'intestazione e il valore personalizzati. Se il nome e il valore dell'intestazione non sono segreti, altri client HTTP potrebbero potenzialmente includerli nelle richieste inviate direttamente a Application Load Balancer. Ciò può far sì che l'Application Load Balancer si comporti come se le richieste provenissero da CloudFront quando non provenivano. Per evitare ciò, mantieni segreti il nome dell'intestazione e il valore personalizzati.

È possibile CloudFront configurare l'aggiunta di un'intestazione HTTP personalizzata alle richieste di origine con la CloudFront console o CloudFormation l'API. CloudFront 

**Per aggiungere un'intestazione HTTP personalizzata (console) CloudFront **  
Nella CloudFront console, usa l'impostazione **Origin Custom Headers** nelle impostazioni di **Origin**. Immetti il **Nome intestazione** e il relativo **Valore**.  
In produzione, utilizza nomi e valori intestazione generati casualmente. Tratta i nomi e i valori delle intestazioni come credenziali sicure, ad esempio, nomi utente e password.
Puoi modificare l'impostazione **Origin Custom Headers** quando crei o modifichi un'origine per una CloudFront distribuzione esistente e quando crei una nuova distribuzione. Per ulteriori informazioni, consultare [Aggiornamento di una distribuzione](HowToUpdateDistribution.md) e [Creazione di una distribuzione](distribution-web-creating-console.md).

**Come aggiungere un'intestazione HTTP personalizzata (CloudFormation)**  
In un CloudFormation modello, utilizzate la `OriginCustomHeaders` proprietà, come illustrato nell'esempio seguente.  
Il nome e il valore dell'intestazione in questo esempio sono solo per dimostrazione. In produzione, utilizza valori generati casualmente. Considera il nome e il valore dell'intestazione come credenziali protette, ad esempio un nome utente e una password.

```
AWSTemplateFormatVersion: '2010-09-09'
Resources:
  TestDistribution:
    Type: 'AWS::CloudFront::Distribution'
    Properties:
      DistributionConfig:
        Origins:
          - DomainName: app-load-balancer.example.com
            Id: Example-ALB
            CustomOriginConfig:
              OriginProtocolPolicy: https-only
              OriginSSLProtocols:
                - TLSv1.2
            OriginCustomHeaders:
               - HeaderName: X-Custom-Header
                 HeaderValue: random-value-1234567890
        Enabled: 'true'
        DefaultCacheBehavior:
          TargetOriginId: Example-ALB
          ViewerProtocolPolicy: allow-all
          CachePolicyId: 658327ea-f89d-4fab-a63d-7e88639e58f6
        PriceClass: PriceClass_All
        ViewerCertificate:
          CloudFrontDefaultCertificate: 'true'
```
Per ulteriori informazioni, consultate [Origin](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origin.html) and [OriginCustomHeader](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-origincustomheader.html)properties nella *Guida AWS CloudFormation per l'utente*.

**Per aggiungere un'intestazione HTTP (CloudFront API) personalizzata**  
Nell' CloudFront API, usa l'`CustomHeaders`oggetto contenuto all'interno`Origin`. Per ulteriori informazioni, consulta [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html)e [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)consulta *Amazon CloudFront API Reference* e la documentazione per il tuo SDK o altro client API.

Esistono alcuni nomi di intestazione che non è possibile specificare come intestazioni personalizzate di origine. Per ulteriori informazioni, consulta [Intestazioni personalizzate che CloudFront non possono essere aggiunte alle richieste di origine](add-origin-custom-headers.md#add-origin-custom-headers-denylist).

## Configurazione di un Application Load Balancer per inoltrare solo le richieste che contengono un’intestazione specifica
<a name="restrict-alb-route-based-on-header"></a>

Dopo aver CloudFront configurato l'aggiunta di un'intestazione HTTP personalizzata alle richieste inviate all'Application Load Balancer ([vedi la sezione precedente), puoi configurare il](#restrict-alb-add-custom-header) load balancer per inoltrare solo le richieste che contengono questa intestazione personalizzata. A tale scopo, aggiungere una nuova regola e modificando la regola predefinita nel listener del sistema di bilanciamento del carico.

**Prerequisiti**  
Per utilizzare le procedure seguenti, è necessario un Application Load Balancer con almeno un listener. Se non ne hai ancora creato uno, vedere [Creare un Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) nella *Guida dell'utente per Application Load Balancer*.

Le procedure seguenti modificano un listener HTTPS. È possibile utilizzare lo stesso processo per modificare un listener HTTP.

**Per aggiornare le regole in un listener di Application Load Balancer**

1. Aggiungi una nuova regola. Usa le istruzioni di [Aggiungi una regola](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html#add-rule), con le seguenti modifiche:
   + Aggiungi la regola al load balancer che è l'origine della tua distribuzione. CloudFront 
   + Per **Aggiungi condizione**, scegli **Intestazione HTTP**. Specificate il nome e il valore dell'intestazione HTTP che avete aggiunto come intestazione personalizzata di origine. CloudFront
   + Per **Aggiungi azione**, scegli **Inoltra a**. Scegliere il gruppo target in cui si desidera inoltrare le richieste.

1. Modifica la regola predefinita nel listener del bilanciatore del carico. Usa le istruzioni di [Modifica una regola](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/listener-update-rules.html#edit-rule), con le seguenti modifiche:
   + Modifica la regola predefinita del load balancer che è l'origine della tua distribuzione. CloudFront 
   + Elimina l’azione predefinita, quindi per **Aggiungi azione**, scegli **Restituzione risposta fissa**. 
   + Per **Codice risposta**, immettere **403**.
   + Per **Corpo risposta**, immettere **Access denied**.

Dopo aver completato queste fasi, il listener del bilanciatore del carico dispone di due regole. Una regola inoltra le richieste che contengono l'intestazione HTTP (richieste che provengono da). CloudFront L'altra regola invia una risposta fissa a tutte le altre richieste (richieste che non provengono da CloudFront).

Puoi verificare che la soluzione funzioni inviando una richiesta alla tua CloudFront distribuzione e una all'Application Load Balancer. La richiesta di CloudFront restituzione dell'applicazione o del contenuto Web e quella inviata direttamente all'Application Load Balancer restituiscono una `403` risposta con un messaggio di testo semplice. `Access denied`

## (Facoltativo) Migliorare la sicurezza di questa soluzione
<a name="restrict-alb-improve-security"></a>

Per migliorare la sicurezza di questa soluzione, puoi configurare la tua CloudFront distribuzione in modo che utilizzi sempre HTTPS quando invii richieste all'Application Load Balancer. Ricorda che questa soluzione funziona solo se si mantengono segreti il nome dell'intestazione e il valore personalizzati. L'utilizzo di HTTPS può aiutare a impedire a un intercettore di scoprire il nome e il valore dell'intestazione. Si consiglia inoltre di ruotare periodicamente il nome e il valore dell'intestazione.

**Usa HTTPS per le richieste di origine**  
 CloudFront Per configurare l'utilizzo di HTTPS per le richieste di origine, imposta l'impostazione **Origin Protocol Policy** su **Solo HTTPS**. Questa impostazione è disponibile nella CloudFront console CloudFormation e nell' CloudFront API. Per ulteriori informazioni, consulta [Protocollo (solo origini personalizzate)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy).

Quanto segue si applica anche quando si configura l'utilizzo CloudFront di HTTPS per le richieste di origine:
+ È necessario CloudFront configurare l'inoltro dell'`Host`intestazione all'origine con la policy di richiesta di origine. È possibile utilizzare la [policy di richiesta di origine AllViewer gestita](using-managed-origin-request-policies.md#managed-origin-request-policy-all-viewer).
+ Assicurati che Application Load Balancer disponga di un listener HTTPS (come illustrato nella [sezione precedente](#restrict-alb-route-based-on-header)). Per ulteriori informazioni, consulta la sezione relativa alla [creazione di un listener HTTPS](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html) nella *Guida utente per Application Load Balancer*. L'utilizzo di un listener HTTPS richiede un SSL/TLS certificato che corrisponda al nome di dominio indirizzato all'Application Load Balancer.
+ I certificati SSL/TLS per CloudFront possono essere richiesti (o importati) solo in (ACM). `us-east-1` Regione AWS AWS Certificate Manager CloudFront Trattandosi di un servizio globale, distribuisce automaticamente il certificato dalla `us-east-1` regione a tutte le regioni associate alla distribuzione. CloudFront
  + Ad esempio, se disponi di un Application Load Balancer (ALB) nella `ap-southeast-2` regione, devi configurare SSL/TLS i certificati sia nella `ap-southeast-2` regione (per utilizzare HTTPS tra CloudFront e l'origine ALB) che `us-east-1` nella regione (per utilizzare HTTPS tra i visualizzatori e). CloudFront Entrambi i certificati devono corrispondere al nome di dominio che viene instradato ad Application Load Balancer. Per ulteriori informazioni, consulta [Regione AWS per AWS Certificate Manager](cnames-and-https-requirements.md#https-requirements-aws-region).
+ Se gli utenti finali (noti anche come *visualizzatori* o *client*) della tua applicazione Web possono utilizzare HTTPS, puoi anche configurare in modo CloudFront da preferire (o addirittura richiedere) le connessioni HTTPS degli utenti finali. A tale scopo, utilizzare l'impostazione del **criterio del protocollo Viewer**. È possibile impostarlo per reindirizzare gli utenti finali da HTTP a HTTPS o per rifiutare le richieste che utilizzano HTTP. Questa impostazione è disponibile nella CloudFront console e CloudFormation nell' CloudFront API. Per ulteriori informazioni, consulta [Viewer Protocol Policy (Policy protocollo visualizzatore)](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy).

**Ruotare il nome e il valore dell'intestazione**  
Oltre a utilizzare HTTPS, si consiglia anche di ruotare periodicamente il nome e il valore dell'intestazione. I passaggi di alto livello per eseguire questa operazione sono i seguenti:

1. Configura CloudFront per aggiungere un'intestazione HTTP personalizzata aggiuntiva alle richieste inviate all'Application Load Balancer.

1. Aggiornare la regola del listener Application Load Balancer per inoltrare le richieste che contengono questa intestazione HTTP personalizzata aggiuntiva.

1. Configura CloudFront per interrompere l'aggiunta dell'intestazione HTTP personalizzata originale alle richieste inviate all'Application Load Balancer.

1. Aggiornare la regola del listener di Application Load Balancer per interrompere l'inoltro delle richieste contenenti l'intestazione HTTP personalizzata originale.

Per ulteriori informazioni sull'esecuzione di questi passaggi, vedere le sezioni precedenti.

## (Facoltativo) Limita l'accesso all'origine utilizzando l'elenco di prefissi AWS-managed per CloudFront
<a name="limit-access-to-origin-using-aws-managed-prefixes"></a>

Per limitare ulteriormente l'accesso all'Application Load Balancer, è possibile configurare il gruppo di sicurezza associato all'Application Load Balancer in modo che accetti solo il traffico CloudFront proveniente da quando il servizio utilizza AWS un elenco di prefissi -managed. Ciò impedisce al traffico non originario di raggiungere l'Application Load Balancer a livello di rete (livello 3) o livello di trasporto (livello 4). CloudFront 

Per ulteriori informazioni, consulta il post del CloudFront blog [Limita l'accesso alle tue origini utilizzando l'elenco dei prefissi AWS-managed per Amazon](https://aws.amazon.com//blogs/networking-and-content-delivery/limit-access-to-your-origins-using-the-aws-managed-prefix-list-for-amazon-cloudfront/).