Limita l'accesso agli Application Load Balancer - Amazon CloudFront

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à.

Limita l'accesso agli Application Load Balancer

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 Limita l'accesso con origini VPC.

Se utilizzi un Application Load Balancer CloudFront con accesso a Internet con, puoi 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.

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

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

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

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, prendete in considerazione l'utilizzo di 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 altro contenuto fornito 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 sistema di bilanciamento del carico connesso a Internet ha un nome DNS risolvibile pubblicamente e indirizza le richieste dai client alle 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

Configura CloudFront per aggiungere un'intestazione HTTP personalizzata alle richieste

È 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 AWS 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. Inserisci il nome dell'intestazione e il relativo valore.

Nota

In produzione, utilizzate nomi e valori di intestazione generati casualmente. Tratta i nomi e i valori delle intestazioni come credenziali sicure, come 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 e Creazione di una distribuzione.

Come aggiungere un'intestazione HTTP personalizzata (AWS CloudFormation)

In un AWS CloudFormation modello, utilizzate la OriginCustomHeaders proprietà, come illustrato nell'esempio seguente.

Nota

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 and OriginCustomHeaderproperties nella Guida AWS CloudFormation per l'utente.

Per aggiungere un'intestazione HTTP (CloudFront API) personalizzata

Nell' CloudFront API, usa l'CustomHeadersoggetto all'internoOrigin. Per ulteriori informazioni, consulta CreateDistributione UpdateDistributionconsulta 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 non CloudFront possono essere aggiunte alle richieste di origine.

Configurare un Application Load Balancer per inoltrare solo le richieste che contengono un'intestazione specifica

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 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 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, con le seguenti modifiche:

    • Aggiungi la regola al load balancer che è l'origine della tua CloudFront distribuzione.

    • Per Aggiungi condizione, scegli Http header. 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.

  2. Modifica la regola predefinita nel listener del tuo sistema di bilanciamento del carico. Usa le istruzioni di Modifica una regola, con le seguenti modifiche:

    • Modifica la regola predefinita del load balancer che è l'origine della tua CloudFront distribuzione.

    • Elimina l'azione predefinita, quindi per Aggiungi azione, scegli Restituisci risposta fissa.

    • Per Codice risposta, immettere 403.

    • Per Corpo risposta, immettere Access denied.

Dopo aver completato questi passaggi, il tuo load balancer listener ha 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

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 AWS CloudFormation e nell' CloudFront API. Per ulteriori informazioni, consulta Protocollo (solo origini personalizzate).

Quanto segue si applica anche quando si configura l'utilizzo CloudFront di HTTPS per le richieste di origine:

  • È necessario CloudFront configurare l'inoltro dell'Hostintestazione all'origine con la policy di richiesta di origine. È possibile utilizzare la policy di richiesta di origine AllViewer gestita.

  • Assicuratevi che l'Application Load Balancer disponga di un listener HTTPS (come illustrato nella sezione precedente). Per ulteriori informazioni, consulta la sezione relativa alla creazione di un listener HTTPS nella Guida utente per Application Load Balancer. L'utilizzo di un listener HTTPS richiede un certificato SSL/TLS 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 i certificati SSL/TLS sia nella ap-southeast-2 regione (per utilizzare HTTPS tra CloudFront e l'origine ALB) che nella regione (per utilizzare HTTPS tra i visualizzatori us-east-1 e). CloudFront Entrambi i certificati devono corrispondere al nome di dominio indirizzato all'Application Load Balancer. Per ulteriori informazioni, consulta Regione AWS per AWS Certificate Manager.

  • Se gli utenti finali (noti anche come visualizzatori o client) della tua applicazione web possono utilizzare HTTPS, puoi anche configurare CloudFront per 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 AWS CloudFormation nell' CloudFront API. Per ulteriori informazioni, consulta Viewer Protocol Policy (Policy protocollo visualizzatore).

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.

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

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

  4. 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

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 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.