Panoramica sulla sicurezza delle app

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base all'area geografica selezionata al momento della creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici paese e provincia di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

La sicurezza è una funzionalità fondamentale di Google Cloud, ma devi comunque intraprendere dei passaggi per proteggere la tua app App Engine e identificare le vulnerabilità.

Utilizza le seguenti funzionalità per garantire che la tua app App Engine sia sicura. Per saperne di più sul modello di sicurezza di Google e sui passaggi disponibili per proteggere i tuoi progetti Google Cloud, consulta Sicurezza della piattaforma Google Cloud.

Richieste HTTPS

Utilizza le richieste HTTPS per accedere alla tua app App Engine in modo sicuro. A seconda di come è configurata la tua app, hai a disposizione le seguenti opzioni:

Domini appspot.com
  • Utilizza il prefisso URL https per inviare una richiesta HTTPS al servizio default del tuo progetto Google Cloud, ad esempio:
    https://PROJECT_ID.REGION_ID.r.appspot.com
  • Per scegliere come target risorse specifiche nella tua app App Engine, utilizza la sintassi -dot- per separare ogni risorsa che vuoi scegliere come target, ad esempio:
    https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

  • Per convertire un URL HTTP in un URL HTTPS, sostituisci i punti tra ogni risorsa con -dot-, ad esempio:
    http://SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com
    https://SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

Per ulteriori informazioni sugli URL HTTPS e sulle risorse di targeting, consulta la sezione Modalità di routing delle richieste.

Domini personalizzati

Per inviare richieste HTTPS con il tuo dominio personalizzato, puoi utilizzare i certificati SSL gestiti di cui viene eseguito il provisioning da App Engine. Per ulteriori informazioni, consulta la sezione Protezione dei domini personalizzati con SSL.

Controllo dell'accesso

In ogni progetto Google Cloud, configura controllo dell'accesso per determinare chi può accedere ai servizi all'interno del progetto, incluso App Engine. Puoi assegnare ruoli diversi a diversi account per assicurarti che ogni account disponga solo delle autorizzazioni necessarie per supportare la tua app. Per maggiori dettagli, consulta Configurare il controllo dell'accesso.

Firewall di App Engine

Il firewall di App Engine consente di controllare l'accesso all'app App Engine tramite un insieme di regole che possono consentire o negare le richieste provenienti da intervalli di indirizzi IP specificati. Non ti verrà addebitato il traffico o la larghezza di banda bloccati dal firewall. Crea un firewall per:

Consenti solo il traffico dall'interno di una rete specifica
Assicurati che solo un determinato intervallo di indirizzi IP di reti specifiche possa accedere alla tua app. Ad esempio, crea regole per consentire solo l'intervallo di indirizzi IP dall'interno della rete privata della tua azienda durante la fase di test dell'app. Puoi quindi creare e modificare le regole firewall per controllare l'ambito di accesso durante il processo di rilascio, consentendo solo a determinate organizzazioni, all'interno o all'esterno dell'azienda, di accedere alla tua app mentre diventa disponibile pubblica.
Consenti solo il traffico da un servizio specifico
Assicurati che tutto il traffico verso la tua app App Engine sia prima trasferito al proxy tramite un servizio specifico. Ad esempio, se utilizzi un web application firewall (WAF) di terze parti per inviare un proxy alle richieste indirizzate alla tua app, puoi creare regole firewall per rifiutare tutte le richieste tranne quelle inoltrate dal tuo WAF.
Blocca indirizzi IP illeciti
Sebbene Google Cloud disponga di molti meccanismi per prevenire gli attacchi, puoi utilizzare il firewall di App Engine per bloccare il traffico verso la tua app proveniente da indirizzi IP che presentano intenzioni dannose o che proteggono la tua app da attacchi denial of service e simili forme di abuso. Puoi aggiungere indirizzi IP o subnet a una lista bloccata in modo che le richieste instradate da tali indirizzi e subnet vengano rifiutate prima che raggiungano l'app App Engine.

Per maggiori dettagli sulla creazione di regole e sulla configurazione del firewall, consulta Controllo dell'accesso delle app con i firewall.

