Connettiti a una rete VPC
Ti consigliamo di utilizzare l'uscita VPC diretto per inviare il traffico a una rete VPC, senza che sia necessario un connettore.
Tuttavia, se l'uscita VPC diretto non è un'opzione per te, puoi configurare un connettore di accesso VPC serverless. Questa pagina mostra come connettere un servizio o un job Cloud Run alla tua rete VPC con un connettore, consentendo il traffico in uscita da Cloud Run alle istanze VM di Compute Engine, alle istanze Memorystore e a qualsiasi altra risorsa con un indirizzo IP interno.
Prima di iniziare
Se non hai ancora una rete VPC nel tuo progetto, creane una.
Se utilizzi il VPC condiviso, consulta la documentazione che tratta in modo specifico la configurazione dell'accesso VPC serverless per il tuo prodotto.
- Cloud Run: Connessione a una VPC condiviso condivisa
- Cloud Run Functions: connessione a una VPC condiviso condivisa
- App Engine: connessione a una VPC condiviso condivisa
Se hai un vincolo di policy dell'organizzazione che impedisce l'utilizzo di Cloud Deployment Manager, non potrai creare o eliminare connettori di accesso VPC serverless. La creazione o l'eliminazione di un connettore richiede la funzionalità Deployment Manager.
Se hai configurato una policy per immagini attendibili per il tuo progetto, assicurati di consentire il progetto
serverless-vpc-access-imagesnella policy dell'organizzazioneconstraints/compute.trustedimageProjects.Requisiti per la subnet del connettore
Ogni connettore richiede una propria subnet dedicata con uno scopo specifico e un intervallo di indirizzi IPv4 primario
/28.PRIVATEQuesta subnet non può essere utilizzata da altre risorse, come VM, Private Service Connect o bilanciatori del carico. Dopo aver creato il connettore, la subnet non può essere espansa. Deve rimanere un/28.Per creare un connettore in un progetto di servizio che utilizza una rete VPC condiviso in un progetto host, un amministratore di rete per la rete VPC condiviso deve creare manualmente la subnet del connettore prima di poter creare il connettore.
Per determinare se una subnet esistente creata manualmente può essere utilizzata da un connettore, descrivi la subnet:
gcloud compute networks subnets describe SUBNET --region=REGION
Sostituisci SUBNET con il nome della subnet e REGION con la regione che contiene la subnet.
Nell'output, verifica quanto segue:
- La subnet è una subnet normale. In Google Cloud CLI, ciò significa che
il valore di purpose è
PRIVATE. - L'intervallo di indirizzi IPv4 principale della subnet,
ipCidrRange, è un/28.
- La subnet è una subnet normale. In Google Cloud CLI, ciò significa che
il valore di purpose è
Se devi creare un connettore di accesso VPC serverless nello stesso progetto che contiene la rete VPC utilizzata dal connettore, puoi creare manualmente la subnet del connettore prima di creare il connettore oppure Google Cloud puoi creare automaticamente la subnet per il connettore.
Quando Google Cloud crea una subnet per un connettore, tieni presente quanto segue:
Le subnet create automaticamente per i connettori non sono visibili quando elenco le subnet, indipendentemente dal fatto che utilizzi la console Google Cloud , Google Cloud CLI o l'API Compute Engine.
Le subnet create automaticamente per i connettori non possono essere descritte.
Le subnet create automaticamente sono incluse nell'elenco delle subnet visualizzato quando descrivi una rete VPC.
Per saperne di più sulle subnet, incluso come elencare quelle esistenti per determinare quali intervalli di indirizzi IP sono già utilizzati, vedi Utilizzare le subnet.
Limitazioni
- Il traffico IPv6 non è supportato.
- La creazione di connettori di accesso VPC serverless nella regione
asia-southeast3non è supportata.
Crea connettore
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.
Se il connettore si trova nello stesso progetto della rete VPC, puoi creare un connettore utilizzando una subnet esistente oppure creare un connettore e una nuova subnet.
Se il connettore si trova in un progetto di servizio e utilizza una rete VPC condivisa, il connettore e la rete VPC associata si trovano in progetti diversi. Quando un connettore e la relativa rete VPC si trovano in progetti diversi, un amministratore di rete VPC condivisa deve creare la subnet del connettore nella rete VPC condivisa prima di poter creare il connettore e devi creare il connettore utilizzando una subnet esistente.
Per saperne di più sui requisiti delle subnet, consulta i requisiti delle subnet dei connettori.
Per informazioni sul throughput del connettore, inclusi il tipo di macchina e la scalabilità, consulta Throughput e scalabilità.
Puoi creare un connettore utilizzando la console Google Cloud , Google Cloud CLI o Terraform.
Console
Vai alla pagina di panoramica di Accesso VPC serverless.
Fai clic su Crea connettore.
Nel campo Nome, inserisci un nome per il connettore che rispetti le convenzioni di denominazione di Compute Engine e i seguenti requisiti aggiuntivi: il nome deve contenere meno di 21 caratteri e i trattini (-) vengono conteggiati come due caratteri.
Nel campo Regione, seleziona una regione per il connettore. Deve corrispondere alla regione del tuo servizio serverless.
Se il tuo servizio o job si trova nella regione
us-centraloeurope-west, utilizzaus-central1oeurope-west1.Nel campo Rete, seleziona la rete VPC a cui collegare il connettore.
Nel campo Subnet, seleziona una delle seguenti opzioni:
Crea un connettore utilizzando una subnet esistente: seleziona la subnet esistente nel campo Subnet.
Crea un connettore e una nuova subnet: seleziona Intervallo IP personalizzato nel campo Subnet. Quindi, inserisci il primo indirizzo in un CIDR
/28non utilizzato (ad esempio10.8.0.0/28) da utilizzare come intervallo di indirizzi IPv4 principale di una nuova subnet che Google Cloud crea nella rete VPC del connettore. Assicurati che l'intervallo IP non sia in conflitto con le route esistenti nella rete VPC del connettore. Il nome della nuova subnet inizia con il prefisso "aet-".
(Facoltativo) Per impostare le opzioni di scalabilità per un maggiore controllo del connettore, fai clic su Mostra impostazioni di scalabilità per visualizzare il modulo della scalabilità.
- Imposta il numero minimo e massimo di istanze per il connettore oppure utilizza i valori predefiniti, ovvero 2 (minimo) e 10 (massimo). Il connettore viene scalato fino al massimo specificato se l'utilizzo del traffico lo richiede, ma non viene ridimensionato quando il traffico diminuisce. Devi utilizzare valori compresi tra
2e10. - Nel menu Tipo di istanza, scegli il tipo di macchina da utilizzare per il connettore o utilizza il valore predefinito
e2-micro. Presta attenzione alla 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 (minimo) e 10 (massimo). Il connettore viene scalato fino al massimo specificato se l'utilizzo del traffico lo richiede, ma non viene ridimensionato quando il traffico diminuisce. Devi utilizzare valori compresi tra
Fai clic su Crea.
Quando il connettore è pronto per l'uso, accanto al nome verrà visualizzato un segno di spunta verde.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Aggiorna i componenti di
gcloudall'ultima versione:gcloud components update
Assicurati che l'API Serverless VPC Access sia abilitata per il tuo progetto:
gcloud services enable vpcaccess.googleapis.com
Crea il connettore utilizzando una delle seguenti opzioni:
Per maggiori dettagli e argomenti facoltativi, consulta la documentazione di riferimento di
gcloud.Crea un connettore utilizzando una subnet esistente:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Sostituisci quanto segue:
CONNECTOR_NAME: un nome per il connettore, che rispetti le convenzioni di denominazione di Compute Engine e i seguenti requisiti aggiuntivi: il nome deve contenere meno di 21 caratteri e i trattini (-) vengono conteggiati come due caratteri.REGION: una regione per il connettore, corrispondente alla regione del servizio o del job serverless. Se il tuo servizio o job si trova inus-centraloeurope-west, utilizzaus-central1oeurope-west1.SUBNET_NAME: il nome della subnet esistente.HOST_PROJECT_ID: l'ID progetto host VPC condiviso. Se il connettore e la subnet esistente si trovano nello stesso progetto, ometti il flag--subnet-project.MIN: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra2(valore predefinito) e9.MAX: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra3e10(valore predefinito). Se il connettore esegue lo scale up fino al numero massimo di istanze, non esegue lo scale down.MACHINE_TYPE: deve essere uno dei seguenti valori:f1-micro,e2-microoe2-standard-4.
Crea un connettore e una nuova subnet:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Sostituisci quanto segue:
CONNECTOR_NAME: un nome per il connettore, che rispetti le convenzioni di denominazione di Compute Engine e i seguenti requisiti aggiuntivi: il nome deve contenere meno di 21 caratteri e i trattini (-) vengono conteggiati come due caratteri.REGION: una regione per il connettore, corrispondente alla regione del servizio o del job serverless. Se il tuo servizio o job si trova inus-centraloeurope-west, utilizzaus-central1oeurope-west1.VPC_NETWORK: il nome della rete VPC a cui collegare il connettore. Il connettore e la rete VPC devono trovarsi nello stesso progetto.IP_RANGE: fornisci un CIDR/28non utilizzato (ad esempio10.8.0.0/28) da utilizzare come intervallo di indirizzi IPv4 primario di una nuova subnet che Google Cloud crea nella rete VPC del connettore. Assicurati che l'intervallo IP non sia in conflitto con le route esistenti nella rete VPC del connettore. Il nome della nuova subnet inizia con il prefisso "aet-".MIN: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra2(valore predefinito) e9.MAX: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra3e10(valore predefinito). Se il connettore esegue lo scale up fino al numero massimo di istanze, non esegue lo scale down.MACHINE_TYPE: deve essere uno dei seguenti valori:f1-micro,e2-microoe2-standard-4.
Prima di utilizzare il connettore, verifica che si trovi nello stato
READY:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Sostituisci quanto segue:
CONNECTOR_NAME: il nome del connettore, che hai specificato nel passaggio precedente.REGION: la regione del connettore, che hai specificato 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 VPC e una subnet e poi creare il connettore.
Configura l'ambiente serverless per utilizzare un connettore
Dopo aver creato un connettore di accesso VPC serverless, configura l'ambiente serverless per utilizzarlo seguendo le istruzioni per il tuo ambiente serverless:
Configura Cloud Run per utilizzare un connettore
Quando crei un nuovo servizio o esegui il deployment di una nuova revisione, puoi configurare il servizio in modo che utilizzi un connettore utilizzando la console Google Cloud , Google Cloud CLI, un file YAML o una risorsa Terraform.
Console
Nella console Google Cloud , vai a Cloud Run:
Seleziona Servizi dal menu di navigazione di Cloud Run e fai clic su Esegui il deployment del container per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, poi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.
Fai clic sulla scheda Connessioni.
- Nel campo Connettore VPC, seleziona un connettore da utilizzare o seleziona Nessuno per disconnettere il servizio da una rete VPC.
Fai clic su Crea o Esegui il deployment.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per specificare un connettore durante il deployment, utilizza il flag
--vpc-connector:gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
- Sostituisci
SERVICEcon il nome del servizio. - Sostituisci
IMAGE_URL. - Sostituisci
CONNECTOR_NAMEcon il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completo, ad esempio: dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è la regione del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
Per collegare, aggiornare o rimuovere un connettore per un servizio esistente, utilizza il comando
gcloud run services updatecon uno dei seguenti flag, a seconda delle necessità:Ad esempio, per allegare o aggiornare un connettore:
gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
- Sostituisci
SERVICEcon il nome del servizio. - Sostituisci
CONNECTOR_NAMEcon il nome del connettore.
- Sostituisci
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiungi o aggiorna l'attributo
run.googleapis.com/vpc-access-connectorinannotationssotto l'attributospecdi primo livello:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
- Sostituisci
SERVICEcon il nome del tuo servizio Cloud Run. - Sostituisci
CONNECTOR_NAMEcon il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completo, ad esempio: dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è la regione del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
- Sostituisci
Sostituisci il servizio con la sua nuova configurazione utilizzando il seguente comando:
gcloud beta run services replace service.yaml
YAML
Terraform
Puoi utilizzare una risorsa Terraform per creare un servizio e configurarlo in modo che utilizzi il connettore.
Configura Cloud Run Functions per utilizzare un connettore
Puoi configurare una funzione in modo che utilizzi un connettore dalla console Google Cloud o da Google Cloud CLI:
Console
Vai alla pagina Panoramica delle funzioni Cloud Run nella consoleGoogle Cloud :
Fai clic su Crea funzione. In alternativa, fai clic su una funzione esistente per andare alla relativa pagina dei dettagli e fai clic su Modifica.
Espandi le impostazioni avanzate facendo clic su IMPOSTAZIONI DI RUNTIME, BUILD E CONNESSIONI.
Nella scheda Connessioni in Impostazioni traffico in uscita, inserisci il nome del connettore nel campo Connettore VPC.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Utilizza il comando
gcloud functions deployper eseguire il deployment della funzione e specifica il flag--vpc-connector:gcloud functions deploy FUNCTION_NAME \ --vpc-connector CONNECTOR_NAME \ FLAGS...
dove:
FUNCTION_NAMEè il nome della funzione.CONNECTOR_NAMEè il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completo, ad esempio: dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è la regione del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
FLAGS...si riferisce ad altri flag che passi durante il deployment della funzione.
Per un maggiore controllo sulle richieste instradate tramite il connettore, consulta Impostazioni del traffico in uscita.
Configurare App Engine per utilizzare un connettore
Python 2
Interrompere l'utilizzo del servizio URL Fetch di App Engine.
Per impostazione predefinita, tutte le richieste vengono indirizzate tramite il servizio di recupero URL. In questo modo, le richieste alla tua rete VPC non vanno a buon fine. Per disattivare questa impostazione predefinita, consulta Disattivare il recupero degli URL dalla gestione di tutte le richieste in uscita.
Se necessario, puoi comunque utilizzare la libreria
urlfetchdirettamente per le singole richieste, anche se non è consigliato.Aggiungi il campo Accesso VPC serverless al file
app.yaml:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Sostituisci quanto segue:
PROJECT_IDcon l'ID progetto Google Cloud . Se il connettore si trova nel progetto host di un VPC condiviso, questo deve essere l'ID del progetto host.REGIONcon la regione in cui si trova il connettore.CONNECTOR_NAMEcon il nome del connettore.
Esegui il deployment del servizio:
gcloud app deploy
Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.
Java 8
Interrompi l'utilizzo del servizio URL Fetch di App Engine
URLFetchService.Aggiungi l'elemento di accesso VPC serverless al file
appengine-web.xmldel tuo servizio:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> </vpc-access-connector>
Sostituisci quanto segue:
PROJECT_IDcon l'ID progetto Google Cloud . Se il connettore si trova nel progetto host di un VPC condiviso, questo deve essere l'ID del progetto host.REGIONcon la regione in cui si trova il connettore.CONNECTOR_NAMEcon il nome del connettore.
Esegui il deployment del servizio:
gcloud app deploy WEB-INF/appengine-web.xml
Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.
Go 1.11
Interrompere l'utilizzo del servizio URL Fetch di App Engine.
L'accesso VPC serverless non supporta il recupero di URL e le richieste effettuate utilizzando il recupero di URL ignorano le impostazioni di accesso VPC serverless. Stabilisci connessioni in uscita con socket.
Aggiungi il campo Accesso VPC serverless al file
app.yaml:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Sostituisci quanto segue:
PROJECT_IDcon l'ID progetto Google CloudREGIONcon la regione in cui si trova il connettoreCONNECTOR_NAMEcon il nome del connettore
Esegui il deployment del servizio:
gcloud app deploy
Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.
Tutti gli altri runtime
Aggiungi il campo Accesso VPC serverless al file
app.yaml:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Sostituisci quanto segue:
PROJECT_IDcon l'ID progetto Google Cloud . Se il connettore si trova nel progetto host di un VPC condiviso, questo deve essere l'ID del progetto host.REGIONcon la regione in cui si trova il connettore.CONNECTOR_NAMEcon il nome del connettore.
Esegui il deployment del servizio:
gcloud app deploy
Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.
Configurare le regole firewall per i connettori
Regole firewall richieste per i connettori nei progetti di servizio
Se crei un connettore in una rete VPC autonoma o nel progetto host di una rete VPC condivisa, Google Cloud crea tutte le regole firewall necessarie per il funzionamento del connettore. Per saperne di più, consulta Regole firewall per i connettori in reti VPC autonome o progetti host VPC condiviso.
Tuttavia, se crei un connettore in un progetto di servizio e il connettore ha come target una rete VPC condivisa nel progetto host, devi aggiungere regole firewall per consentire il traffico necessario per il funzionamento del connettore dai seguenti intervalli:
- Intervallo IP dell'infrastruttura serverless:
35.199.224.0/19 - Intervalli IP dei probe di controllo di integrità:
35.191.0.0/16,35.191.192.0/18e130.211.0.0/22
Questi intervalli vengono utilizzati dall'infrastruttura Google sottostante Cloud Run, Cloud Run Functions e l'ambiente standard di App Engine. Tutte le richieste provenienti da questi indirizzi IP hanno origine dall'infrastruttura Google per garantire che ogni risorsa serverless comunichi solo con il connettore a cui è connessa.
Devi anche consentire il traffico dalla subnet del connettore alle risorse nella tua rete VPC.
Per eseguire questi passaggi, devi disporre di uno dei seguenti ruoli nel progetto host:
- Ruolo Proprietario (
roles/owner) - Ruolo Compute Security Admin (
roles/compute.securityAdmin) - Ruolo di Identity and Access Management (IAM) personalizzato con l'autorizzazione
compute.firewalls.createattivata
Per una configurazione di base, applica le regole per consentire alle risorse serverless in qualsiasi progetto di servizio connesso alla rete VPC condivisa di inviare richieste a qualsiasi risorsa della rete.
Per applicare queste regole, esegui i seguenti comandi nel progetto host:
Crea regole firewall che consentano alle richieste dell'infrastruttura serverless di Google e ai probe di controllo di integrità di raggiungere tutti i connettori nella rete. In questi comandi, le porte UDP e TCP vengono utilizzate rispettivamente come proxy e per i controlli di integrità HTTP. Non modificare le porte specificate.
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
Sostituisci
VPC_NETWORKcon il nome della rete VPC a cui collegare il connettore.Crea una regola firewall in entrata sulla tua rete VPC per consentire le richieste dai connettori che hanno come target questa rete:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
Questa regola concede al connettore l'accesso a ogni risorsa della rete. Per limitare le risorse che il tuo ambiente serverless può raggiungere utilizzando l'accesso VPC serverless, consulta Limita l'accesso a VM del connettore alle risorse di rete VPC.
Crea regole firewall per connettori specifici
Se segui la procedura descritta in Regole firewall richieste per i connettori nei progetti di servizio, le regole firewall risultanti si applicano a tutti i connettori, sia quelli attuali sia quelli creati in futuro. Se non vuoi che questo accada, ma vuoi creare regole solo per connettori specifici, puoi definire l'ambito delle regole in modo che vengano applicate solo a questi connettori.
Per limitare l'ambito delle regole a connettori specifici, puoi utilizzare uno dei seguenti meccanismi:
- Tag di rete: ogni connettore ha due tag di rete:
vpc-connectorevpc-connector-REGION-CONNECTOR_NAME. Utilizza il secondo formato per limitare l'ambito delle regole firewall a un connettore specifico. - Intervalli IP: utilizza questo campo solo per le regole in uscita, perché non funziona per le regole in entrata. Puoi utilizzare l'intervallo IP della subnet del connettore per limitare l'ambito delle regole firewall a un singolo connettore VPC.
Limita l'accesso a VM del connettore alle risorse della rete VPC
Puoi limitare l'accesso del connettore alle risorse nella rete VPC target utilizzando le regole firewall VPC o le regole nelle policy firewall. Puoi applicare queste limitazioni utilizzando una delle seguenti strategie:
- Crea regole in entrata i cui target rappresentano le risorse a cui vuoi limitare l'accesso della VM del connettore e le cui origini rappresentano le VM del connettore.
- Crea regole in uscita i cui target rappresentano le VM del connettore e le cui destinazioni rappresentano le risorse per le quali vuoi limitare l'accesso delle VM del connettore.
Gli esempi riportati di seguito illustrano ciascuna strategia.
Limita l'accesso utilizzando regole in entrata
Scegli i tag di rete o gli intervalli CIDR per controllare il traffico in entrata nella rete VPC.
Tag di rete
I passaggi seguenti mostrano come creare regole in entrata che limitano l'accesso di un connettore alla tua rete VPC in base ai tag di rete del connettore.
Assicurati di disporre delle autorizzazioni necessarie per inserire regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Ruolo Compute Security Admin
- Ruolo IAM personalizzato con l'autorizzazione
compute.firewalls.createabilitata
Nega il traffico del connettore nella rete VPC.
Crea una regola firewall in entrata con priorità inferiore a 1000 nella tua rete VPC per negare l'accesso in entrata dal tag di rete del connettore. Questa operazione sostituisce la regola firewall implicita che l'accesso VPC serverless crea per impostazione predefinita nella tua rete VPC.
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 connettore VPC. I protocolli supportati sono
tcpoudp. Ad esempio,tcp:80,udpconsente il traffico TCP tramite la porta 80 e il traffico UDP. Per saperne di più, consulta la documentazione relativa al flagallow.Per motivi di sicurezza e convalida, puoi anche configurare regole di negazione per bloccare il traffico per i seguenti protocolli non supportati:
ah,all,esp,icmp,ipipesctp.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_NAMESostituisci:
- REGION: la regione del connettore che vuoi 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 alla risorsa che deve ricevere il traffico del connettore.
Utilizza i flag
allowetarget-tagsper creare una regola firewall in entrata che abbia come target la risorsa nella tua rete VPC a cui vuoi che il connettore VPC acceda. Imposta la priorità per questa regola su un valore inferiore 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 connettore VPC. I protocolli supportati sono
tcpoudp. Ad esempio,tcp:80,udpconsente il traffico TCP tramite la porta 80 e il traffico UDP. Per saperne di più, 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 che hai specificato nel passaggio precedente.
- Tag di rete universale:
vpc-connector Tag di rete univoco:
vpc-connector-REGION-CONNECTOR_NAMESostituisci:
- REGION: la regione del connettore che vuoi 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 il connettore VPC acceda
PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità della regola che hai creato nel passaggio precedente su 990, prova 980.
Per saperne di più sui flag obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione relativa a gcloud compute firewall-rules create.
Intervallo CIDR
I passaggi seguenti mostrano come creare regole in entrata che limitano l'accesso di un connettore alla tua rete VPC in base all'intervallo CIDR del connettore.
Assicurati di disporre delle autorizzazioni necessarie per inserire regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Ruolo Compute Security Admin
- Ruolo IAM personalizzato con l'autorizzazione
compute.firewalls.createabilitata
Nega il traffico del connettore nella rete VPC.
Crea una regola firewall in entrata con priorità inferiore a 1000 nella tua rete VPC per negare l'accesso in entrata dall'intervallo CIDR del connettore. Questa operazione sostituisce la regola firewall implicita che l'accesso VPC serverless crea per impostazione predefinita nella tua rete VPC.
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 connettore VPC. I protocolli supportati sono
tcpoudp. Ad esempio,tcp:80,udpconsente il traffico TCP tramite la porta 80 e il traffico UDP. Per saperne di più, consulta la documentazione relativa al flagallow.Per motivi di sicurezza e convalida, puoi anche configurare regole di negazione per bloccare il traffico per i seguenti protocolli non supportati:
ah,all,esp,icmp,ipipesctp.VPC_CONNECTOR_CIDR_RANGE: l'intervallo CIDR per il connettore di cui stai limitando l'accesso
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 alla risorsa che deve ricevere il traffico del connettore.
Utilizza i flag
allowetarget-tagsper creare una regola firewall in entrata che abbia come target la risorsa nella tua rete VPC a cui vuoi che il connettore VPC acceda. Imposta la priorità per questa regola su un valore inferiore 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 connettore VPC. I protocolli supportati sono
tcpoudp. Ad esempio,tcp:80,udpconsente il traffico TCP tramite la porta 80 e il traffico UDP. Per saperne di più, 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 il connettore VPC acceda
PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità della regola che hai creato nel passaggio precedente su 990, prova 980.
Per saperne di più sui flag obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione relativa a gcloud compute firewall-rules create.
Limita l'accesso utilizzando regole in uscita
I passaggi riportati di seguito mostrano come creare regole in uscita per limitare l'accesso al connettore.
Assicurati di disporre delle autorizzazioni necessarie per inserire regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Ruolo Compute Security Admin
- Ruolo IAM personalizzato con l'autorizzazione
compute.firewalls.createabilitata
Nega il traffico in uscita dal connettore.
Crea una regola firewall in uscita sul connettore di accesso VPC serverless per impedirgli di inviare 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 connettore VPC. I protocolli supportati sono
tcpoudp. Ad esempio,tcp:80,udpconsente il traffico TCP tramite la porta 80 e il traffico UDP. Per saperne di più, consulta la documentazione relativa al flagallow.Per motivi di sicurezza e convalida, puoi anche configurare regole di negazione per bloccare il traffico per i seguenti protocolli non supportati:
ah,all,esp,icmp,ipipesctp.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 tutti i connettori VPC creati in futuro. In alternativa, il tag di rete del connettore VPC univoco 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 si trova nell'intervallo CIDR a cui vuoi che il connettore acceda.
Utilizza i flag
allowedestination-rangesper creare una regola firewall che consenta il traffico in uscita dal connettore per un intervallo di destinazione specifico. Imposta l'intervallo di destinazione sull'intervallo CIDR della risorsa nella tua rete VPC a cui vuoi che il connettore possa accedere. Imposta la priorità per questa regola su un valore inferiore rispetto alla priorità della regola creata 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 connettore VPC. I protocolli supportati sono
tcpoudp. Ad esempio,tcp:80,udpconsente il traffico TCP tramite la porta 80 e il traffico UDP. Per saperne di più, 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 tutti i connettori VPC creati in futuro. In alternativa, il tag di rete del connettore VPC univoco se vuoi controllare un connettore specifico. Se hai utilizzato il tag di rete univoco nel passaggio precedente, utilizza il tag di rete univoco.
PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità della regola che hai creato nel passaggio precedente su 990, prova 980.
Per saperne di più sui flag obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione relativa a gcloud compute firewall-rules create.
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
- Throughput recente, numero di istanze e utilizzo della CPU
Aggiorna tipo di macchina
Console
Vai alla pagina di panoramica di Accesso VPC serverless.
Seleziona il connettore da modificare e fai clic su Modifica.
Nell'elenco Tipo di istanza, seleziona il tipo di macchina (istanza) che preferisci. Per scoprire di più sui tipi di macchina disponibili, consulta la documentazione su Throughput e scalabilità.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per aggiornare il tipo di macchina del connettore, esegui questo comando nel terminale:
Sostituisci quanto segue:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
CONNECTOR_NAME: il nome del connettoreREGION: il nome della regione del connettoreMACHINE_TYPE: il tipo di macchina che preferisci. Per scoprire di più sui tipi di macchina disponibili, consulta la documentazione su Throughput e scalabilità.
Diminuisci il numero minimo e massimo di istanze
Per diminuire il numero minimo e massimo di istanze, completa le seguenti operazioni:
- Crea un nuovo connettore con i valori che preferisci.
- Aggiorna il servizio o la funzione per utilizzare il nuovo connettore.
- Elimina il vecchio connettore dopo aver spostato il traffico.
Aumenta il numero minimo e massimo di istanze
Console
Vai alla pagina di panoramica di 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ù piccolo possibile per questo campo è il valore attuale. Il valore più grande possibile per questo campo è il valore attuale 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 Numero massimo di istanze è 7.
Nel campo Numero massimo di istanze, seleziona il numero massimo di istanze che preferisci.
Il valore più piccolo possibile per questo campo è il valore attuale. Il valore massimo possibile per questo campo è 10.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Per aumentare il numero minimo o massimo di istanze per il connettore, esegui questo comando nel terminale:
Sostituisci quanto segue:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
CONNECTOR_NAME: il nome del connettoreREGION: il nome della regione del connettoreMIN_INSTANCES: il numero minimo di istanze che preferisci.- Il valore più piccolo possibile per questo campo è il valore attuale di
min_instances. Per trovare il valore attuale, consulta Trova i valori degli attributi correnti. - Il valore massimo possibile per questo campo è il valore attuale di
max_instancesmeno 1, perchémin_instancesdeve essere inferiore amax_instances. Ad esempio, semax_instancesè 8, il valore più grande possibile per questo campo è 7. Se il connettore utilizza il valore predefinito permax-instancesdi 10, il valore massimo possibile di questo campo è 9. Per trovare il valore dimax-instances, consulta Trova i valori degli attributi correnti.
- Il valore più piccolo possibile per questo campo è il valore attuale di
MAX_INSTANCES:- Il valore più piccolo possibile per questo campo è il valore attuale di
max_instances. Per trovare il valore attuale, consulta Trova i valori degli attributi correnti. - Il valore massimo possibile per questo campo è 10.
Se vuoi aumentare solo il numero minimo di istanze, ma non quello massimo, devi comunque specificare il numero massimo di istanze. Allo stesso modo, se vuoi aggiornare solo il numero massimo di istanze, ma non quello 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 valore attuale, consulta Trova i valori degli attributi correnti.
- Il valore più piccolo possibile per questo campo è il valore attuale di
Trova i valori degli attributi correnti
Per trovare i valori degli attributi correnti per il connettore, esegui il seguente comando nel terminale:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
CONNECTOR_NAME: il nome del connettoreREGION: il nome della regione del connettorePROJECT: il nome del progetto Google Cloud
Monitora l'utilizzo dei connettori
Il monitoraggio dell'utilizzo nel tempo può aiutarti a determinare quando modificare le impostazioni di un connettore. Ad esempio, se l'utilizzo della CPU ha un picco improvviso, potresti provare ad aumentare il numero massimo di istanze per ottenere risultati migliori. In alternativa, se stai raggiungendo il limite di throughput, potresti decidere di passare a un tipo di macchina più grande.
Puoi visualizzare i grafici relativi al throughput, al numero di istanze e alle metriche di utilizzo della CPU del connettore nel tempo utilizzando la console Google Cloud :
Vai alla pagina di panoramica di Accesso VPC serverless.
Fai clic sul nome del connettore che vuoi monitorare.
Seleziona il numero di giorni da visualizzare, compreso tra 1 e 90 giorni.
Nel grafico Throughput, tieni il puntatore sopra il grafico per visualizzare il throughput recente del connettore.
Nel grafico Numero di istanze, tieni il puntatore sopra il grafico per visualizzare il numero di istanze utilizzate di recente dal connettore.
Nel grafico Utilizzo CPU, tieni il puntatore 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, devi rimuoverlo da tutte le risorse serverless che lo utilizzano ancora. L'eliminazione di un connettore prima di rimuoverlo dalle risorse serverless ti impedisce di eliminare la rete VPC in un secondo momento.
Per gli utenti del VPC condiviso che configurano 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 risorse serverless che utilizzano un determinato connettore.
Per eliminare un connettore, utilizza la console Google Cloud o Google Cloud CLI:
Console
Vai alla pagina di panoramica di Accesso VPC serverless nella consoleGoogle Cloud :
Seleziona il connettore da eliminare.
Fai clic su Elimina.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Utilizza il seguente comando
gcloudper eliminare un connettore:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Sostituisci quanto segue:
- CONNECTOR_NAME con il nome del connettore che vuoi eliminare
- REGION con la regione in cui si trova il connettore
Gestire i vincoli personalizzati per i progetti
Questa sezione descrive come creare vincoli personalizzati per i connettori di accesso VPC serverless e applicarli a livello di progetto. Per informazioni sulle policy dell'organizzazione personalizzate, vedi Creazione e gestione delle policy dell'organizzazione personalizzate.
La policy dell'organizzazioneGoogle Cloud offre un controllo centralizzato e programmatico sulle risorse della tua organizzazione. In qualità di amministratore della policy dell'organizzazione, puoi definire una policy dell'organizzazione, ovvero un insieme di limitazioni chiamate vincoli che si applicano alle risorseGoogle Cloud e ai discendenti di queste risorse nella gerarchia delle risorseGoogle Cloud . Puoi applicare le policy dell'organizzazione a livello di organizzazione, cartella o progetto.
La policy dell'organizzazione fornisce vincoli predefiniti per vari serviziGoogle Cloud . Tuttavia, se cerchi un controllo più granulare e personalizzabile sui campi specifici limitati nelle policy dell'organizzazione, puoi anche creare policy dell'organizzazione personalizzate.
Vantaggi
L'accesso VPC serverless consente di scrivere un numero qualsiasi di vincoli personalizzati utilizzando la maggior parte dei campi configurati dall'utente nell'API Serverless VPC Access. Ad esempio, puoi creare un vincolo personalizzato che specifica le subnet che un connettore di accesso VPC serverless può utilizzare.
Una volta applicate, le richieste che violano una policy che applica un vincolo personalizzato mostrano un messaggio di errore nella gcloud CLI e nei log di accesso VPC serverless. Il messaggio di errore contiene l'ID vincolo e la descrizione del vincolo personalizzato violato.
Ereditarietà delle policy
Per impostazione predefinita, le policy dell'organizzazione vengono ereditate dai discendenti delle risorse su cui applichi la policy. Ad esempio, se applichi una policy a una cartella, Google Cloud applica la policy a tutti i progetti contenuti nella cartella. Per scoprire di più su questo comportamento e su come modificarlo, consulta Regole di valutazione della gerarchia.
Limitazioni
La specifica del tipo di macchina, del numero minimo di istanze o del numero massimo di istanze non è supportata.
Prima di iniziare
Assicurati di conoscere il tuo ID organizzazione.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per gestire le policy dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Organization Policy Administrator (roles/orgpolicy.policyAdmin) sulla risorsa organizzazione.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Crea un vincolo personalizzato
Un vincolo personalizzato è definito in un file YAML dalle risorse, dai metodi, dalle condizioni e dalle azioni supportati dal servizio a cui stai applicando la policy dell'organizzazione. Le condizioni per i vincoli personalizzati vengono definite utilizzando il Common Expression Language (CEL). Per saperne di più su come creare condizioni nei vincoli personalizzati utilizzando il CEL, consulta la sezione relativa al CEL di Creazione e gestione di vincoli personalizzati.
Per creare un file YAML per un vincolo personalizzato di accesso VPC serverless, consulta il seguente esempio:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Sostituisci quanto segue:
ORGANIZATION_ID: l'ID della tua organizzazione, ad esempio123456789.CONSTRAINT_NAME: il nome che vuoi assegnare al nuovo vincolo personalizzato. Un vincolo personalizzato deve iniziare concustom.e può includere solo lettere maiuscole, lettere minuscole o numeri, ad esempio custom.defaultNetworkConstraint. La lunghezza massima di questo campo è di 70 caratteri, senza contare il prefisso.CONDITION: una condizione CEL scritta in base a una rappresentazione di una risorsa di servizio supportata. Questo campo ha una lunghezza massima di 1000 caratteri. Ad esempio"resource.network == default".ACTION: l'azione da eseguire seconditionè soddisfatta. Può essereALLOWoDENY.DISPLAY_NAME: un nome facile da ricordare per il vincolo. Questo campo ha una lunghezza massima di 200 caratteri.DESCRIPTION: una descrizione chiara del vincolo da visualizzare come messaggio di errore in caso di violazione della policy, ad esempio"Require network to not be set to default."Questo campo ha una lunghezza massima di 2000 caratteri.
Per saperne di più su come creare un vincolo personalizzato, consulta Definizione di vincoli personalizzati.
Configura un vincolo personalizzato
Console
Per creare un vincolo personalizzato:
- Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.
- Nel selettore di progetti, seleziona il progetto per cui vuoi impostare la policy dell'organizzazione.
- Fai clic su Vincolo personalizzato.
- Nella casella Nome visualizzato, inserisci un nome leggibile per il vincolo. Questo nome viene utilizzato nei messaggi di errore e può essere impiegato per l'identificazione e il debug. Non utilizzare PII o dati sensibili nei nomi visualizzati perché potrebbero essere esposti nei messaggi di errore. Questo campo può contenere fino a 200 caratteri.
-
Nella casella ID vincolo, inserisci il nome che vuoi assegnare al nuovo vincolo personalizzato. Un vincolo personalizzato può contenere solo lettere (maiuscole e minuscole) o numeri, ad esempio
custom.disableGkeAutoUpgrade. Questo campo può contenere fino a 70 caratteri, senza contare il prefisso (custom.), ad esempioorganizations/123456789/customConstraints/custom. Non includere PII o dati sensibili nell'ID vincolo perché potrebbero essere esposti nei messaggi di errore. - Nella casella Descrizione, inserisci una descrizione leggibile del vincolo. Questa descrizione viene utilizzata come messaggio di errore in caso di violazione della policy. Includi dettagli sul motivo della violazione della policy e su come risolverla. Non includere PII o dati sensibili nella descrizione perché potrebbero essere esposti nei messaggi di errore. Questo campo può contenere fino a 2000 caratteri.
-
Nella casella Tipo di risorsa, seleziona il nome della risorsa REST Google Cloud contenente l'oggetto e il campo che vuoi limitare, ad esempio
container.googleapis.com/NodePool. La maggior parte dei tipi di risorse supporta fino a 20 vincoli personalizzati. Se tenti di creare altri vincoli personalizzati, l'operazione non riesce. - In Metodo di applicazione forzata, seleziona se applicare il vincolo a un metodo REST CREATE o a entrambi i metodi CREATE e UPDATE. Se applichi il vincolo con il metodo UPDATE a una risorsa che viola il vincolo, le modifiche a quella risorsa vengono bloccate dalla policy dell'organizzazione, a meno che la modifica non risolva la violazione.
- Per definire una condizione, fai clic su Modifica condizione.
-
Nel riquadro Aggiungi condizione, crea una condizione CEL che fa riferimento a una risorsa di servizio supportata, ad esempio
resource.management.autoUpgrade == false. Questo campo può contenere fino a 1000 caratteri. Per informazioni dettagliate sull'utilizzo del CEL, consulta Common Expression Language. Per saperne di più sulle risorse di servizio che puoi utilizzare nei vincoli personalizzati, consulta Servizi supportati dai vincoli personalizzati. - Fai clic su Salva.
- In Azione, seleziona se consentire o negare il metodo valutato se la condizione viene soddisfatta.
- Fai clic su Crea vincolo.
Non tutti i servizi Google Cloud supportano entrambi i metodi. Per visualizzare i metodi supportati per ogni servizio, individualo in Servizi supportati.
L'azione per negare fa sì che l'operazione di creazione o aggiornamento della risorsa viene bloccata se la condizione restituisce il valore true.
L'azione per consentire fa sì che l'operazione di creazione o aggiornamento della risorsa è consentita solo se la condizione restituisce il valore true. Tutti gli altri casi, tranne quelli elencati esplicitamente nella condizione, vengono bloccati.
Dopo aver inserito un valore in ogni campo, a destra viene visualizzata la configurazione YAML equivalente per questo vincolo personalizzato.
gcloud
- Per creare un vincolo personalizzato, crea un file YAML utilizzando il seguente formato:
-
ORGANIZATION_ID: l'ID della tua organizzazione, ad esempio123456789. -
CONSTRAINT_NAME: il nome che vuoi assegnare al nuovo vincolo personalizzato. Un vincolo personalizzato può contenere solo lettere (maiuscole e minuscole) o numeri, ad esempiocustom.defaultNetworkConstraint. Questo campo può contenere fino a 70 caratteri. -
RESOURCE_NAME: il nome completo della risorsa Google Cloudcontenente l'oggetto e il campo che vuoi limitare. Ad esempio,vpcaccess.googleapis.com/Connector. -
CONDITION: una condizione CEL scritta in base a una rappresentazione di una risorsa di servizio supportata. Questo campo può contenere fino a 1000 caratteri. Ad esempio,"resource.network == default". -
ACTION: l'azione da eseguire seconditionè soddisfatta. Può essere soloALLOW. -
DISPLAY_NAME: un nome facile da ricordare per il vincolo. Questo campo può contenere fino a 200 caratteri. -
DESCRIPTION: una descrizione chiara del vincolo da visualizzare come messaggio di errore in caso di violazione della policy. Questo campo può contenere fino a 2000 caratteri. -
Dopo aver creato il file YAML per un nuovo vincolo personalizzato, devi configurarlo per renderlo disponibile per le policy dell'organizzazione. Per impostare un vincolo personalizzato, utilizza il comando
gcloud org-policies set-custom-constraint: -
Per verificare che il vincolo personalizzato esista, utilizza il comando
gcloud org-policies list-custom-constraints:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME resourceTypes: - RESOURCE_NAME methodTypes: - CREATE condition: "CONDITION" actionType: ACTION displayName: DISPLAY_NAME description: DESCRIPTION
Sostituisci quanto segue:
Per saperne di più sulle risorse disponibili in base alle quali scrivere condizioni, consulta Risorse supportate.
L'azione ALLOW (Consenti) indica che, se la condizione restituisce il valore true, l'operazione di creazione o aggiornamento della risorsa è consentita. Ciò significa anche che tutti gli altri casi, tranne quello elencato esplicitamente nella condizione, sono bloccati.
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Sostituisci CONSTRAINT_PATH con il percorso completo del file del vincolo personalizzato. Ad esempio, /home/user/customconstraint.yaml.
Al termine di questa operazione, i vincoli personalizzati sono disponibili come policy dell'organizzazione nel tuo elenco di policy dell'organizzazione Google Cloud .
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Sostituisci ORGANIZATION_ID con l'ID della risorsa della tua organizzazione.
Per saperne di più, consulta Visualizzazione delle policy dell'organizzazione.
Applica un vincolo personalizzato
Puoi applicare un vincolo creando una policy dell'organizzazione che lo richiami e poi applicando questa policy dell'organizzazione a una risorsa Google Cloud .Console
- Nella console Google Cloud , vai alla pagina Policy dell'organizzazione.
- Nel selettore di progetti, seleziona il progetto per cui vuoi impostare la policy dell'organizzazione.
- Nell'elenco della pagina Policy dell'organizzazione, seleziona il vincolo per visualizzare la pagina Dettagli policy relativa al vincolo in questione.
- Per configurare la policy dell'organizzazione per questa risorsa, fai clic su Gestisci policy.
- Nella pagina Modifica policy, seleziona Esegui override della policy dell'unità organizzativa principale.
- Fai clic su Aggiungi una regola.
- Nella sezione Applicazione, seleziona se questa policy dell'organizzazione viene applicata o meno.
- (Facoltativo) Per rendere la policy dell'organizzazione condizionale su un tag, fai clic su Aggiungi condizione. Tieni presente che, se aggiungi una regola condizionale a una policy dell'organizzazione, devi aggiungere almeno una regola non condizionale, altrimenti la policy non può essere salvata. Per saperne di più, consulta Impostazione di una policy dell'organizzazione con tag.
- Fai clic su Testa modifiche per simulare l'effetto della policy dell'organizzazione. Per saperne di più, consulta Testa le modifiche alla policy dell'organizzazione con Policy Simulator.
- Per applicare la policy dell'organizzazione in modalità dry run, fai clic su Imposta policy dry run. Per saperne di più, consulta Crea una policy dell'organizzazione in modalità dry run.
- Dopo aver verificato che la policy dell'organizzazione in modalità dry run funziona come previsto, imposta la policy attiva facendo clic su Imposta policy.
gcloud
- Per creare una policy dell'organizzazione con regole booleane, crea un file YAML della policy che faccia riferimento al vincolo:
-
PROJECT_ID: il progetto in cui vuoi applicare il vincolo. -
CONSTRAINT_NAME: il nome definito per il vincolo personalizzato. Ad esempio:custom.defaultNetworkConstraint. -
Per applicare la policy dell'organizzazione in modalità dry run, esegui il seguente comando con il flag
dryRunSpec: -
Dopo aver verificato che la policy dell'organizzazione in modalità dry run funziona come previsto, imposta la policy attiva con il comando
org-policies set-policye il flagspec:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true dryRunSpec: rules: - enforce: true
Sostituisci quanto segue:
gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpec
Sostituisci POLICY_PATH con il percorso completo del file YAML della policy dell'organizzazione. L'applicazione della policy può richiedere fino a 15 minuti.
gcloud org-policies set-policy POLICY_PATH \ --update-mask=spec
Sostituisci POLICY_PATH con il percorso completo del file YAML della policy dell'organizzazione. L'applicazione della policy può richiedere fino a 15 minuti.
Testa il vincolo personalizzato
Per testare l'esempio che limita le impostazioni di ingresso, implementa un connettore nel progetto con la rete impostata su default:
gcloud compute networks vpc-access connectors create org-policy-test \
--project=PROJECT_ID \
--region=REGION_ID \
--network=default
L'output è il seguente:
Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]
Esempi di policy dell'organizzazione personalizzate per casi d'uso comuni
La tabella seguente fornisce esempi di vincoli personalizzati che potresti trovare utili con i connettori di accesso VPC serverless:
| Descrizione | Sintassi del vincolo |
|---|---|
| Richiedi che i connettori di accesso VPC serverless possano utilizzare solo una rete specifica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.network == 'allowlisted-network'" actionType: ALLOW displayName: allowlistNetworks description: Require connectors to use a specific network. |
| Descrizione | Sintassi del vincolo |
| Richiedi che i connettori di accesso VPC serverless abbiano accesso solo a una subnet specifica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.subnet.name == 'allocated-subnet'" actionType: ALLOW displayName: restrictSubnetForProject description: This project is only allowed to use the subnet "allocated-subnet". |
Configura l'ambiente Cloud Run per utilizzare il VPC diretto anziché un connettore
Puoi attivare il tuo servizio Cloud Run per inviare il traffico in uscita direttamente a una rete VPC, consentendo l'accesso alle istanze VM di Compute Engine, alle istanze Memorystore e a qualsiasi altra risorsa con un indirizzo IP interno.
Configura il servizio in modo che utilizzi il VPC diretto
Il traffico in uscita VPC diretto consente al servizio Cloud Run di inviare il traffico a una rete VPC senza un connettore di accesso VPC serverless. I costi di rete vengono scalati a zero proprio come il servizio stesso. Puoi anche aggiungere tag di rete direttamente alle revisioni del servizio Cloud Run per una sicurezza di rete più granulare, ad esempio applicando regole firewall VPC.
Puoi configurare l'uscita VPC diretta con un servizio utilizzando la consoleGoogle Cloud , Google Cloud CLI, YAML o Terraform.
Console
Fai clic su Crea servizio se stai configurando un nuovo servizio di cui stai eseguendo il deployment. Se stai configurando ed eseguendo il deployment di un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment della nuova revisione.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio in base alle tue esigenze, poi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.
Fai clic sulla scheda Networking.
Fai clic su Connettiti a un VPC per il traffico in uscita.
Fai clic su Invia il traffico direttamente a un VPC.
Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.
Nel campo Subnet, seleziona la subnet da cui il servizio riceve gli indirizzi IP. Puoi eseguire il deployment di più servizi nella stessa subnet.
(Facoltativo) Inserisci i nomi dei tag di rete che vuoi associare al tuo servizio o ai tuoi servizi. I tag di rete sono specificati a livello di revisione. Ogni revisione del servizio può avere tag di rete diversi, ad esempio
network-tag-2.Per Routing del traffico, seleziona una delle seguenti opzioni:
- Instrada al VPC solo richieste a IP privati per inviare solo traffico agli indirizzi interni tramite la rete VPC.
- Instrada al VPC tutto il traffico per inviare tutto il traffico in uscita attraverso la rete VPC.
Fai clic su Crea o Esegui il deployment.
Per verificare che il servizio si trovi sulla rete VPC, fai clic sul servizio, quindi sulla scheda Networking. La rete e la subnet sono elencate nella scheda VPC.
Ora puoi inviare richieste dal tuo servizio Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
gcloud
Per eseguire il deployment di un servizio Cloud Run senza un connettore da Google Cloud CLI:
Aggiorna i componenti di
gcloudall'ultima versione:gcloud components update
Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:
gcloud services enable compute.googleapis.com
Esegui il deployment del servizio Cloud Run con questo comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Sostituisci:
- SERVICE_NAME con il nome del tuo servizio Cloud Run.
- IMAGE_URL: un riferimento all'immagine container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG - (Facoltativo) NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- (Facoltativo)
SUBNET con il nome della subnet. La subnet deve essere
/26o superiore. L'uscita VPC diretta supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Classe E. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet, ma la subnet non può essere condivisa da connettori esistenti. - (Facoltativo) NETWORK_TAG_NAMES con i nomi separati da virgole
dei tag di rete
che vuoi associare a un servizio. Per i servizi, i tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere
tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: Invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- REGION con una regione per il tuo servizio.
Per verificare che il servizio si trovi sulla rete VPC, esegui il seguente comando:
gcloud run services describe SERVICE_NAME \ --region=REGION
Sostituisci:
SERVICE_NAMEcon il nome del tuo servizio.REGIONcon la regione del servizio che hai specificato nel passaggio precedente.
L'output dovrebbe contenere il nome della rete, della subnet e dell'impostazione di uscita, ad esempio:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Ora puoi inviare richieste dal tuo servizio Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna i seguenti attributi:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Sostituisci:
- SERVICE_NAME con il nome del tuo servizio Cloud Run. I nomi dei servizi devono contenere al massimo 49 caratteri e devono essere univoci per regione e progetto.
- REGION con la regione del tuo servizio Cloud Run, che deve corrispondere alla regione della tua subnet.
- (Facoltativo) NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- (Facoltativo)
SUBNET con il nome della subnet. La subnet deve essere
/26o superiore. L'uscita VPC diretta supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Classe E. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet, ma la subnet non può essere condivisa da connettori esistenti. - (Facoltativo) NETWORK_TAG_NAMES con i nomi dei
tag di rete
che vuoi associare a un servizio. Per i servizi, i tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere
tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: Invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- IMAGE con l'URL dell'immagine container del servizio.
Puoi anche specificare una configurazione più dettagliata, ad esempio variabili di ambiente o limiti di memoria.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue al tuo file
main.tf:
Se vuoi consentire l'accesso non autenticato al servizio, rendilo pubblico.
Configura il job per utilizzare il VPC diretto
L'uscita VPC diretta consente al job Cloud Run di inviare traffico a una rete VPC senza un connettore di accesso VPC serverless. Puoi anche aggiungere tag di rete direttamente ai job Cloud Run per una sicurezza di rete più granulare, ad esempio applicando regole firewall VPC.
Puoi configurare l'uscita VPC diretta con un job utilizzando la consoleGoogle Cloud , Google Cloud CLI o YAML.
Console
Se stai configurando un nuovo job, fai clic sulla scheda Job e compila la pagina delle impostazioni iniziali del job in base alle tue esigenze. Se stai configurando un job esistente, fai clic sul job, quindi su Modifica.
Fai clic su Container, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Fai clic sulla scheda Connessioni.
Fai clic su Connettiti a un VPC per il traffico in uscita.
Fai clic su Invia il traffico direttamente a un VPC.
Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.
Nel campo Subnet, seleziona la subnet da cui il job riceve gli indirizzi IP. Puoi eseguire più job sulla stessa subnet.
Per Routing del traffico, seleziona una delle seguenti opzioni:
- Instrada al VPC solo richieste a IP privati per inviare solo traffico agli indirizzi interni tramite la rete VPC.
- Instrada al VPC tutto il traffico per inviare tutto il traffico in uscita attraverso la rete VPC.
(Facoltativo) Inserisci i nomi dei tag di rete che vuoi associare al tuo servizio o ai tuoi servizi. I tag di rete sono specificati a livello di revisione. Ogni revisione del servizio può avere tag di rete diversi, ad esempio
network-tag-2.(Facoltativo) Inserisci i nomi dei tag di rete che vuoi associare al tuo job o ai tuoi job. Per i job, i tag di rete vengono specificati a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio
network-tag-2.Fai clic su Crea o Aggiorna.
Per verificare che il job si trovi nella rete VPC, fai clic sul job, quindi fai clic sulla scheda Configurazione. La rete e la subnet sono elencate nella scheda VPC.
Ora puoi eseguire il job Cloud Run e inviare richieste dal job a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
gcloud
Per creare un job Cloud Run senza un connettore da Google Cloud CLI:
Aggiorna i componenti di
gcloudall'ultima versione:gcloud components update
Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:
gcloud services enable compute.googleapis.com
Crea un job Cloud Run con il seguente comando:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Sostituisci:
- JOB_NAME con il nome del tuo job Cloud Run.
- IMAGE_URL: un riferimento all'immagine container, ad esempio
us-docker.pkg.dev/cloudrun/container/job:latest - (Facoltativo) NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- (Facoltativo)
SUBNET con il nome della subnet. La subnet deve essere
/26o superiore. L'uscita VPC diretta supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Classe E. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet, ma la subnet non può essere condivisa da connettori esistenti. - (Facoltativo) NETWORK_TAG_NAMES con i nomi dei
tag di rete
che vuoi associare a un job. Per i job, i tag di rete vengono specificati
a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: Invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- REGION con una regione per il job.
Per verificare che il job si trovi nella tua rete VPC, esegui questo comando:
gcloud run jobs describe JOB_NAME \ --region=REGION
Sostituisci:
JOB_NAMEcon il nome del job.REGIONcon la regione del job specificata nel passaggio precedente.
L'output dovrebbe contenere il nome della rete e della subnet, ad esempio:
VPC network: Network: default Subnet: default
Ora puoi eseguire il job Cloud Run e inviare richieste dal job a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
YAML
Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Aggiorna i seguenti attributi:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Sostituisci:
- JOB_NAME con il nome del tuo job Cloud Run. I nomi dei job devono contenere al massimo 49 caratteri e devono essere univoci per regione e progetto.
- REGION con la regione del job Cloud Run, che deve corrispondere alla regione della subnet.
- (Facoltativo) NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- (Facoltativo)
SUBNET con il nome della subnet. La subnet deve essere
/26o superiore. L'uscita VPC diretta supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Classe E. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet, ma la subnet non può essere condivisa da connettori esistenti. - (Facoltativo) NETWORK_TAG_NAMES con i nomi dei
tag di rete
che vuoi associare a un job. Per i job, i tag di rete vengono specificati
a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: Invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- IMAGE con l'URL dell'immagine container del job.
Crea o aggiorna il job utilizzando il seguente comando:
gcloud run jobs replace job.yaml
Risoluzione dei problemi
Autorizzazioni service account
Per eseguire operazioni nel tuo progetto Google Cloud , l'accesso VPC serverless utilizza il service account Serverless VPC Access Service Agent. L'indirizzo email di questo service account ha il seguente formato:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
Per impostazione predefinita, questo service account dispone del ruolo Serverless VPC Access Service Agent (roles/vpcaccess.serviceAgent). Le operazioni di accesso VPC serverless potrebbero non riuscire se modifichi le autorizzazioni di questo account.
Scarse prestazioni di rete o utilizzo elevato della CPU quando inattivo
L'utilizzo di un singolo connettore per migliaia di istanze può causare un peggioramento delle prestazioni e un utilizzo elevato della CPU inattiva. Per risolvere il problema, distribuisci i servizi tra più connettori.
Problemi con la MTU personalizzata
Se riscontri problemi con una MTU personalizzata, assicurati di utilizzare l'impostazione MTU predefinita per Cloud Run.
Errori
Errore Il service account richiede il ruolo Service Agent
Se utilizzi il vincolo della policy dell'organizzazione Limita utilizzo servizi 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 la policy 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 a procedere nel seguente modo:
- Specifica un intervallo IP interno RFC 1918 che non si sovrapponga a nessuna prenotazione di indirizzi IP esistente nella rete VPC.
- Concedi al tuo progetto l'autorizzazione per utilizzare le immagini VM di Compute Engine dal progetto con ID
serverless-vpc-access-images. Per saperne di più su come aggiornare la policy dell'organizzazione di conseguenza, consulta Imposta limitazioni di accesso alle immagini.
Impossibile accedere alle risorse
Se hai specificato un connettore, ma non riesci comunque ad accedere alle risorse nella tua rete VPC, assicurati che non siano presenti regole firewall nella tua rete VPC con una priorità inferiore a 1000 che negano l'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 l'entrata dalla tua infrastruttura serverless al connettore.
Errore di connessione rifiutata
Se ricevi errori connection refused o connection timeout che peggiorano le prestazioni della rete, le tue connessioni potrebbero aumentare senza limiti nelle chiamate della 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, vedi Gestisci le connessioni ai database.
Errore di 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 relativa soluzione, consulta Errore di risorsa non trovata nella documentazione sulle regole firewall VPC.
Passaggi successivi
- Monitora l'attività di amministrazione 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 di IAM per un elenco delle autorizzazioni associate a ogni ruolo.
- Scopri come connetterti a Memorystore da: