Panoramica sulla sicurezza delle applicazioni

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province 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à di base di Google Cloud, ma ci sono ancora passaggi da seguire per proteggere la tua app App Engine e identificare le vulnerabilità.

Utilizza le seguenti funzionalità per assicurarti che la tua app App Engine sia sicura. Per scoprire 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 in modo sicuro alla tua app App Engine. A seconda della configurazione dell'app, hai a disposizione le seguenti opzioni:

Domini appspot.com
  • Utilizza il prefisso URL https per inviare la 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 Come vengono indirizzate le richieste.

Domini personalizzati

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

Controllo degli accessi

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 account diversi per assicurarti che ogni account abbia solo le autorizzazioni necessarie per supportare la tua app. Per maggiori dettagli, consulta la sezione Configurare il controllo accessi.

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 dagli intervalli di indirizzi IP specificati. Non ti viene addebitato alcun costo per il traffico o la larghezza di banda bloccati dal firewall. Crea un firewall per:

Consentire solo il traffico all'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 all'interno della rete privata della tua azienda durante la fase di test dell'app. Puoi quindi creare e modificare le regole del firewall per controllare l'ambito dell'accesso durante il processo di rilascio, consentendo solo a determinate organizzazioni, interne o esterne alla tua azienda, di accedere alla tua app man mano che diventa disponibile al pubblico.
Consentire solo il traffico da un servizio specifico
Assicurati che tutto il traffico verso la tua app App Engine venga prima sottoposto a proxy tramite un servizio specifico. Ad esempio, se utilizzi un WAF (web application firewall) di terze parti per eseguire il proxy delle richieste indirizzate alla tua app, puoi creare regole firewall per negare tutte le richieste tranne quelle inoltrate dal WAF.
Bloccare gli indirizzi IP illeciti
Sebbene Google Cloud abbia molti meccanismi in atto per prevenire gli attacchi, puoi utilizzare il firewall di App Engine per bloccare il traffico verso la tua app da indirizzi IP con intenti dannosi o proteggere la tua app da attacchi di denial of service e da forme simili di abuso. Puoi aggiungere indirizzi IP o reti sottostanti a una lista negativa, in modo che le richieste inoltrate da questi indirizzi e reti sottostanti vengano rifiutate prima di raggiungere la tua app App Engine.

Per informazioni dettagliate sulla creazione di regole e sulla configurazione del firewall, consulta Controllare l'accesso alle app con i firewall.

Controlli Ingress

Questa sezione descrive come utilizzare le impostazioni di ingresso per limitare l'accesso alla rete alla tua app App Engine. A livello di rete, per impostazione predefinita, qualsiasi risorsa su internet è in grado di raggiungere la tua app App Engine tramite il suo URL appspot o 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 l'ingresso. Tutti i percorsi di importazione, incluso l'URL predefinitoappspot.com, sono soggetti all'impostazione di importazione. L'ingresso è impostato a livello di servizio.

Impostazioni di ingresso disponibili

Sono disponibili le seguenti impostazioni:

Impostazione Descrizione
Interno Più restrittiva. Consente le richieste da risorse collegate alle reti VPC del progetto, ad esempio:
Le richieste provenienti da queste origini rimangono all'interno della rete di Google, anche se accedono al tuo servizio all'URL appspot.com. Le richieste provenienti da altre origini, inclusa internet, non possono raggiungere il tuo servizio all'URL appspot.com o ai domini personalizzati. Non è supportato il multitenancy, ovvero la presenza di più domini attendibili all'interno dello stesso progetto.
Bilanciamento del carico interno e su cloud Consente richieste dalle seguenti risorse:
  • Risorse consentite dall'impostazione Interna più restrittiva
  • Application Load Balancer esterno
Utilizza l'impostazione di bilanciamento del carico interno e su cloud per accettare richieste da un bilanciatore del carico delle applicazioni esterno, ma non direttamente da internet. Le richieste all'URL appspot.com bypassano il bilanciatore del carico delle applicazioni esterno, pertanto questa impostazione impedisce alle richieste esterne di raggiungere l'URL appspot.com.
Tutti Meno restrittiva. Consente tutte le richieste, incluse quelle direttamente da internet all'URL appspot.com.

Accesso ai servizi interni

