Connessione a una rete VPC

Questa pagina mostra come utilizzare l'accesso VPC serverless per connettere Cloud Functions direttamente alla tua rete VPC, consentendo l'accesso alle istanze VM di Compute Engine, a quelle Memorystore e a qualsiasi altra risorsa con un indirizzo IP interno.

Prima di iniziare

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

  1. Vai alla pagina di riepilogo dell'accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Fai clic su Crea connettore.

  3. 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.

  4. 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 o europe-west, utilizza us-central1 o europe-west1.

  5. Nel campo Rete, seleziona la rete VPC a cui collegare il connettore.

  6. 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 subnet purpose sia PRIVATE 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.

  7. (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à.

    1. 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 e 10.
    2. 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.
  8. Fai clic su Crea.

  9. Quando il connettore è pronto per essere utilizzato, accanto al nome del connettore viene visualizzato un segno di spunta verde.

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    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.

  2. Aggiorna i componenti di gcloud alla versione più recente:

    gcloud components update
    
  3. Assicurati che l'API Serverless VPC Access sia abilitata per il tuo progetto:

    gcloud services enable vpcaccess.googleapis.com
    
  4. 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 regione us-central o europe-west, utilizza us-central1 o europe-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 sia PRIVATE 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 tra 2 e 9. 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 tra 3 e 10. 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 o e2-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.

  5. 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 regione us-central o europe-west, utilizza us-central1 o europe-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.

  6. 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.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Puoi utilizzare i moduli Terraform per creare una rete e una subnet VPC, quindi creare il connettore.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Configura la funzione per la connessione a una rete VPC

Devi configurare ciascuna funzione in modo da utilizzare un connettore di accesso VPC serverless per connetterti alla tua rete VPC al fine di inviare il traffico in uscita. Puoi configurare una funzione in modo da utilizzare un connettore dalla console Google Cloud o da Google Cloud CLI:

Console

  1. Vai a Cloud Functions

  2. Fai clic su Crea funzione se stai configurando una nuova funzione. Se stai configurando una funzione esistente, fai clic sulla funzione e poi su Modifica.

  3. Se stai configurando una nuova funzione, compila la pagina iniziale delle impostazioni della funzione come preferisci, quindi fai clic su Runtime, build... per espandere la pagina di configurazione della funzione.

  4. Fai clic sulla scheda Connessioni e in Impostazioni traffico in uscita, scegli una delle seguenti opzioni dal menu Rete VPC:

    • Per scollegare la funzione da una rete VPC, seleziona Nessuna.
    • Per utilizzare un connettore esistente, selezionalo dall'elenco a discesa o seleziona Personalizzato per utilizzare un connettore esistente non mostrato nell'elenco a discesa.
    • Per creare un nuovo connettore, seleziona Aggiungi nuovo connettore VPC. (Anteprima)

    Per maggiori dettagli sulla creazione di un connettore, consulta Creare un connettore di accesso VPC serverless.

  5. Tocca Avanti.

gcloud

Usa il comando gcloud functions deploy per 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.
  • FLAGS... si riferisce ad altri flag che passi durante il deployment delle funzioni.

Utilizza il flag --clear-vpc-connector per scollegare la funzione da una rete VPC:

gcloud functions deploy FUNCTION_NAME \
--clear-vpc-connector \
FLAGS...

Per un maggiore controllo sulle richieste instradate attraverso il connettore, consulta Impostazioni in uscita.

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.

  1. Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):

  2. 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 o udp. 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 flag allow.

      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 e sctp.

    • 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.

    • 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.

  3. Consenti il traffico del connettore verso la risorsa che deve ricevere il traffico del connettore.

    Utilizza i flag allow e target-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 o udp. 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 flag allow.

    • 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.

    • 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.

  1. Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):

  2. 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 o udp. 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 flag allow.

      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 e sctp.

    • 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.

  3. Consenti il traffico del connettore verso la risorsa che deve ricevere il traffico del connettore.

    Utilizza i flag allow e target-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 o udp. 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 flag allow.

    • 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.

  1. Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti ruoli Identity and Access Management (IAM):

  2. 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 o udp. 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 flag allow.

      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 e sctp.

    • 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.

  3. Consenti il traffico in uscita quando la destinazione rientra nell'intervallo CIDR a cui vuoi che acceda il connettore.

    Utilizza i flag allow e destination-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 o udp. 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 flag allow.

    • 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

