Questa pagina mostra come utilizzare l'accesso VPC serverless per connettere l'app dell'ambiente standard di App Engine direttamente alla rete VPC, consentendo l'accesso alle istanze VM di Compute Engine, alle istanze di Memorystore e a qualsiasi altra risorsa con un indirizzo IP interno.
Prima di iniziare
Se non disponi già di una rete VPC nel progetto, creane una.
Se utilizzi un VPC condiviso, consulta Connessione a una rete VPC condivisa.
Nella console Google Cloud, assicurati che l'API accesso VPC serverless sia abilitata per il tuo progetto.
Crea un connettore di accesso VPC serverless
Per inviare richieste alla tua rete VPC e ricevere le risposte corrispondenti senza utilizzare la rete internet pubblica, puoi utilizzare un connettore di accesso VPC serverless.
Puoi creare un connettore utilizzando la console Google Cloud, Google Cloud CLI o Terraform.
Console
Vai alla pagina di riepilogo dell'accesso VPC serverless.
Fai clic su Crea connettore.
Nel campo Nome, inserisci un nome per il connettore. Deve essere in conformità con la convenzione di denominazione di Compute Engine, con l'ulteriore limitazione che deve contenere meno di 21 caratteri, con i trattini (-) che vengono conteggiati come due caratteri.
Nel campo Regione, seleziona una regione per il connettore. Deve corrispondere alla regione del servizio serverless.
Se il servizio o il job si trova nella regione
us-central
oeurope-west
, utilizzaus-central1
oeurope-west1
.Nel campo Rete, seleziona la rete VPC a cui collegare il connettore.
Fai clic sul menu Subnet. Ogni connettore richiede una propria subnet
/28
in cui posizionare le istanze. Una subnet non può essere utilizzata da altre risorse come VM, Private Service Connect o bilanciatori del carico.Se utilizzi un VPC condiviso, che richiede l'utilizzo di una tua subnet, seleziona una subnet
/28
inutilizzata. Per confermare che la subnet non sia utilizzata per Private Service Connect o Cloud Load Balancing, verifica che la subnetpurpose
siaPRIVATE
eseguendo questo comando nellgcloud CLI:gcloud compute networks subnets describe SUBNET
Sostituisci:- SUBNET: il nome della subnet
Se non utilizzi il VPC condiviso, crea una subnet per il connettore o fai in modo che quest'ultimo crei una subnet selezionando Intervallo IP personalizzato dal menu.
Nel campo Intervallo IP, inserisci il primo indirizzo in un intervallo IP interno
/28
CIDR non prenotato. Questo intervallo IP non deve sovrapporsi ad alcuna prenotazione di indirizzi IP esistenti nella tua rete VPC. Ad esempio,10.8.0.0
(/28
) funzionerà nella maggior parte dei nuovi progetti.La subnet creata è nascosta e non può essere utilizzata nelle regole firewall e nelle configurazioni NAT.
Scopri quali intervalli IP sono attualmente prenotati nella console Google Cloud.
Scopri di più sull'utilizzo delle subnet.
(Facoltativo) Per impostare le opzioni di scalabilità per un controllo aggiuntivo sul connettore, fai clic su Mostra impostazioni di scalabilità per visualizzare il modulo di scalabilità.
- Imposta il numero minimo e massimo di istanze per il connettore oppure utilizza i valori predefiniti, ovvero 2 (min) e 10 (massimo). Il connettore fa lo scale out al massimo specificato se l'utilizzo del traffico lo richiede, ma il connettore non esegue lo scale back quando il traffico diminuisce.
Devi utilizzare valori compresi tra
2
e10
. - Nel menu Tipo di istanza, scegli il tipo di macchina da utilizzare per il connettore oppure utilizza il valore predefinito
e2-micro
. Osserva la barra laterale dei costi a destra quando scegli il tipo di istanza, che mostra le stime della larghezza di banda e dei costi.
- Imposta il numero minimo e massimo di istanze per il connettore oppure utilizza i valori predefiniti, ovvero 2 (min) e 10 (massimo). Il connettore fa lo scale out al massimo specificato se l'utilizzo del traffico lo richiede, ma il connettore non esegue lo scale back quando il traffico diminuisce.
Devi utilizzare valori compresi tra
Fai clic su Crea.
Quando il connettore è pronto per essere utilizzato, accanto al nome del connettore viene visualizzato un segno di spunta verde.
gcloud
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Aggiorna i componenti di
gcloud
alla versione più recente:gcloud components update
Assicurati che l'API Serverless VPC Access sia abilitata per il tuo progetto:
gcloud services enable vpcaccess.googleapis.com
Se utilizzi un VPC condiviso, che richiede l'utilizzo di una tua subnet, crea un connettore con il seguente comando:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET \ # If you are not using Shared VPC, omit the following line. --subnet-project HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances MIN \ --max-instances MAX \ # Optional: specify machine type, default is e2-micro --machine-type MACHINE_TYPE
Sostituisci quanto segue:
CONNECTOR_NAME
: un nome per il connettore. Deve essere conforme alla convenzione di denominazione di Compute Engine, con l'ulteriore limitazione in cui sia inferiore a 21 caratteri con trattini (-) che vengono conteggiati come due caratteri.REGION
: una regione per il connettore; deve corrispondere alla regione del servizio o del job serverless. Se il servizio o il job si trova nella regioneus-central
oeurope-west
, utilizzaus-central1
oeurope-west1
.SUBNET
: il nome di una subnet/28
inutilizzata.- Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzate da altre risorse come VM, Private Service Connect o bilanciatori del carico.
- Per confermare che la subnet non sia utilizzata per Private Service Connect o Cloud Load Balancing, verifica che la subnet
purpose
siaPRIVATE
eseguendo questo comando nellgcloud CLI:gcloud compute networks subnets describe SUBNET
Sostituisci:- SUBNET: il nome della subnet.
- Scopri di più sull'utilizzo delle subnet.
HOST_PROJECT_ID
: l'ID del progetto host; fornisci questo ID solo se utilizzi un VPC condiviso.MIN
: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra2
e9
. Il valore predefinito è2
. Per scoprire di più sulla scalabilità dei connettori, consulta Velocità effettiva e scalabilità.MAX
: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra3
e10
. Il valore predefinito è10
. Se il traffico lo richiede, il connettore esegue lo scale out a[MAX]
istanze, ma non lo scale back. Per informazioni sulla scalabilità dei connettori, consulta Velocità effettiva e scalabilità.MACHINE_TYPE
:f1-micro
,e2-micro
oe2-standard-4
. Per informazioni sulla velocità effettiva del connettore, tra cui il tipo di macchina e la scalabilità, consulta Velocità effettiva e scalabilità.
Per ulteriori dettagli e argomenti facoltativi, consulta la documentazione di riferimento di
gcloud
.Se non utilizzi un VPC condiviso e vuoi fornire un intervallo IP personalizzato anziché utilizzare una subnet esistente, crea un connettore con il comando seguente:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --network VPC_NETWORK \ --region REGION \ --range IP_RANGE
Sostituisci quanto segue:
CONNECTOR_NAME
: un nome per il connettore. Questo deve essere conforme alla convenzione di denominazione di Compute Engine, con l'ulteriore limitazione in cui sia inferiore a 21 caratteri con trattini (-
) conteggiati come due caratteri.VPC_NETWORK
: la rete VPC a cui collegare il connettore.REGION
: una regione per il connettore. Deve corrispondere alla regione del job o del servizio serverless. Se il servizio o il job si trova nella regioneus-central
oeurope-west
, utilizzaus-central1
oeurope-west1
.IP_RANGE
: sono richiesti una rete IP interna non prenotata e/28
di spazio non allocato. Il valore fornito è la rete in notazione CIDR (10.8.0.0/28
). Questo intervallo IP non deve sovrapporsi ad alcuna prenotazione di indirizzi IP esistente nella tua rete VPC. Ad esempio,10.8.0.0/28
funziona nella maggior parte dei nuovi progetti. La subnet creata per questo intervallo è nascosta e non può essere utilizzata nelle regole firewall e nelle configurazioni NAT.
Per ulteriori dettagli e argomenti facoltativi come i controlli della velocità effettiva, consulta il riferimento di
gcloud
.Verifica che il connettore sia nello stato
READY
prima di utilizzarlo:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Sostituisci quanto segue:
CONNECTOR_NAME
: il nome del connettore; si tratta del nome specificato nel passaggio precedente.REGION
: la regione del connettore; si tratta della regione specificata nel passaggio precedente.
L'output dovrebbe contenere la riga
state: READY
.
Terraform
Puoi utilizzare una risorsa Terraform per abilitare l'API vpcaccess.googleapis.com
.
Puoi utilizzare i moduli Terraform per creare una rete e una subnet VPC, quindi creare il connettore.
Configura il servizio per l'utilizzo di un connettore
Dopo aver creato un connettore di accesso VPC serverless, devi configurare ciascun servizio nell'app App Engine che vuoi connettere alla rete VPC.
Per specificare un connettore per un servizio nella tua app:
Per utilizzare l'accesso VPC serverless, interrompi l'uso del servizio di recupero URL di App Engine. L'accesso VPC serverless non supporta il recupero degli URL e le richieste effettuate utilizzando il recupero di URL ignoreranno le impostazioni di accesso VPC serverless. Crea invece connessioni in uscita con socket.
Aggiungi il campo
vpc_access_connector
al fileapp.yaml
del tuo servizio:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Dove
PROJECT_ID
è l'ID progetto Google Cloud,REGION
è la regione in cui si trova il connettore eCONNECTOR_NAME
è il nome del connettore.Esegui il deployment del servizio:
gcloud app deploy
Dopo il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella tua rete VPC.
Limita l'accesso alle risorse VPC
Consenti il traffico in entrata dall'infrastruttura serverless al connettore
Le VM del connettore devono essere in grado di ricevere pacchetti dall'intervallo di indirizzi IP esterni di Google Cloud 35.199.224.0/19
. Questo intervallo viene utilizzato dall'infrastruttura serverless sottostante
di Google per garantire che i servizi di Cloud Run,
Cloud Functions e App Engine possano inviare pacchetti al connettore.
L'accesso VPC serverless crea una regola firewall di autorizzazione in entrata che si applica alle VM del connettore consentendo l'invio di pacchetti da 35.199.224.0/19
quando il connettore si trova nello stesso progetto della rete VPC che ha come target. Il connettore e la relativa rete VPC di destinazione sono nello stesso progetto quando o il connettore ha come target una rete VPC autonoma oppure quando il connettore ha come target una rete VPC condiviso e il connettore si trova nel progetto host.
Se crei un connettore in un progetto di servizio del VPC condiviso, un amministratore della sicurezza o un proprietario del progetto per il progetto host del VPC condiviso deve creare una regola firewall di autorizzazione in entrata applicabile alle VM del connettore che consentono i pacchetti da 35.199.224.0/19
. Di seguito è riportato un esempio di regola firewall VPC
allow in entrata:
gcloud compute firewall-rules create RULE_NAME \ --action=ALLOW \ --rules=TCP \ --source-ranges=35.199.224.0/19 \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY \ --project=PROJECT_ID
Sostituisci quanto segue:
- RULE_NAME: il nome della nuova regola firewall. Ad esempio,
allow-vpc-connector-ingress
. - VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore universale
vpc-connector
può essere utilizzato per applicare la regola a tutti i connettori nella rete VPC. In alternativa, puoi usare un tag di rete specifico per il connettore. Il tag di rete specifico ha il formato seguente:vpc-connector-
REGION-
CONNECTOR_NAME, dove REGION è la regione Google Cloud del connettore e CONNECTOR_NAME è il nome. - VPC_NETWORK: il nome della rete VPC come target del connettore.
- PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più alta.
- PROJECT_ID: l'ID del progetto che contiene la rete VPC di destinazione del connettore.
Limita l'accesso alle VM del connettore per le risorse di rete VPC
Puoi limitare l'accesso del connettore alle risorse nella rete VPC di destinazione utilizzando le regole firewall VPC o le regole nei criteri firewall. Puoi applicare queste restrizioni utilizzando una delle seguenti strategie:
- Creare regole in entrata le cui destinazioni rappresentano le risorse alle quali vuoi limitare l'accesso alle VM del connettore e le cui origini rappresentano le VM del connettore.
- Crea regole in uscita le cui destinazioni rappresentano le VM del connettore e le cui destinazioni rappresentano le risorse a cui vuoi limitare l'accesso alle VM del connettore.
I seguenti esempi illustrano ciascuna strategia.
Limita l'accesso utilizzando le regole in entrata
Scegli tag di rete o intervalli CIDR per controllare il traffico in entrata verso la rete VPC.
Tag di rete
I passaggi seguenti mostrano come creare regole in entrata che limitano l'accesso di un connettore alla rete VPC in base ai tag di rete del connettore.
Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Ruolo Amministratore sicurezza Compute
- Ruolo IAM personalizzato con l'autorizzazione
compute.firewalls.create
abilitata
Negare il traffico del connettore nella rete VPC.
Crea una regola firewall in entrata con priorità inferiore a 1000 nella rete VPC per negare il traffico in entrata dal tag di rete del connettore. Questa operazione sostituisce la regola firewall implicita creata dall'accesso VPC serverless sulla rete VPC per impostazione predefinita.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Sostituisci quanto segue:
RULE_NAME: il nome della nuova regola firewall. Ad esempio,
deny-vpc-connector
.PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono
tcp
oudp
. Ad esempio,tcp:80,udp
consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flagallow
.Per motivi di sicurezza e convalida, puoi anche configurare le regole di negazione per bloccare il traffico per i seguenti protocolli non supportati:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore universale se vuoi limitare l'accesso per tutti i connettori (inclusi quelli creati in futuro) o il tag di rete univoco se vuoi limitare l'accesso per un connettore specifico.
- Tag di rete universale:
vpc-connector
Tag di rete univoco:
vpc-connector-REGION-CONNECTOR_NAME
Sostituisci:
- REGION: l'area geografica del connettore da limitare
- CONNECTOR_NAME: il nome del connettore che vuoi limitare
Per saperne di più sui tag di rete del connettore, consulta Tag di rete.
- Tag di rete universale:
VPC_NETWORK: il nome della tua rete VPC
PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più alta.
Consenti il traffico del connettore verso la risorsa che deve ricevere il traffico del connettore.
Utilizza i flag
allow
etarget-tags
per creare una regola firewall in entrata che abbia come target la risorsa della tua rete VPC a cui vuoi che acceda il connettore VPC. Imposta la priorità per questa regola in modo che sia un valore più basso rispetto alla priorità della regola creata nel passaggio precedente.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Sostituisci quanto segue:
RULE_NAME: il nome della nuova regola firewall. Ad esempio,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono
tcp
oudp
. Ad esempio,tcp:80,udp
consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flagallow
.VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore universale se vuoi limitare l'accesso per tutti i connettori (inclusi quelli creati in futuro) o il tag di rete univoco se vuoi limitare l'accesso per un connettore specifico. Deve corrispondere al tag di rete specificato nel passaggio precedente.
- Tag di rete universale:
vpc-connector
Tag di rete univoco:
vpc-connector-REGION-CONNECTOR_NAME
Sostituisci:
- REGION: l'area geografica del connettore da limitare
- CONNECTOR_NAME: il nome del connettore che vuoi limitare
Per saperne di più sui tag di rete del connettore, consulta Tag di rete.
- Tag di rete universale:
VPC_NETWORK: il nome della tua rete VPC
RESOURCE_TAG: il tag di rete per la risorsa VPC a cui vuoi che acceda il connettore VPC
PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità della regola creata nel passaggio precedente su 990, prova 980.
Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione per gcloud compute firewall-rules create
.
Intervallo CIDR
I passaggi seguenti mostrano come creare regole in entrata che limitano l'accesso di un connettore alla rete VPC in base all'intervallo CIDR del connettore.
Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Ruolo Amministratore sicurezza Compute
- Ruolo IAM personalizzato con l'autorizzazione
compute.firewalls.create
abilitata
Negare il traffico del connettore nella rete VPC.
Crea una regola firewall in entrata con priorità inferiore a 1000 nella rete VPC per negare il traffico in entrata dall'intervallo CIDR del connettore. Questa operazione sostituisce la regola firewall implicita creata dall'accesso VPC serverless sulla rete VPC per impostazione predefinita.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Sostituisci quanto segue:
RULE_NAME: il nome della nuova regola firewall. Ad esempio,
deny-vpc-connector
.PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono
tcp
oudp
. Ad esempio,tcp:80,udp
consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flagallow
.Per motivi di sicurezza e convalida, puoi anche configurare le regole di negazione per bloccare il traffico per i seguenti protocolli non supportati:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_CIDR_RANGE: l'intervallo CIDR per il connettore il cui accesso stai limitando
VPC_NETWORK: il nome della tua rete VPC
PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più alta.
Consenti il traffico del connettore verso la risorsa che deve ricevere il traffico del connettore.
Utilizza i flag
allow
etarget-tags
per creare una regola firewall in entrata che abbia come target la risorsa della tua rete VPC a cui vuoi che acceda il connettore VPC. Imposta la priorità per questa regola in modo che sia un valore più basso rispetto alla priorità della regola creata nel passaggio precedente.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Sostituisci quanto segue:
RULE_NAME: il nome della nuova regola firewall. Ad esempio,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono
tcp
oudp
. Ad esempio,tcp:80,udp
consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flagallow
.VPC_CONNECTOR_CIDR_RANGE: l'intervallo CIDR per il connettore di cui stai limitando l'accesso
VPC_NETWORK: il nome della tua rete VPC
RESOURCE_TAG: il tag di rete per la risorsa VPC a cui vuoi che acceda il connettore VPC
PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità della regola creata nel passaggio precedente su 990, prova 980.
Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione per gcloud compute firewall-rules create
.
Limitare l'accesso utilizzando le regole in uscita
I passaggi seguenti mostrano come creare regole in uscita per limitare l'accesso al connettore.
Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Ruolo Amministratore sicurezza Compute
- Ruolo IAM personalizzato con l'autorizzazione
compute.firewalls.create
abilitata
Negare il traffico in uscita dal connettore.
Crea una regola firewall in uscita sul connettore di accesso VPC serverless per impedire che invii il traffico in uscita, ad eccezione delle risposte stabilite, a qualsiasi destinazione.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
Sostituisci quanto segue:
RULE_NAME: il nome della nuova regola firewall. Ad esempio,
deny-vpc-connector
.PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono
tcp
oudp
. Ad esempio,tcp:80,udp
consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flagallow
.Per motivi di sicurezza e convalida, puoi anche configurare le regole di negazione per bloccare il traffico per i seguenti protocolli non supportati:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore VPC universale, se vuoi che la regola venga applicata a tutti i connettori VPC esistenti e a eventuali connettori VPC creati in futuro. o il tag di rete univoco del connettore VPC se vuoi controllare un connettore specifico.
VPC_NETWORK: il nome della tua rete VPC
PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più alta.
Consenti il traffico in uscita quando la destinazione rientra nell'intervallo CIDR a cui vuoi che acceda il connettore.
Utilizza i flag
allow
edestination-ranges
per creare una regola firewall che consenta il traffico in uscita dal connettore per uno specifico intervallo di destinazione. Imposta l'intervallo di destinazione sull'intervallo CIDR della risorsa nella rete VPC a cui vuoi che possa accedere il connettore. Imposta la priorità per questa regola in modo che sia un valore più basso rispetto alla priorità della regola effettuata nel passaggio precedente.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
Sostituisci quanto segue:
RULE_NAME: il nome della nuova regola firewall. Ad esempio,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono
tcp
oudp
. Ad esempio,tcp:80,udp
consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flagallow
.RESOURCE_CIDR_RANGE: l'intervallo CIDR per il connettore di cui stai limitando l'accesso
VPC_NETWORK: il nome della tua rete VPC
VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore VPC universale, se vuoi che la regola venga applicata a tutti i connettori VPC esistenti e a eventuali connettori VPC creati in futuro. o il tag di rete univoco del connettore VPC se vuoi controllare un connettore specifico. Se hai usato il tag di rete univoco nel passaggio precedente,
PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità della regola creata nel passaggio precedente su 990, prova 980.
Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione per gcloud compute firewall-rules create
.
Gestisci il connettore
Controllo del traffico in uscita da un servizio
Per impostazione predefinita, solo le richieste indirizzate a indirizzi IP interni e a nomi DNS interni vengono instradate tramite un connettore di accesso VPC serverless. Puoi specificare l'impostazione per il traffico in uscita per il servizio nel file app.yaml
.
Le impostazioni in uscita non sono compatibili con il servizio di recupero degli URL. Se non lo hai già fatto, disattiva l'impostazione predefinita Recupero URL e interrompi qualsiasi utilizzo esplicito della libreria di urlfetch
. L'utilizzo della libreria urlfetch
ignora le impostazioni in uscita e le richieste non verranno instradate tramite un connettore di accesso VPC serverless.
Per configurare il comportamento in uscita del servizio App Engine:
Aggiungi l'attributo
egress_setting
al campovpc_access_connector
del fileapp.yaml
del tuo 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 CloudREGION
con la regione in cui si trova il connettoreCONNECTOR_NAME
con il nome del connettoreEGRESS_SETTING
con una delle seguenti opzioni:- Valore predefinito:
private-ranges-only
. Solo le richieste a RFC 1918 e RFC 6598 intervalli di indirizzi IP o nomi DNS interni vengono instradati alla rete VPC. Tutte le altre richieste vengono instradate 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 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ò sospendere addebiti.
- Valore predefinito:
Esegui il deployment del servizio:
gcloud app deploy
Scollegare un servizio da una rete VPC
Per scollegare un servizio da una rete VPC, rimuovi il campo vpc_access_connector
dal file app.yaml
ed esegui di nuovo il deployment del servizio.
I connettori continuano a essere addebitati anche se non hanno traffico e sono disconnessi. Per i dettagli, vedi i pricing. Se non hai più bisogno del connettore, assicurati di eliminarlo per evitare la fatturazione continua.
Aggiorna un connettore
Puoi aggiornare e monitorare i seguenti attributi del connettore utilizzando la console Google Cloud, Google Cloud CLI o l'API:
- Tipo di macchina (istanza)
- Numero minimo e massimo di istanze
- Velocità effettiva recente, numero di istanze e utilizzo della CPU
Aggiorna tipo di macchina
Console
Vai alla pagina di riepilogo dell'accesso VPC serverless.
Seleziona il connettore da modificare e fai clic su Modifica.
Nell'elenco Tipo di istanza, seleziona il tipo di macchina preferito (istanza). Per ulteriori informazioni sui tipi di macchina disponibili, consulta la documentazione su Velocità effettiva e scalabilità.
gcloud
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Per aggiornare il tipo di macchina del connettore, esegui questo comando nel terminale:
gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
Sostituisci quanto segue:CONNECTOR_NAME
: il nome del connettoreREGION
: il nome della regione del connettoreMACHINE_TYPE
: il tuo tipo di macchina preferito. Per scoprire di più sui tipi di macchina disponibili, consulta la documentazione su Velocità effettiva e scalabilità.
Riduci il numero minimo e massimo di istanze
Per ridurre il numero minimo e massimo di istanze, devi:
- Crea un nuovo connettore con i tuoi valori preferiti.
- Aggiorna il servizio o la funzione per utilizzare il nuovo connettore.
- Elimina il connettore precedente dopo aver spostato il relativo traffico.
Per ulteriori informazioni, consulta Creare un connettore di accesso VPC serverless.
Aumenta il numero minimo e massimo di istanze
Console
Vai alla pagina di riepilogo dell'accesso VPC serverless.
Seleziona il connettore da modificare e fai clic su Modifica.
Nel campo Numero minimo di istanze, seleziona il numero minimo di istanze che preferisci.
Il valore più basso possibile per questo campo è il valore corrente. Il valore massimo possibile per questo campo è il valore corrente nel campo Numero massimo di istanze meno 1. Ad esempio, se il valore nel campo Numero massimo di istanze è 8, il valore massimo possibile per il campo Istanze minime è 7.
Nel campo Numero massimo di istanze, seleziona il numero massimo di istanze che preferisci.
Il valore più basso possibile per questo campo è il valore corrente. Il valore massimo possibile per questo campo è 10.
gcloud
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Per aumentare il numero minimo o massimo di istanze per il connettore, esegui questo comando nel terminale:
gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
Sostituisci quanto segue:
CONNECTOR_NAME
: il nome del connettoreREGION
: il nome della regione del connettoreMIN_INSTANCES
: numero minimo di istanze che preferisci.- Il valore più basso possibile per questo campo è l'attuale valore di
min_instances
. Per trovare il valore corrente, consulta Trovare i valori degli attributi attuali. - Il valore massimo possibile per questo campo è l'attuale valore di
max_instances
meno 1, perchémin_instances
deve essere inferiore amax_instances
. Ad esempio, semax_instances
è 8, il valore massimo possibile per questo campo è 7. Se il connettore utilizza il valoremax-instances
predefinito di 10, il valore massimo possibile per questo campo è 9. Per trovare il valore dimax-instances
, consulta Trovare i valori attuali degli attributi.
- Il valore più basso possibile per questo campo è l'attuale valore di
MAX_INSTANCES
:- Il valore più basso possibile per questo campo è l'attuale valore di
max_instances
. Per trovare il valore corrente, consulta Trovare i valori degli attributi attuali. - Il valore massimo possibile per questo campo è 10.
Se vuoi solo aumentare il numero minimo di istanze ma non il numero massimo, devi comunque specificare il numero massimo di istanze. Al contrario, se vuoi aggiornare solo il numero massimo di istanze ma non il numero minimo, devi comunque specificare il numero minimo di istanze. Per mantenere il numero minimo o massimo di istanze al valore attuale, specifica il valore attuale. Per trovare il loro valore attuale, consulta Trovare i valori degli attributi attuali.
- Il valore più basso possibile per questo campo è l'attuale valore di
Trovare i valori degli attributi attuali
Per trovare i valori degli attributi correnti del connettore, esegui quanto segue nel terminale:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECTSostituisci quanto segue:
CONNECTOR_NAME
: il nome del connettoreREGION
: il nome della regione del connettorePROJECT
: il nome del tuo progetto Google Cloud
Monitorare l'utilizzo del connettore
Il monitoraggio dell'utilizzo nel tempo può aiutarti a determinare quando regolare le impostazioni di un connettore. Ad esempio, in caso di picchi di utilizzo della CPU, puoi provare ad aumentare il numero massimo di istanze per ottenere risultati migliori. Oppure, se stai massimizzando la velocità effettiva, potresti decidere di passare a un tipo di macchina più grande.
Per visualizzare i grafici relativi a velocità effettiva, numero di istanze e utilizzo della CPU nel tempo del connettore utilizzando la console Google Cloud:
Vai alla pagina di riepilogo dell'accesso VPC serverless.
Fai clic sul nome del connettore da monitorare.
Seleziona il numero di giorni da visualizzare compreso tra 1 e 90.
Nel grafico Velocità effettiva, passa il mouse sopra il grafico per visualizzare la velocità effettiva recente del connettore.
Nel grafico Numero di istanze, passa il mouse sopra il grafico per visualizzare il numero di istanze utilizzate di recente dal connettore.
Nel grafico Utilizzo CPU, passa il mouse sopra il grafico per visualizzare l'utilizzo recente della CPU del connettore. Il grafico mostra l'utilizzo della CPU distribuito tra le istanze per il 50°, 95° e 99° percentile.
Elimina un connettore
Prima di eliminare un connettore, assicurati che a quel connettore non ci siano ancora servizi o job.
Per gli utenti di un VPC condiviso che hanno configurato i connettori nel progetto host del VPC condiviso, puoi utilizzare il comando gcloud compute networks vpc-access connectors describe
per elencare i progetti in cui sono presenti servizi o job che utilizzano un determinato connettore.
Per eliminare un connettore, utilizza la console Google Cloud o Google Cloud CLI:
Console
Vai alla pagina di riepilogo dell'accesso VPC serverless nella console Google Cloud:
Seleziona il connettore da eliminare.
Fai clic su Elimina.
gcloud
-
Nella console Google Cloud, attiva Cloud Shell.
Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.
Utilizza il seguente comando
gcloud
per eliminare un connettore:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Sostituisci quanto segue:
- CONNECTOR_NAME con il nome del connettore da eliminare
- REGION con la regione in cui si trova il connettore
Risoluzione dei problemi
Autorizzazioni account di servizio
Per eseguire operazioni nel progetto Google Cloud, l'accesso VPC serverless utilizza l'account di servizio Agente di servizio per l'accesso VPC serverless. L'indirizzo email di questo account di servizio ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
Per impostazione predefinita, questo account di servizio ha il ruolo Agente di servizio per accesso VPC serverless (roles/vpcaccess.serviceAgent
). Le operazioni di accesso VPC serverless potrebbero non riuscire se modifichi le autorizzazioni di questo account.
Errori
L'account di servizio richiede un errore del ruolo Agente di servizio
Se utilizzi il vincolo dei criteri dell'organizzazione Limita l'utilizzo del servizio delle risorse per bloccare Cloud Deployment Manager (deploymentmanager.googleapis.com
), potresti visualizzare il seguente messaggio di errore:
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
Imposta il criterio dell'organizzazione per rimuovere Deployment Manager dalla lista bloccata o aggiungerlo alla lista consentita.
Errore di creazione del connettore
Se la creazione di un connettore genera un errore, prova quanto segue:
- Specifica un intervallo IP interno RFC 1918 che non si sovrapponga ad alcuna prenotazione di indirizzi IP esistente nella rete VPC.
- Concedi al tuo progetto l'autorizzazione a utilizzare le immagini VM di Compute Engine dal progetto con ID
serverless-vpc-access-images
. Per ulteriori informazioni su come aggiornare i criteri dell'organizzazione di conseguenza, consulta Impostare i vincoli di accesso alle immagini.
Impossibile accedere alle risorse
Se hai specificato un connettore, ma non riesci comunque ad accedere alle risorse della rete VPC, assicurati che sulla rete VPC non siano presenti regole firewall con priorità inferiore a 1000 che negano il traffico in entrata dall'intervallo di indirizzi IP del connettore.
Se configuri un connettore in un progetto di servizio VPC condiviso, assicurati che le regole firewall consentano il traffico in entrata dall'infrastruttura serverless al connettore.
Errore di connessione rifiutata
Se ricevi connection refused
errori che riducono le prestazioni di rete, le tue connessioni potrebbero crescere senza limiti nelle chiamate alla tua applicazione serverless. Per limitare il numero massimo di connessioni utilizzate per
istanza, utilizza una libreria client che supporti i pool di connessioni. Per esempi dettagliati su come utilizzare i pool di connessioni, consulta Gestire le connessioni ai database.
Errore Risorsa non trovata
Quando elimini una rete VPC o una regola firewall, potresti visualizzare un messaggio simile al seguente: The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
Per informazioni su questo errore e sulla sua soluzione, consulta Errore risorsa non trovata nella documentazione sulle regole firewall VPC.
Passaggi successivi
- Monitora l'attività degli amministratori con l'audit logging dell'accesso VPC serverless.
- Proteggi risorse e dati creando un perimetro di servizio con i Controlli di servizio VPC.
- Scopri di più sui ruoli di Identity and Access Management (IAM) associati all'accesso VPC serverless. Consulta i ruoli di accesso VPC serverless nella documentazione IAM per un elenco delle autorizzazioni associate a ciascun ruolo.
- Scopri come connetterti a Memorystore dall'ambiente standard di App Engine.