Controlli Ingress

Questa sezione descrive come utilizzare le impostazioni di traffico in entrata per limitare l'accesso di rete alla tua app App Engine. A livello di rete, per impostazione predefinita, qualsiasi risorsa su Internet può raggiungere la tua app App Engine sul relativo URL appspot o su un dominio personalizzato configurato in App Engine. Ad esempio, l'URL appspot.com può avere il seguente formato: SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com.

Puoi modificare questa impostazione predefinita specificando un'impostazione diversa per il traffico in entrata. Tutti i percorsi in entrata, incluso l'URL appspot.com predefinito, sono soggetti all'impostazione del traffico in entrata. Ingress è impostato a livello di servizio.

Impostazioni traffico in entrata disponibili

Sono disponibili le seguenti impostazioni:

Impostazione Descrizione
Origini Più restrittiva. Consente le richieste dalle risorse collegate alle reti VPC del progetto, ad esempio:
Le richieste provenienti da queste origini rimangono all'interno della rete Google, anche se accedono al tuo servizio all'URL appspot.com. Le richieste provenienti da altre origini, tra cui internet, non possono raggiungere il tuo servizio all'URL appspot.com o nei domini personalizzati. Non è previsto il supporto per l'architettura multi-tenancy, ovvero più domini di attendibilità all'interno dello stesso progetto.
Interno e Cloud Load Balancing Consente le richieste dalle seguenti risorse:
  • Risorse consentite dall'impostazione interna più restrittiva
  • Bilanciatore del carico delle applicazioni esterno
Utilizza l'impostazione Interno e Cloud Load Balancing per accettare richieste da un bilanciatore del carico delle applicazioni esterno, ma non direttamente da internet. Le richieste all'URL appspot.com ignorano il bilanciatore del carico delle applicazioni esterno, pertanto questa impostazione impedisce alle richieste esterne di raggiungere l'URL appspot.com.
Tutti Livello minimo di restrizioni. Consente tutte le richieste, incluse quelle inviate direttamente da internet all'URL appspot.com.

Accesso ai servizi interni

Si applicano le seguenti considerazioni:

  • Per le richieste da un VPC condiviso, il traffico è considerato interno solo se viene eseguito il deployment dell'app App Engine nel progetto host del VPC condiviso. Se viene eseguito il deployment dell'app App Engine in un progetto di servizio VPC condiviso, solo il traffico proveniente dalle reti di proprietà del progetto dell'app è interno. Tutto il resto del traffico, incluso quello da altri VPC condivisi, è esterno.

  • Quando accedi ai servizi interni, chiamali come faresti normalmente utilizzando i loro URL pubblici, ovvero l'URL appspot.com predefinito o un dominio personalizzato configurato in App Engine.

  • Per le richieste da istanze VM di Compute Engine o da altre risorse in esecuzione all'interno di una rete VPC nello stesso progetto, non sono necessarie ulteriori configurazioni.

  • Per le richieste da altri servizi App Engine o da Cloud Run o Cloud Functions nello stesso progetto, connetti il servizio o la funzione a una rete VPC e instrada tutto il traffico in uscita attraverso il connettore, come descritto in Connessione a una VPC condiviso condivisa.

  • Le richieste da risorse all'interno di reti VPC nello stesso progetto sono classificate come interne anche se la risorsa da cui provengono ha un indirizzo IP pubblico.

  • Le richieste dalle risorse on-premise connesse alla rete VPC tramite Cloud VPN sono considerate internal.

Visualizza impostazioni di traffico in entrata

Console

  1. Vai alla pagina Servizi App Engine.

    Vai alla pagina Servizi

  2. Individua la colonna In entrata. Per ogni servizio, il valore in questa colonna mostra l'impostazione del traffico in entrata come Tutti (impostazione predefinita), Interno + bilanciamento del carico o Interno.

gcloud

Per visualizzare l'impostazione del traffico in entrata per un servizio utilizzando gcloud CLI:

gcloud app services describe SERVICE

Sostituisci SERVICE con il nome del tuo servizio.

