Accedi alle API di Google utilizzando Private Service Connect con i controlli di servizio HTTP(S) per i consumatori

Private Service Connect ti consente di connetterti a servizi esterni alla tua rete Virtual Private Cloud (VPC) utilizzando indirizzi IP interni da te definiti.

Puoi creare un endpoint Private Service Connect con controlli del servizio HTTP(S) consumer utilizzando un bilanciatore del carico HTTP(S) interno, che ti consente di mantenere criteri coerenti tra più producer di servizi.

Per ulteriori informazioni, consulta Utilizzo di Private Service Connect per accedere alle API di Google con controlli del servizio HTTP(S) consumer.

Un bilanciatore del carico HTTP(S) interno utilizzato per Private Service Connect può essere raggiunto dalle reti VPC condivise e dalle reti connesse.

Ruoli

Il ruolo di amministratore bilanciatore del carico Compute (roles/compute.loadBalancerAdmin) contiene l'autorizzazione necessaria per eseguire le attività descritte in questa guida.

Servizi supportati

Consulta l'elenco degli endpoint di servizio a livello di area geografica supportati.

Prima di iniziare

  • Abilita l'API Compute Engine nel tuo progetto.

  • Se vuoi registrare la regola di forwarding del bilanciamento del carico con Service Directory, attiva l'API Service Directory nel tuo progetto. Per configurare la directory del servizio, devi creare la regola di forwarding utilizzando l'interfaccia a riga di comando di Google Cloud o l'API.

  • Se non ne hai già una, crea una subnet solo proxy. Deve essere presente una singola subnet solo proxy nella rete e nell'area geografica VPC in cui intendi creare il bilanciatore del carico HTTP(S) interno. Questa subnet è utilizzata da tutti i bilanciatori del carico HTTP(S) interni all'interno della rete e dell'area geografica.

  • Se non ce l'hai ancora, crea una chiave privata e un certificato per il tuo dominio. Vedi il passaggio 1 dell'utilizzo dei certificati SSL autogestiti. Per creare il proxy HTTPS di destinazione quando configuri il bilanciatore del carico, hai bisogno di una chiave privata e di un certificato.

Crea gruppo di endpoint di rete

Per ogni servizio che vuoi rendere disponibile utilizzando il bilanciatore del carico, crea un gruppo di endpoint di rete (NEG) di rete Private Service Connect.

Console

  1. Vai alla pagina Gruppi di endpoint di rete in Google Cloud Console.
    Vai a Gruppi di endpoint di rete
  2. Fai clic su Crea gruppo di endpoint di rete.
  3. Inserisci un Nome per il gruppo di endpoint di rete.
  4. Per Tipo di gruppo di endpoint di rete, seleziona Gruppo di endpoint di rete (Private Service Connect).
  5. Seleziona l'area geografica per il gruppo di endpoint di rete.
  6. Seleziona il Servizio di destinazione per il gruppo di endpoint di rete.
  7. Fai clic su Crea.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
  --network-endpoint-type=private-service-connect \
  --psc-target-service=TARGET_SERVICE \
  --region=REGION

Sostituisci quanto segue:

  • NEG_NAME: un nome per il gruppo di endpoint di rete.

  • TARGET_SERVICE: il servizio di destinazione a cui vuoi connetterti. Consulta l'elenco di endpoint di servizio a livello di area geografica supportati.

  • REGION: l'area geografica in cui creare il gruppo di endpoint di rete. L'area geografica deve trovarsi nella stessa area geografica del servizio a cui vuoi connetterti.

Configura il bilanciatore del carico

Tutti i componenti del bilanciatore del carico devono essere creati nella stessa area geografica del gruppo di endpoint di rete Private Service Connect.

Console

Seleziona un tipo di bilanciatore del carico

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.
    Vai al bilanciamento del carico
  2. In Bilanciamento del carico HTTP(S), fai clic su Avvia configurazione.
  3. Seleziona Solo tra le mie VM. Questa impostazione indica che il bilanciatore del carico è interno.
  4. Fai clic su Continua.

Configurazione di base

  1. Inserisci un nome per il bilanciatore del carico.
  2. Seleziona un'area geografica per il bilanciatore del carico.
  3. Seleziona una rete per il bilanciatore del carico.

    La rete deve contenere una subnet solo proxy nell'area geografica in cui stai creando il NEG e il bilanciatore del carico. Se non ne possiedi uno, puoi fare clic su Prenota subnet per crearne uno.

  4. Per continuare, tieni aperta la finestra.

Configurazione backend

