In App Engine puoi creare un firewall con massimo 1000 singole regole prioritarie che consentono o limitano un intervallo di indirizzi IP e subnet. La tua app risponderà solo alle richieste consentite dal firewall.
Per scoprire come funziona il firewall di App Engine, consulta Informazioni sui firewall.
Prima di iniziare
Prima di poter creare regole del firewall per App Engine per la tua app, devi disporre di uno dei seguenti ruoli IAM di App Engine, che includono i privilegi necessari per la creazione o la modifica delle regole firewall:
- Amministratore App Engine
- Editor
- Proprietario
Creazione di regole firewall
Utilizza uno dei seguenti metodi per creare una regola firewall. Ripeti questi passaggi per ogni regola aggiuntiva:
Utilizza la pagina Regole firewall in Cloud Console per creare una regola firewall:
-
Vai alla pagina Crea una regola firewall in Cloud Console:
-
Specifica i dettagli della regola firewall:
-
In Priorità, inserisci un numero intero per specificare l'importanza relativa della regola e definire l'ordine di valutazione della regola.
I valori validi sono compresi tra
1
e2147483646
. La priorità1
è la prima regola valutata. La priorità2147483647
è l'ultima regola valutata ed è riservata alla regola"predefinita". -
In Azione in caso di corrispondenza, specifica se consentire o meno
l'accesso per le richieste corrispondenti alla regola. Le regole impostate su
allow
inoltrano la richiesta all'app. Le regole impostate sudeny
rispondono alle richieste con un errore403 Forbidden
. - In Intervallo IP, definisci l'intervallo di indirizzi IP che si applicano alla regola. L'intervallo di indirizzi IP deve essere definito in notazione CIDR, può includere subnet mask e supportare sia IPv4 sia IPv6.
- Facoltativo: in Descrizione, includi una descrizione della regola che non superi i 100 caratteri.
-
In Priorità, inserisci un numero intero per specificare l'importanza relativa della regola e definire l'ordine di valutazione della regola.
- Fai clic su Salva per creare la regola.
-
Testa la regola per assicurarti che la priorità e l'azione forniscano il comportamento previsto:
- Fai clic su Testa indirizzo IP.
- Inserisci l'indirizzo IP da convalidare e fai clic su Test per assicurarti che la regola corrispondente venga valutata correttamente.
Esegui i seguenti comandi di gcloud
app firewall-rules
per creare una regola firewall:
-
Esegui il comando seguente per creare una regola firewall:
gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
dove:-
PRIORITY è un numero intero compreso tra
1
e2147483646
che definisce l'importanza e l'ordine della regola per cui viene valutata la regola. La priorità1
è la prima regola valutata. La priorità2147483647
è l'ultima regola valutata ed è riservata alla regola"predefinita". -
ALLOW_OR_DENY specifica se consentire o meno l'accesso
per le richieste che soddisfano la regola. I valori validi sono
allow
odeny
. Le regole impostate suallow
inoltrano la richiesta all'app. Le regole impostate sudeny
rispondono alle richieste con un errore403 Forbidden
. - IP_RANGE definisce l'intervallo di indirizzi IP che si applicano alla regola. L'intervallo IP deve essere definito in notazione CIDR, può includere maschere di subnet e supportare sia IPv4 sia IPv6.
- DESCRIPTION è una descrizione facoltativa della regola che non supera i 100 caratteri.
-
PRIORITY è un numero intero compreso tra
-
Esegui il comando seguente per verificare la regola e assicurarti che la priorità e l'azione forniscano il comportamento previsto:
gcloud app firewall-rules test-ip IP_ADDRESS
dove IP_ADDRESS è l'indirizzo IP che vuoi testare contro il firewall. -
Esegui il comando seguente per visualizzare un elenco delle regole esistenti:
gcloud app firewall-rules list
-
Esegui il comando seguente per eliminare una regola esistente:
gcloud app firewall-rules delete PRIORITY
dove PRIORITY è il valore di priorità della regola che vuoi eliminare.
- Esempi:
-
Utilizza i seguenti esempi per aiutarti a creare il tuo firewall:
-
Aggiungi una regola che consenta un indirizzo IPv6 e una subnet mask, quindi testala per assicurarti che venga valutata prima delle altre regole:
gcloud app firewall-rules create 123 --source-range fe80::3636:3bff:fecc:8778/128 --action allow gcloud app firewall-rules test-ip fe80::3636:3bff:fecc:8778
-
Aggiungi una regola per negare un indirizzo IPv4 e una subnet mask, quindi testala per assicurarti che venga valutata correttamente:
gcloud app firewall-rules create 123456 --source-range "74.125.0.0/16" --action deny gcloud app firewall-rules test-ip 74.125.0.8
-
Aggiorna e testa la regola predefinita per assicurarti che limiti tutti gli indirizzi IP che non corrispondono ad altre regole:
gcloud app firewall-rules update default --action deny gcloud app firewall-rules test-ip 123.456.7.89
-
Per creare regole del firewall per la tua app App Engine in modo programmatico, puoi utilizzare i metodi apps.firewall.ingressRules
nell'API Admin.
Per testare una regola firewall e assicurarti che la priorità e l'azione forniscano il comportamento previsto, puoi utilizzare il metodo apps.firewall.ingressRules.list
e specificare l'indirizzo IP che vuoi testare all'interno del parametro matchingAddress
.
Informazioni sulle regole firewall di App Engine
Un firewall di App Engine è costituito da un elenco ordinato di regole in grado di consentire o negare l'accesso dall'indirizzo o dall'intervallo IP specificato alla tua app. La regola si applica a tutte le risorse dell'applicazione App Engine.
Priorità delle regole firewall
Le regole del firewall vengono ordinate per importanza, che definisci come valore numerico in ogni priorità della regola. Devi specificare un valore di priorità univoco per ciascuna regola poiché definisce l'importanza rispetto alle altre regole nel firewall. I valori di una regola per la regola vengono scalati dal valore più importante
di 1
fino al valore più importante con il valore 2147483647
.
Ogni firewall include una regola default
creata automaticamente con
la priorità 2147483647
ed è applicata all'intero intervallo IP della tua app.
La regola default
viene sempre valutata dopo tutte le altre regole
nel firewall e applicata a tutte le richieste in tutti gli indirizzi IP.
Il firewall valuta per prima la regola con la priorità più alta.
Tutte le altre regole del firewall vengono valutate in sequenza finché non viene trovata una regola per l'intervallo IP della richiesta. Quando viene trovata una regola di corrispondenza, la connessione è consentita o negata e tutte le restanti regole nel firewall vengono ignorate. Se nessuna delle regole definite manualmente nel firewall
corrisponde alla richiesta, viene valutata la regola default
.
Ad esempio, se crei una regola con priorità 1
, questa viene sempre
valutata per prima. Se una richiesta in entrata soddisfa la regola con priorità 1
, viene valutata solo quella e vengono ignorate tutte le altre regole nel firewall, inclusa la regola default
.
Il firewall di esempio riportato di seguito mostra in che modo la priorità di una regola può modificare il comportamento del firewall.
Esempio di firewall
In questo esempio, una società ha configurato un firewall per concedere l'accesso al team di ingegneri e alla rete aziendale interna all'app in fase di sviluppo. Sono state create regole di firewall con ampie lacune tra ogni priorità per consentire la crescita.
Priorità | Azione | Intervallo IP | Descrizione |
---|---|---|---|
1000 | Rifiuta | 192.0.2.1 | Nega l'accesso a un utente malintenzionato con tecnologia DoS. |
2000 | Consenti | 198.51.100.2 | Consente l'accesso a un tecnico nell'ufficio satellitare. |
3000 | Rifiuta | 198.51.100.0/24 | Nega l'accesso a tutti gli edifici non di ingegneria. |
5000 | Consenti | 203.0.113.0/24 | Consente l'accesso alla rete dell'edificio principale. |
2147483647 | Rifiuta | * | Azione predefinita |
Dopo aver creato il firewall, supponiamo che le seguenti richieste siano indirizzate all'app di esempio e prendi nota della risposta dell'app:
- La richiesta da 198.51.100.2 corrisponde alla regola con priorità 2000 ed è consentita.
- La richiesta da 198.51.100.100 corrisponde alla regola con priorità 3000 e viene rifiutata.
- La richiesta da 203.0.113.54 corrisponde alla regola con priorità 5000 ed è consentita.
- La richiesta dal file 45.123.35.242 corrisponde alla regola predefinita e viene rifiutata.
Risoluzione di regole in conflitto
Ad esempio, supponiamo che due delle priorità nel firewall dell'azienda vengano scambiate. Se le regole per le priorità 2000 e 3000 vengono scambiate, rileva il comportamento accidentale.
Priorità | Azione | Intervallo IP | Descrizione |
---|---|---|---|
1000 | Rifiuta | 192.0.2.1 | Nega l'accesso a un utente malintenzionato con tecnologia DoS. |
2000 | Nega | 198.51.100.0/24 | Nega l'accesso a tutti gli edifici non di ingegneria. |
3000 | Consenti | 198.51.100.2 | Consente di contattare un ingegnere nell'ufficio satellitare. |
5000 | Consenti | 203.0.113.0/24 | Consente l'accesso alla rete dell'edificio principale. |
2147483647 | Rifiuta | * | Azione predefinita |
L'ingegnere dell'ufficio satellitare non potrà accedere all'app dell'azienda poiché la nuova priorità non verrà mai valutata. L'indirizzo IP 198.51.100.2
del tecnico corrisponde alla regola che nega tutti i non ingegneri nell'intervallo 198.51.100.0/24
prima della regola che consente l'accesso all'indirizzo IP del tecnico.
Per risolvere il problema, devi impostare la priorità della regola che consente all'accesso a
198.51.100.2
di essere superiore alla regola che nega l'accesso per l'intervallo IP
198.51.100.0/24
.
Passaggi successivi
Per assicurarti di aver configurato in modo sicuro la tua app e impostare i livelli appropriati di accesso, consulta le sezioni Sicurezza delle applicazioni e Controllo accesso.