Scollegare una funzione da una rete VPC

Puoi scollegare una funzione dalla rete VPC utilizzando la console Google Cloud o Google Cloud CLI:

Console

  1. Vai alla pagina Panoramica di Cloud Functions nella console Google Cloud:

    Vai a Cloud Functions

  2. Fai clic su una funzione esistente per passare alla relativa pagina dei dettagli, poi fai clic su Modifica.

  3. Espandi le impostazioni avanzate facendo clic su Runtime, build....

  4. Nella scheda Connessioni in Impostazioni del traffico in uscita, inserisci il nome del connettore nel campo Connettore VPC oppure cancella il contenuto del campo per disconnettere la funzione da una rete VPC.

gcloud

Utilizza il flag --clear-vpc-connector per scollegare la funzione dalla rete VPC:

gcloud functions deploy FUNCTION_NAME \
--clear-vpc-connector \
FLAGS...

dove:

  • FUNCTION_NAME è il nome della funzione.
  • CONNECTOR_NAME è il nome del connettore.
  • FLAGS... si riferisce ad altri flag che passi durante il deployment delle funzioni.

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

  1. Vai alla pagina di riepilogo dell'accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Seleziona il connettore da modificare e fai clic su Modifica.

  3. 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

  1. Nella console Google Cloud, attiva Cloud Shell.

    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.

  2. 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 connettore
    • REGION: il nome della regione del connettore
    • MACHINE_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:

  1. Crea un nuovo connettore con i tuoi valori preferiti.
  2. Aggiorna il servizio o la funzione per utilizzare il nuovo connettore.
  3. 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

  1. Vai alla pagina di riepilogo dell'accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Seleziona il connettore da modificare e fai clic su Modifica.

  3. 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.

  4. 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

  1. Nella console Google Cloud, attiva Cloud Shell.

    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.

  2. 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 connettore
  • REGION: il nome della regione del connettore
  • MIN_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 a max_instances. Ad esempio, se max_instances è 8, il valore massimo possibile per questo campo è 7. Se il connettore utilizza il valore max-instances predefinito di 10, il valore massimo possibile per questo campo è 9. Per trovare il valore di max-instances, consulta Trovare i valori attuali degli attributi.
  • 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.

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=PROJECT
Sostituisci quanto segue:

  • CONNECTOR_NAME: il nome del connettore
  • REGION: il nome della regione del connettore
  • PROJECT: 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:

  1. Vai alla pagina di riepilogo dell'accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Fai clic sul nome del connettore da monitorare.

  3. Seleziona il numero di giorni da visualizzare compreso tra 1 e 90.

  4. Nel grafico Velocità effettiva, passa il mouse sopra il grafico per visualizzare la velocità effettiva recente del connettore.

  5. Nel grafico Numero di istanze, passa il mouse sopra il grafico per visualizzare il numero di istanze utilizzate di recente dal connettore.

  6. 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

  1. Vai alla pagina di riepilogo dell'accesso VPC serverless nella console Google Cloud:

    Vai all'accesso VPC serverless

  2. Seleziona il connettore da eliminare.

  3. Fai clic su Elimina.

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    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.

  2. 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.

Autorizzazione vpcaccess.connectors.use necessaria mancante per l'account di servizio...

Innanzitutto, assicurati che il ruolo roles/vpcaccess.user sia assegnato all'account di servizio.

Se continui a riscontrare problemi di autorizzazione con il connettore VPC, verifica se si tratta effettivamente di un VPC condiviso. In questo caso, è necessaria una configurazione aggiuntiva sul progetto host.

Passaggi successivi