Il gruppo di endpoint di rete Private Service Connect è un tipo di backend del bilanciatore del carico. Puoi creare un servizio di backend per ogni backend che vuoi configurare.

  1. Fai clic su Configurazione backend.
  2. Crea un servizio di backend per ogni gruppo di endpoint di rete Private Service Connect che vuoi configurare.

    1. Dal menu Crea o seleziona servizi di backend, seleziona Crea un servizio di backend.
    2. Inserisci un nome per il servizio di backend.
    3. Imposta il Tipo di backend su Gruppo di endpoint di rete Private Service Connect.
    4. Seleziona HTTPS per il protocollo.

      L'impostazione Porta denominata non viene utilizzata per questa configurazione del bilanciatore del carico. Mantieni l'impostazione predefinita della porta denominata.

    5. Nella sezione Backend, fai clic sul menu New backend e seleziona il gruppo di endpoint di rete Private Service Connect.

      Se devi creare un nuovo gruppo di endpoint di rete Private Service Connect, fai clic su Crea gruppo di endpoint di rete Private Service Connect.

Regole di routing

Se stai configurando un solo servizio di backend per il bilanciatore del carico, è sufficiente la regola di routing predefinito; puoi inoltre passare alla configurazione di frontend.

  1. Se hai più di un servizio di backend, fai clic su Regole di routing.
  2. Seleziona Host semplice e regola percorso.
  3. Per ogni backend, segui questi passaggi:
    1. Aggiungi regola host e percorso.
    2. In Host, inserisci il nome host che verrà utilizzato per inviare richieste al servizio, ad esempio cloudkms.example.com.
    3. In Percorsi, inserisci il percorso, ad esempio /*.
    4. Per il backend, seleziona il servizio di backend.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. Fai clic su Aggiungi IP e porta frontend.
  3. Inserisci un nome per il bilanciatore del carico.
  4. Nel campo Protocollo, seleziona HTTPS (include HTTP/2).
  5. Seleziona una subnet per il bilanciatore del carico.
  6. Assicurati che la porta sia impostata su 443 per consentire il traffico HTTPS.
  7. Per Indirizzo IP, seleziona un indirizzo IP dal menu.

    Se vuoi prenotare un nuovo indirizzo IP, fai clic su Crea indirizzo IP.

  8. Fai clic sull'elenco a discesa Certificate (Certificato).

    1. Se hai già a disposizione una risorsa per certificati SSL autogestita, selezionala dal menu.
    2. In alternativa, seleziona Crea un nuovo certificato.
    3. Inserisci un Nome per la risorsa del certificato.
    4. Nei campi appropriati, carica i file in formato PEM:
      • Certificato
      • Chiave privata
    5. Fai clic su Crea.
  9. Fai clic su Fine.

Esamina e finalizza

  1. Fai clic su Esamina e finalizza per controllare la configurazione.
  2. Fai clic su Crea.

gcloud

  1. Crea un servizio di backend per ogni gruppo di endpoint di rete creato.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --protocol=HTTPS \
     --region=REGION
    

    Sostituisci quanto segue:

    • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    • REGION: l'area geografica in cui creare il servizio di backend.
  2. Per ogni servizio di backend creato, aggiungi il NEG corrispondente al servizio di backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
     --network-endpoint-group=NEG_NAME \
     --region=REGION
    

    Sostituisci quanto segue:

    • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    • NEG_NAME: il nome del gruppo di endpoint di rete.
    • REGION: l'area geografica per il backend.
  3. Crea una mappa URL per il bilanciatore del carico.

    Una mappa degli URL deve fare riferimento a un servizio di backend predefinito. Se stai configurando il bilanciatore del carico con un servizio di backend, impostalo come predefinito. Se stai configurando il bilanciatore del carico in modo da utilizzare più servizi di backend, a cui fanno riferimento regole di host e matcher percorso creati nel passaggio successivo, scegli uno dei servizi di backend come impostazione predefinita per la mappa degli URL.

    gcloud compute url-maps create URL_MAP_NAME \
     --default-service=DEFAULT_BACKEND_SERVICE_NAME \
     --region=REGION
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: un nome per la mappa URL.

    • DEFAULT_BACKEND_SERVICE_NAME: il nome predefinito del bilanciatore del carico. Il valore predefinito viene utilizzato quando nessuna regola host corrisponde al nome host richiesto.

    • REGION: l'area geografica in cui creare la mappa URL.

  4. Aggiungere altri servizi di backend alla mappa URL.

    Se la mappa degli URL deve fare riferimento a due o più servizi di backend, completa i passaggi seguenti. Se la mappa degli URL fa riferimento a un solo servizio di backend, ignora questo passaggio.

    1. Per ogni servizio di backend, aggiungi un matcher percorso. Devi creare un matcher percorso per ogni servizio di backend.
    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
     --path-matcher-name=PATH_MATCHER \
     --default-service=BACKEND_SERVICE_NAME \
     --region=REGION
    

    Sostituisci quanto segue:

    • URL_MAP_NAME: il nome della mappa URL.
    • PATH_MATCHER: un nome per il matcher percorso.
    • BACKEND_SERVICE_NAME: il nome del servizio di backend.
    • REGION: la regione della mappa URL.
    1. Aggiungi una regola host per ogni nome host.

      Ogni regola host può fare riferimento a un solo matcher percorso, ma due o più regole host possono fare riferimento allo stesso matcher percorso.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
      --hosts=HOST \
      --path-matcher-name=PATH_MATCHER \
      --region=REGION
      

      Sostituisci quanto segue:

      • URL_MAP_NAME: il nome della mappa URL.
      • HOST: il nome host a cui inviare richieste per questo servizio. Ad esempio, cloudkms.example.com.
      • PATH_MATCHER: il nome del matcher percorso.
      • REGION: la regione della mappa URL.
  5. Crea il proxy HTTPS di destinazione.

    Crea una risorsa certificato SSL a livello di area geografica utilizzando il comando gcloud compute ssl-certificates create. I certificati gestiti da Google non sono supportati con bilanciatori del carico HTTP(S) interni.

    gcloud compute ssl-certificates create CERTIFICATE \
     --certificate=LB_CERT \
     --private-key=LB_PRIVATE_KEY \
     --region=REGION
    

    Sostituisci quanto segue:

    • CERTIFICATE: un nome per il certificato.

    • LB_CERT: il percorso del file del certificato in formato PEM per il certificato autogestito.

    • LB_PRIVATE_KEY: il percorso del file della chiave privata in formato PEM per il certificato autogestito.

    • REGION: l'area geografica per il certificato.

    Utilizza la risorsa certificato SSL a livello di area geografica per creare un proxy HTTPS di destinazione con il comando gcloud compute target-https-proxies create.

    gcloud compute target-https-proxies create PROXY_NAME \
       --url-map=URL_MAP_NAME \
       --region=REGION \
       --ssl-certificates=CERTIFICATE
    

    Sostituisci quanto segue:

    • PROXY_NAME: un nome per il proxy HTTPS di destinazione.
    • URL_MAP_NAME: il nome della mappa URL.
    • REGION: l'area geografica per la risorsa del certificato.
    • CERTIFICATE: il nome della risorsa del certificato.
  6. Prenota un indirizzo IPv4 interno a livello di area geografica per la regola di forwarding.

    gcloud compute addresses create ADDRESS_NAME \
     --ip-version=IPV4 \
     --region=REGION \
     --subnet=SUBNETWORK
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: un nome per la risorsa Indirizzo IP.
    • REGION: l'area geografica in cui creare l'indirizzo IP.
    • SUBNET: la subnet in cui creare l'indirizzo IP.

    Esegui questo comando per visualizzare l'indirizzo IP riservato. Dopo aver creato il bilanciatore del carico, puoi utilizzare l'indirizzo IP per verificare la configurazione.

    gcloud compute addresses describe ADDRESS_NAME \
     --format="get(address)" --region=REGION
    
  7. Crea la regola di forwarding.

    Crea la regola di forwarding utilizzando il comando gcloud compute forwarding-rules create.

    gcloud compute forwarding-rules create FWD_RULE \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network=NETWORK \
     --address=ADDRESS_NAME \
     --ports=443 \
     --region=REGION \
     --target-https-proxy=PROXY_NAME \
     --target-https-proxy-region=PROXY_REGION \
     [--service-directory-registration=SD_SERVICE_NAME]
    

    Sostituisci quanto segue:

    • FWD_RULE: un nome per la regola di forwarding.

    • NETWORK: la rete in cui creare la regola di forwarding.

    • ADDRESS_NAME: l'indirizzo IP riservato.

    • REGION: l'area geografica per la regola di forwarding.

    • PROXY_NAME: il nome del proxy HTTPS di destinazione.

    • PROXY_REGION: l'area geografica del proxy HTTPS di destinazione.

    • SD_SERVICE_NAME: URI del servizio Service Directory con cui vuoi registrare il bilanciatore del carico , in questo formato: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. La specifica di --service-directory-registration è facoltativa.

Configura i record DNS

Configura i record DNS per ogni host che hai aggiunto alla mappa URL, indirizzando l'indirizzo IP della regola di forwarding.

Ad esempio, supponiamo che tu abbia configurato Private Service Connect con controlli di servizio consumer HTTP(S) mediante le seguenti configurazioni:

  • Un NEG di Private Service Connect che utilizza il servizio di destinazione asia-east1-cloudkms.googleapis.com.

  • Un bilanciatore del carico HTTP(S) interno che utilizza il NEG di Private Service Connect come backend.

  • Una mappa degli URL che definisce una regola host per cloudkms.example.com.

Affinché questa configurazione funzioni correttamente, crei un record DNS che rimandi cloudkms.example.com all'indirizzo IP della regola di forwarding.

Le richieste inviate a cloudkms.example.com vengono inviate al bilanciatore del carico, che inoltra la richiesta a asia-east1-cloudkms.googleapis.com.

Se utilizzi Cloud DNS per gestire il DNS, consulta la sezione Aggiungere un record DNS.

Verificare la configurazione

  1. Crea l'istanza VM.

    gcloud compute instances create VM_NAME \
       --network=NETWORK \
       --image-project=debian-cloud --image-family=debian-9 \
       --zone=ZONE
    

    Sostituisci quanto segue:

    • VM_NAME: un nome per la macchina virtuale.

    • NETWORK: la rete della VM.

    • ZONE: la zona della VM.

  2. Connettiti alla VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Utilizza curl per verificare la configurazione. Questo comando imposta l'intestazione Host e ignora la risoluzione DNS specificando un indirizzo IP definito dall'utente. Puoi omettere la porta se utilizzi la porta predefinita per il protocollo, ad esempio la porta 443 per HTTPS.

    Se necessario, puoi ignorare la convalida dei certificati utilizzando il flag -k. Potresti dover saltare la convalida se hai utilizzato un certificato autofirmato per configurare il proxy HTTPS di destinazione o se la VM non ha il certificato dell'autorità di certificazione che ha firmato il certificato.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
       -H 'Host: HOST' \
       --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Sostituisci quanto segue:

    • HOST: il nome host configurato nella mappa URL.

    • RESOURCE_URI: il resto dell'URI della risorsa che vuoi utilizzare per la verifica. Ad esempio, se il bilanciatore del carico inoltra le richieste a un endpoint a livello di area geografica di Cloud Key Management Service, puoi utilizzare v1/projects/<var>PROJECT_ID</var>/locations.

    • FWD_RULE_IP_ADDRESS: l'indirizzo IP assegnato alla risorsa dell'indirizzo IP prenotato, ADDRESS_NAME, utilizzato nella configurazione della regola di forwarding.

Utilizzo di Private Service Connect da host on-premise

Se la tua rete on-premise è connessa a una rete VPC, puoi connetterti al bilanciatore del carico HTTP(S) interno che fornisce accesso a Private Service Connect utilizzando i controlli di servizio HTTP consumer.

  • La rete on-premise deve essere connessa alla rete VPC contenente il bilanciatore del carico HTTP(S) interno utilizzando tunnel Cloud VPN o collegamenti Cloud Interconnect (VLAN) nella stessa area geografica del bilanciatore del carico HTTP(S) interno.

  • La rete on-premise deve avere route appropriate al bilanciatore del carico HTTP(S) interno. Assicurati che ogni router Cloud che gestisce la sessione BGP per il tunnel Cloud VPN o il collegamento Cloud Interconnect (VLAN) sia stato configurato per pubblicizzare l'intervallo di indirizzi IP principali della subnet utilizzata dalla regola di forwarding del bilanciatore del carico HTTP(S) interno. I router Cloud pubblicizzano i percorsi di subnet per impostazione predefinita.

  • Devi configurare i sistemi on-premise in modo che i nomi host nella mappa URL del bilanciatore del carico HTTP(S) interno si risolvano nell'indirizzo IP della regola di forwarding del bilanciatore del carico HTTP(S) interno. Puoi creare i record DNS nei server dei nomi on-premise oppure puoi utilizzare Cloud DNS.

    Se hai creato i record DNS utilizzando le zone private gestite di Cloud DNS, procedi come segue:

    • Crea un criterio del server in entrata nella rete VPC alla quale si connette la tua rete on-premise.

    • Identifica i punti di ingresso inoltratori in entrata nelle aree geografiche in cui si trovano i tunnel Cloud VPN e i collegamenti di Cloud Interconnect (VLAN) nella rete VPC a cui si connette la tua rete on-premise.

    • Configura i server dei nomi DNS on-premise per l'inoltro delle richieste DNS per i nomi host nell'URL mappati a un punto di contatto per l'inoltro in entrata di Cloud DNS.

Figura 1. Configurando Private Service Connect, il router Cloud e gli host on-premise, puoi connetterti alle API e ai servizi Google utilizzando gli endpoint dei servizi a livello di area geografica.