Ad esempio, per visualizzare le impostazioni di traffico in entrata e altre informazioni per l'esecuzione del servizio predefinito:

gcloud app services describe default

Modifica impostazioni di traffico in entrata

Console

  1. Vai alla pagina Servizi App Engine.

    Vai alla pagina Servizi

  2. Seleziona il servizio che vuoi modificare.

  3. Fai clic su Modifica impostazione di traffico in entrata.

  4. Seleziona l'impostazione in entrata che ti interessa dal menu e fai clic su Salva.

gcloud

Per aggiornare l'impostazione del traffico in entrata per un servizio utilizzando gcloud CLI:

gcloud app services update SERVICE --ingress=INGRESS

Sostituisci:

  • SERVICE: nome del servizio.
  • INGRESS: il controllo in entrata che vuoi applicare. Uno tra all, internal-only o internal-and-cloud-load-balancing.

Ad esempio:

  • Per aggiornare il servizio predefinito di un'app App Engine in modo che accetti solo il traffico da Cloud Load Balancing e dalle reti VPC nello stesso progetto:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • Per aggiornare un servizio denominato "internal-requests" in modo che accetti il traffico solo dalle reti VPC che si trovano nello stesso progetto:

    gcloud app services update internal-requests --ingress=internal-only

Impostazioni traffico in uscita

Se utilizzi l'accesso VPC serverless, puoi specificare l'impostazione in uscita per il servizio App Engine.

Per impostazione predefinita, solo le richieste a indirizzi IP e nomi DNS interni vengono instradate tramite un connettore di accesso VPC serverless. Puoi specificare l'impostazione in uscita per il tuo servizio nel file app.yaml.

Le impostazioni per il traffico in uscita non sono compatibili con il servizio di recupero URL. Se non l'hai già fatto, disattiva l'impostazione predefinita per il recupero degli URL e interrompi qualsiasi utilizzo esplicito della libreria urlfetch. L'utilizzo della libreria urlfetch ignora le impostazioni del traffico in uscita e le richieste non verranno instradate tramite un connettore di accesso VPC serverless.

Per configurare il comportamento in uscita dal servizio App Engine:

  1. Aggiungi l'attributo egress_setting al campo vpc_access_connector del file app.yaml del servizio:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING
    

    Sostituisci:

    • PROJECT_ID con l'ID progetto Google Cloud
    • REGION con la regione in cui si trova il connettore
    • CONNECTOR_NAME con il nome del connettore
    • EGRESS_SETTING con uno dei seguenti criteri:
      • Valore predefinito: private-ranges-only. Solo le richieste per gli intervalli di indirizzi IP RFC 1918 e RFC 6598 o per i nomi DNS interni vengono instradate alla rete VPC. Tutte le altre richieste vengono indirizzate direttamente a internet.
      • all-traffic Tutte le richieste in uscita dal tuo servizio vengono instradate alla tua rete VPC. Le richieste sono quindi soggette alle regole firewall, DNS e di routing della tua rete VPC. Tieni presente che il routing di tutte le richieste in uscita alla rete VPC aumenta la quantità di traffico in uscita gestito dal connettore di accesso VPC serverless e può essere soggetto ad addebiti.
  2. Esegui il deployment del servizio:

    gcloud app deploy
    

Security Scanner

Il Web Security Scanner di Google Cloud rileva le vulnerabilità eseguendo la scansione dell'app App Engine, seguendo tutti i link nell'ambito degli URL di avvio e provando a utilizzare il maggior numero possibile di input utente e gestori di eventi.

Per utilizzare lo scanner di sicurezza, devi essere un proprietario del progetto Google Cloud. Per ulteriori informazioni sull'assegnazione dei ruoli, consulta la pagina relativa alla configurazione del controllo dell'accesso.

Puoi eseguire scansioni di sicurezza dalla console Google Cloud per identificare le vulnerabilità di sicurezza nell'app App Engine. Per maggiori dettagli sull'esecuzione di Security Scanner, consulta l'articolo sull'utilizzo di Web Security Scanner.