Configurazione dell'accesso VPC serverless

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

Prima di iniziare

Se utilizzi una rete VPC condivisa, consulta la documentazione che riguarda nello specifico la configurazione dell'accesso VPC serverless per il tuo prodotto.

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, devi utilizzare un connettore di accesso VPC serverless.

Puoi creare un connettore utilizzando Google Cloud Console, l'interfaccia a riga di comando di Google Cloud o Terraform:

Console

  1. Assicurati che l'API Serverless VPC Access sia abilitata per il tuo progetto.

    Abilita API

  2. Vai alla pagina della panoramica dell'accesso VPC serverless.

    Vai all'accesso VPC serverless

  3. Fai clic su Crea connettore.

  4. Nel campo Nome, inserisci un nome per il connettore. Questo comando deve essere conforme alla convenzione di denominazione di Compute Engine, con la limitazione aggiuntiva che deve essere inferiore a 21 caratteri con trattini (-) che contano come due caratteri.

  5. Nel campo Regione, seleziona un'area geografica per il connettore. Deve corrispondere all'area geografica del tuo servizio serverless.

    Se il servizio si trova nell'area geografica us-central o europe-west, utilizza us-central1 o europe-west1.

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

  7. Fai clic sul menu a discesa Subnet:

    • Se utilizzi la tua subnet (obbligatoria per VPC condiviso), seleziona una subnet /28 inutilizzata.

      • Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzate da altre risorse, ad esempio VM, Private Service Connect o bilanciamento del carico HTTP(S) interno.
      • Per verificare che la subnet non sia utilizzata per Private Service Connect o il bilanciamento del carico HTTP(S) interno, verifica che la subnet purpose sia PRIVATE eseguendo il comando seguente nell'interfaccia a riga di comando gcloud:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Sostituisci:
        • SUBNET_NAME: il nome della subnet
    • Se non utilizzi la rete VPC condivisa e preferisci che il connettore crei una subnet anziché crearne una in modo esplicito, seleziona Intervallo IP personalizzato dal menu a discesa e poi, nel campo Intervallo IP, inserisci il primo indirizzo in un intervallo IP interno CIDR /28non prenotato. Questo intervallo IP non deve sovrapporsi ad alcuna prenotazione di indirizzi IP esistente nella tua rete VPC. Ad esempio, 10.8.0.0 (/28) funzionerà con la maggior parte dei nuovi progetti.

  8. (Facoltativo) Per impostare le opzioni di scalabilità per un ulteriore controllo 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 o utilizza i valori predefiniti, che sono 2 (min) e 10 (max). Il connettore fa lo scale out al valore massimo specificato se l'utilizzo del traffico lo richiede, ma il connettore non esegue il scale down quando il traffico diminuisce. Devi utilizzare valori compresi tra 2 e 10.
    2. Nel menu a discesa Tipo di istanza, scegli il tipo di macchina da utilizzare per il connettore o utilizza l'impostazione predefinita e2-micro. Nota la barra laterale dei costi a destra quando scegli il tipo di istanza, che mostra la larghezza di banda e le stime dei costi.
  9. Fai clic su Crea.

  10. Quando è pronto per l'utilizzo, accanto al nome del connettore viene visualizzato un segno di spunta verde.