Si applicano le seguenti considerazioni:

  • Per le richieste provenienti da una VPC condivisa, il traffico è considerato interno solo se l'app App Engine viene dispiata nel progetto host VPC condiviso. Se l'app App Engine viene dispiattata 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 il traffico proveniente da altri VPC condivisi, è esterno.

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

  • Per le richieste provenienti da istanze VM di Compute Engine o da altre risorse in esecuzione all'interno di una rete VPC nello stesso progetto, non è necessaria alcuna ulteriore configurazione.

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

  • Le richieste provenienti 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 provenienti da risorse on-premise connesse alla rete VPC tramite Cloud VPN sono considerate internal.

Visualizza le impostazioni di importazione

Console

  1. Vai alla pagina Servizi App Engine.

    Vai alla pagina Servizi

  2. Individua la colonna Ingresso. Per ogni servizio, il valore in questa colonna mostra l'impostazione di ingresso come Tutti (valore predefinito), Interno + bilanciamento del carico o Interno.

gcloud

Per visualizzare l'impostazione di ingresso per un servizio utilizzando gcloud CLI:

gcloud app services describe SERVICE

Sostituisci SERVICE con il nome del servizio.

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

gcloud app services describe default

Modificare le impostazioni di Ingress

Console

  1. Vai alla pagina Servizi App Engine.

    Vai alla pagina Servizi

  2. Seleziona il servizio da modificare.

  3. Fai clic su Modifica impostazione di importazione.

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

gcloud

Per aggiornare l'impostazione di ingresso per un servizio utilizzando gcloud CLI:

gcloud app services update SERVICE --ingress=INGRESS

Sostituisci:

  • SERVICE: il nome del servizio.
  • INGRESS: il controllo di ingresso da applicare. Uno dei valori 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 il traffico solo 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 "richieste-interne" in modo che accetti il traffico solo dalle reti VPC nello stesso progetto:

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

Impostazioni traffico in uscita

Se utilizzi Serverless VPC Access, puoi specificare l'impostazione di uscita per il servizio App Engine.

Per impostazione predefinita, solo le richieste agli indirizzi IP interni e ai nomi DNS interni vengono indirizzate tramite un connettore di accesso VPC serverless. Puoi specificare l'impostazione di uscita per il servizio nel file appengine-web.xml.

Le impostazioni di uscita non sono compatibili con il servizio di recupero dell'URL. Se non l'hai ancora fatto, interrompi l'utilizzo di URLFetchService. L'utilizzo della libreria urlfetch ignora le impostazioni di uscita e le richieste non vengono inoltrate tramite un connettore di accesso VPC serverless.

Per configurare il comportamento in uscita del servizio App Engine:

  1. Aggiungi l'elemento <egress-setting> all'elemento <vpc-access-connector> nel file appengine-web.xml del servizio:

    <vpc-access-connector>
     <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
     <egress-setting>EGRESS_SETTING</egress-setting>
    </vpc-access-connector>

    Sostituisci:

    • PROJECT_ID con il tuo 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 valori:
      • private-ranges-only Predefinito. Solo le richieste agli intervalli di indirizzi IP RFC 1918 e RFC 6598 o ai nomi DNS interni vengono instradate alla rete VPC. Tutte le altre richieste vengono instradate direttamente a internet.
      • all-traffic Tutte le richieste in uscita dal tuo servizio vengono indirizzate alla tua rete VPC. Le richieste sono quindi soggette alle regole del firewall, del DNS e del routing della rete VPC. Tieni presente che il routing di tutte le richieste in uscita alla rete VPC aumenta la quantità di traffico in uscita gestita dal connettore di accesso VPC serverless e può generare addebiti.
  2. Esegui il deployment del servizio:

    gcloud app deploy WEB-INF/appengine-web.xml
    

Security Scanner

Web Security Scanner di Google Cloud scopre le vulnerabilità eseguendo la scansione della tua app App Engine, seguendo tutti i link nell'ambito degli URL di partenza e tentando di 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 Configurare il controllo accessi.

Puoi eseguire scansioni di sicurezza dalla console Google Cloud per identificare le vulnerabilità di sicurezza nella tua app App Engine. Per informazioni dettagliate sull'esecuzione di Security Scanner, consulta Utilizzare Web Security Scanner.