gcloud

  1. Aggiorna i componenti di gcloud all'ultima versione:

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

    gcloud services enable vpcaccess.googleapis.com
    
  3. Se utilizzi una subnet personalizzata (obbligatoria per la rete VPC condivisa), crea un connettore con il 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. Questo comando deve essere conforme alla convenzione di denominazione di Compute Engine, con la limitazione aggiuntiva che deve essere inferiore a 21 caratteri con trattini (-) che contano come due caratteri.
    • REGION: un'area geografica per il connettore; deve corrispondere all'area geografica del tuo servizio serverless. Se il tuo servizio si trova nell'area geografica us-central o europe-west, utilizza us-central1 o europe-west1.
    • SUBNET: il nome di una subnet /28 non utilizzata.
      • Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzate da altre risorse, ad esempio VM, Private Service Connect o bilanciamento del carico HTTP(S) interno.
      • Per verificare che la subnet non sia utilizzata per Private Service Connect o il bilanciamento del carico HTTP(S) interno, verifica che la subnet purpose sia PRIVATE eseguendo il comando seguente nell'interfaccia a riga di comando gcloud:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Sostituisci:
        • SUBNET_NAME: il nome della subnet
    • HOST_PROJECT_ID: ID del progetto host; fornisci questo solo se utilizzi il VPC condiviso
    • MIN: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 2 e 10. Il valore predefinito è 2.
    • MAX: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 2 e 10. Il valore predefinito è 10. Se il traffico lo richiede, il connettore esegue lo scale out a [MAX] istanze, ma non lo ridimensiona.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4

      Tipo di macchina Intervallo velocità effettiva stimata in Mbps Prezzo
      (istanza del connettore più costi del traffico di rete in uscita)
      f1-micro 100-500 Prezzi f1-micro
      e2-micro 200-1000 Prezzi e2-micro
      e2-standard-4 3200-16000 Prezzo standard e2

    Ad esempio, se imposti MACHINE_TYPE su f1-micro, la velocità effettiva stimata per il connettore sarà di 100 Mbps con valore predefinito di MIN e di 500 Mbps con l'impostazione predefinita di MAX.

    Per maggiori dettagli e argomenti facoltativi, consulta il riferimento gcloud.

  4. Se non utilizzi la rete VPC condivisa e vuoi fornire un intervallo IP personalizzato invece di utilizzare una subnet, crea un connettore con il comando:

    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. Deve essere conforme alla convenzione di denominazione di Compute Engine, con la limitazione aggiuntiva che prevede che contenga meno di 21 caratteri e i trattini (-) siano conteggiati come due caratteri.
    • VPC_NETWORK: la rete VPC a cui collegare il connettore
    • REGION: un'area geografica per il connettore. Deve corrispondere all'area geografica del tuo servizio serverless. Se il tuo servizio si trova nell'area geografica us-central o europe-west, utilizza us-central1 o europe-west1.
    • IP_RANGE: è necessaria una rete IP interna non prenotata ed è presente #&39;/28' spazio non allocato. Il valore fornito è la rete nella notazione CIDR (10.8.0.0/28). Questo intervallo IP non deve sovrapporsi alle prenotazioni di indirizzi IP esistenti nella tua rete VPC. Ad esempio, 10.8.0.0/28 è compatibile con la maggior parte dei nuovi progetti.

    Per maggiori dettagli e argomenti facoltativi come i controlli di velocità effettiva, consulta il riferimento gcloud.

  5. Verifica che il connettore sia in 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; è il nome da te specificato nel passaggio precedente
    • REGION: l'area geografica del tuo connettore, ovvero quella specificata nel passaggio precedente

    L'output deve contenere la riga state: READY.

Terraform

Puoi usare 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 VPC e una subnet, quindi creare il connettore.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 3.3.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"
  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
  ]
}

Configurare l'ambiente serverless per utilizzare un connettore

Dopo aver creato un connettore di accesso VPC serverless, configura l'ambiente serverless in modo che utilizzi il connettore seguendo le istruzioni per l'ambiente serverless:

Configurare Cloud Run per l'utilizzo di 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 Cloud Console, l'interfaccia a riga di comando di Google Cloud, un file YAML o una risorsa Terraform.

Console

  1. Vai a Cloud Run

  2. Fai clic su Create Service (Crea servizio) se stai configurando un nuovo servizio in cui stai eseguendo il deployment. Se stai configurando un servizio esistente, fai clic sul servizio e poi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina delle impostazioni del servizio iniziale come richiesto, quindi fai clic su Avanti > Container, Variabili &Secret, Connessioni, Sicurezza per accedere alla pagina di configurazione del servizio.

  4. Fai clic sulla scheda Connessioni.

    immagine

  5. Nel campo Connettore VPC, seleziona un connettore da utilizzare o seleziona Nessuno per disconnettere il servizio da una rete VPC.

  6. Fai clic su Crea o Esegui il deployment.

gcloud

Per specificare un connettore durante il deployment, utilizza il flag --vpc-connector:

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
  • Sostituisci SERVICE con il nome del servizio.
  • Sostituisci IMAGE_URL.
  • Sostituisci CONNECTOR_NAME con il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completamente specificato, ad esempio:
    projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
    dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è l'area geografica del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.

Per collegare, aggiornare o rimuovere un connettore per un servizio esistente, utilizza il comando gcloud run services update con uno dei seguenti flag, in base alle tue esigenze:

Ad esempio, per collegare o aggiornare un connettore:

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
  • Sostituisci SERVICE con il nome del servizio.
  • Sostituisci CONNECTOR_NAME con il nome del connettore.

YAML

Puoi scaricare e visualizzare la configurazione del servizio esistente utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiungi o aggiorna l'attributo run.googleapis.com/vpc-access-connector nell'attributo annotations sotto l'attributo spec di 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 SERVICE con il nome del tuo servizio Cloud Run.
    • Sostituisci CONNECTOR_NAME con il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completamente specificato, ad esempio:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è l'area geografica del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud beta run services replace service.yaml

Terraform

Puoi utilizzare una risorsa Terraform per creare un servizio e configurarlo per l'utilizzo del connettore.

# Cloud Run service
resource "google_cloud_run_service" "gcr_service" {
  name     = "mygcrservice"
  provider = google-beta
  location = "us-west1"

  template {
    spec {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
        resources {
          limits = {
            cpu = "1000m"
            memory = "512M"
          }
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    metadata {
      annotations = {
        # Limit scale up to prevent any cost blow outs!
        "autoscaling.knative.dev/maxScale" = "5"
        # Use the VPC Connector
        "run.googleapis.com/vpc-access-connector" = google_vpc_access_connector.connector.name
        # all egress from the service should go through the VPC Connector
        "run.googleapis.com/vpc-access-egress" = "all-traffic"
      }
    }
  }
  autogenerate_revision_name = true
}

Configurare Cloud Functions per l'utilizzo di un connettore

Puoi configurare una funzione per utilizzare un connettore da Google Cloud Console o dall'interfaccia a riga di comando di Google Cloud:

Console

  1. Vai alla pagina della panoramica di Cloud Functions in Cloud Console:

    Vai a Cloud Functions

  2. Fai clic su Crea funzione. In alternativa, fai clic su una funzione esistente per accedere alla relativa pagina dei dettagli, quindi fai clic su Modifica.

  3. Espandi le impostazioni avanzate facendo clic su IMPOSTAZIONI IN CORSO, CREAZIONE E CONNESSIONE.

  4. Nella scheda Connections (Connessioni), inserisci il nome del tuo connettore nel campo Connettore VPC.

gcloud

Utilizza il comando gcloud functions deploy per eseguire il deployment della funzione e specificare il flag --vpc-connector:

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

dove:

  • FUNCTION_NAME è il nome della tua funzione.
  • CONNECTOR_NAME è il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completamente specificato, ad esempio:
    projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
    dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è l'area geografica del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.
  • FLAGS... si riferisce ad altri flag trasmessi durante il deployment di funzioni.

Per un maggiore controllo sulle richieste condotte tramite il connettore, consulta Impostazioni del traffico in uscita.

Configurare App Engine per l'utilizzo di un connettore

Python 2

  1. Interrompi l'uso del servizio di recupero URL di App Engine.

    Per impostazione predefinita, tutte le richieste vengono instradate tramite il servizio di recupero URL. Questo causa l'esito negativo delle richieste alla tua rete VPC. Per disattivare questa impostazione predefinita, consulta la sezione Disattivare il recupero dell'URL dalla gestione di tutte le richieste in uscita.

    Puoi comunque utilizzare direttamente la libreria urlfetch per le singole richieste, ma è sconsigliato.

  2. Aggiungi il campo Accesso VPC serverless al tuo file app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Cloud. Se il connettore si trova nel progetto host di un VPC condiviso, questo deve essere l'ID del progetto host.
    • REGION con l'area geografica in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del tuo connettore.
  3. Esegui il deployment del servizio:

    gcloud app deploy

    Dopo aver eseguito il deployment, il servizio è in grado di inviare richieste agli indirizzi IP interni per poter accedere alle risorse della tua rete VPC.

Java 8

  1. Interrompi l'uso del servizio di recupero URL di App Engine URLFetchService.

  2. Aggiungi l'elemento Serverless VPC Access al tuo file appengine-web.xml del servizio:

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

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Cloud. Se il connettore si trova nel progetto host di un VPC condiviso, questo deve essere l'ID del progetto host.
    • REGION con l'area geografica in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del tuo connettore.
  3. Esegui il deployment del servizio:

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

    Dopo aver eseguito il deployment, il servizio è in grado di inviare richieste agli indirizzi IP interni per poter accedere alle risorse della tua rete VPC.

Go 1.11

  1. Interrompi l'uso del servizio di recupero URL di App Engine.

    L'accesso VPC serverless non supporta il recupero URL e le richieste effettuate utilizzando questo metodo ignoreranno le impostazioni di accesso VPC serverless. Crea connessioni in uscita con socket.

  2. Aggiungi il campo Accesso VPC serverless al tuo file app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Cloud
    • REGION con l'area geografica in cui si trova il connettore
    • CONNECTOR_NAME con il nome del connettore
  3. Esegui il deployment del servizio:

    gcloud app deploy

    Dopo aver eseguito il deployment, il servizio è in grado di inviare richieste agli indirizzi IP interni per poter accedere alle risorse della tua rete VPC.

Tutti gli altri runtime

  1. Aggiungi il campo Accesso VPC serverless al tuo file app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Cloud. Se il connettore si trova nel progetto host di un VPC condiviso, questo deve essere l'ID del progetto host.
    • REGION con l'area geografica in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del tuo connettore.
  2. Esegui il deployment del servizio:

    gcloud app deploy

    Dopo aver eseguito il deployment, il servizio è in grado di inviare richieste agli indirizzi IP interni per poter accedere alle risorse della tua rete VPC.

Limita l'accesso alle risorse VPC

Puoi limitare l'accesso del connettore alla tua rete VPC utilizzando le regole firewall.

Quando ti connetti a una rete VPC condivisa con connettori nei progetti di servizio, le regole firewall non vengono create automaticamente. Un utente con il ruolo Amministratore di rete nel progetto host imposta le regole firewall quando configura il progetto host.

Quando ti connetti a una rete VPC autonoma o a una rete VPC condivisa con il connettore nel progetto host, viene creata automaticamente una regola firewall implicita con priorità 1000 nella rete VPC per consentire il traffico in entrata dalla subnet del connettore o dall'intervallo IP personalizzato a tutte le destinazioni nella rete VPC. La regola firewall implicita non è visibile in Google Cloud Console ed esiste solo finché il connettore associato esiste. Se non vuoi che il connettore raggiunga tutte le destinazioni nella tua rete VPC, puoi limitarne l'accesso.

Puoi limitare l'accesso al connettore creando regole in entrata nella risorsa di destinazione o creando regole in uscita sul connettore VPC.

Limita accesso con regole di traffico in entrata

Scegli i tag di rete o gli intervalli CIDR per controllare il traffico in entrata verso la tua 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.

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

  2. Nega il traffico dei connettori nella rete VPC.

    Crea una regola firewall in entrata con priorità inferiore a 1000 nella tua rete VPC per rifiutare il traffico in entrata dal tag di rete del connettore. Questa operazione sostituisce la regola firewall implicita creata dall'accesso VPC serverless sulla tua rete VPC per impostazione predefinita.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --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.
    • VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore universale se vuoi limitare l'accesso per tutti i connettori (inclusi i connettori eseguiti in futuro) o il tag di rete univoco se vuoi limitare l'accesso a 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 che vuoi limitare
        • CONNECTOR_NAME: il nome del connettore che vuoi limitare

      Per ulteriori informazioni sui tag di rete del connettore, consulta la sezione Tag di rete.

    • VPC_NETWORK: il nome della tua rete VPC

    • PRIORITY: un numero intero compreso tra 1 e 999 inclusi. Ad esempio 990.

  3. Consenti il traffico del connettore alla risorsa che deve ricevere il traffico.

    Utilizza i flag allow e target-tags per creare una regola firewall in entrata che abbia come target la risorsa nella tua rete VPC a cui vuoi accedere il connettore VPC. Imposta la priorità per questa regola su un valore inferiore a quello della regola utilizzata nel passaggio precedente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --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.
    • PROTOCOLS: i protocolli che vuoi consentire dal tuo connettore VPC. Questi valori possono essere uno o più dei valori stringa sensibili alle maiuscole tcp, udp, icmp, esp, ah, sctp o qualsiasi numero di protocollo IP. Per i protocolli basati su porta (tcp, udp e sctp) è possibile specificare un elenco di porte o intervalli di porte di destinazione a cui si applica la regola. Per ulteriori informazioni, consulta la documentazione per il flag allow.
    • VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore universale se vuoi limitare l'accesso per tutti i connettori (inclusi i connettori eseguiti in futuro) o il tag di rete univoco se vuoi limitare l'accesso a 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 che vuoi limitare
        • CONNECTOR_NAME: il nome del connettore che vuoi limitare

      Per ulteriori informazioni sui tag di rete del connettore, consulta la sezione Tag di rete.

    • VPC_NETWORK: il nome della tua rete VPC

    • RESOURCE_TAG: il tag di rete per la risorsa VPC a cui vuoi accedere al connettore VPC

    • PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità per la regola che hai creato nel passaggio precedente su 990, prova 980.

Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione delle 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 tua rete VPC in base all'intervallo CIDR del connettore.

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

  2. Nega il traffico dei connettori nella rete VPC.

    Crea una regola firewall in entrata con priorità inferiore a 1000 nella tua 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 tua rete VPC per impostazione predefinita.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --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.
    • VPC_CONNECTOR_CIDR_RANGE: l'intervallo CIDR per il connettore di cui limiti l'accesso
    • VPC_NETWORK: il nome della tua rete VPC
    • PRIORITY: un numero intero compreso tra 1 e 999. Ad esempio 990.
  3. Consenti il traffico del connettore alla risorsa che deve ricevere il traffico.

    Utilizza i flag allow e target-tags per creare una regola firewall in entrata che abbia come target la risorsa nella tua rete VPC a cui vuoi accedere il connettore VPC. Imposta la priorità per questa regola su un valore inferiore a quello della regola utilizzata nel passaggio precedente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --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.
    • PROTOCOLS: i protocolli che vuoi consentire dal tuo connettore VPC. Questi valori possono essere uno o più dei valori stringa sensibili alle maiuscole tcp, udp, icmp, esp, ah, sctp o qualsiasi numero di protocollo IP. Per i protocolli basati su porta (tcp, udp e sctp) è possibile specificare un elenco di porte o intervalli di porte di destinazione a cui si applica la regola. Per ulteriori informazioni, consulta la documentazione per il 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 accedere al connettore VPC
    • PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità per la regola che hai creato nel passaggio precedente su 990, prova 980.

Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione delle regole firewall, consulta la documentazione per gcloud compute firewall-rules create.

Limitare l'accesso utilizzando le regole di uscita

I passaggi seguenti mostrano come creare regole di uscita per limitare l'accesso ai connettori.

  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. Nega il traffico in uscita dal connettore.

    Crea una regola firewall in uscita sul connettore di accesso VPC serverless per impedire l'invio di traffico in uscita.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --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.
    • 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. Oppure, 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 1 e 999. Ad esempio 990.
  3. Consenti il traffico in uscita quando la destinazione è nell'intervallo CIDR a cui vuoi accedere il connettore.

    Utilizza i flag allow e destination-ranges per 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 rete VPC a cui vuoi consentire l'accesso al connettore. Imposta la priorità di questa regola su un valore inferiore a quello della regola del passaggio precedente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --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.
    • PROTOCOLS: i protocolli che vuoi consentire dal tuo connettore VPC. Questi valori possono essere uno o più dei valori stringa sensibili alle maiuscole tcp, udp, icmp, esp, ah, sctp o qualsiasi numero di protocollo IP. Per i protocolli basati su porta (tcp, udp e sctp) è possibile specificare un elenco di porte o intervalli di porte di destinazione a cui si applica la regola. Per ulteriori informazioni, consulta la documentazione per il 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. Oppure, il tag di rete del connettore VPC univoco se vuoi controllare un connettore specifico. Se nel passaggio precedente hai utilizzato il tag di rete univoco, usa questo tag.
    • PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se imposti la priorità per la regola che hai creato nel passaggio precedente su 990, prova 980.

Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione delle regole firewall, consulta la documentazione per gcloud compute firewall-rules create.

Elimina un connettore

Prima di eliminare un connettore, assicurati che non ci siano ancora servizi collegati.

Per gli utenti di 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 servizi che utilizzano un determinato connettore.

Per eliminare un connettore, utilizza Cloud Console o l'interfaccia a riga di comando di Google Cloud:

Console

  1. Vai alla pagina Panoramica dell'accesso VPC serverless in Cloud Console:

    Vai all'accesso VPC serverless

  2. Seleziona il connettore da eliminare.

  3. Fai clic su Elimina.

gcloud

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 che vuoi eliminare
  • REGION con l'area geografica in cui si trova il connettore

Risolvere i problemi

Autorizzazioni account di servizio

Per eseguire le operazioni nel progetto Cloud, l'accesso VPC serverless utilizza l'account di servizio Agente di servizio VPC di 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 VPC per serverless (roles/vpcaccess.serviceAgent). Le operazioni di accesso VPC serverless potrebbero non riuscire se modifichi le autorizzazioni di questo account.

Errori

Se la creazione di un connettore genera un errore, prova la seguente procedura:

  • Specifica un intervallo IP interno RFC 1918 che non si sovrapponga a eventuali prenotazioni di indirizzi IP esistenti nella rete VPC.
  • Concedi al tuo progetto l'autorizzazione per utilizzare le immagini delle VM di Compute Engine del progetto con ID serverless-vpc-access-images. Consulta la pagina Impostare vincoli di accesso alle immagini per informazioni su come aggiornare i criteri dell'organizzazione di conseguenza.
  • Imposta il criterio dell'organizzazione constraints/compute.vmCanIpForward per consentire alle VM di abilitare l'IP forwarding.

Se hai specificato un connettore ma non riesci ancora ad accedere alle risorse nella rete VPC:

  • Assicurati che non esistano regole firewall sulla tua rete VPC con una priorità precedente a 1000 che rifiuti il traffico in entrata dall'intervallo IP del connettore.

Passaggi successivi