Connettività di rete in Google Cloud VPC

Questa pagina descrive come configurare la connettività privata da Integration Connectors al servizio di backend, come MySQL, Postgres e SQL Server ospitato in Google Cloud VPC.

In questa pagina si presuppone che tu abbia familiarità con i seguenti concetti:

La connettività privata al VPC di Google Cloud può rientrare in una delle seguenti categorie:

  • Sia il servizio di backend sia l'attacco del servizio PSC si trovano nello stesso progetto o nella stessa VPC Google Cloud.
  • Sia il servizio di backend che il collegamento al servizio PSC si trovano in progetti Google Cloud o VPC diversi.

Considerazioni

Quando crei un collegamento a un servizio PSC, considera i seguenti punti chiave:

  • Il collegamento di servizio PSC e il bilanciatore del carico vengono creati in subnet diverse all'interno dello stesso VPC. Nello specifico, il collegamento del servizio viene sempre creato in una subnet NAT.
  • Il traffico dal bilanciatore del carico e dal probe del controllo di integrità deve essere inviato alla stessa porta.
  • Configura le regole del firewall per facilitare il flusso di traffico.

    Regole in entrata

    Il traffico proveniente dalla subnet del collegamento del servizio PSC deve raggiungere il servizio di backend.

    Regole in uscita

    Il traffico in uscita è abilitato per impostazione predefinita in un progetto Google Cloud, a meno che non e regole di negazione.

  • Tutti i componenti Google Cloud, come l'attacco del servizio PSC e il bilanciatore del carico, devono trovarsi nella stessa regione.

Connettività privata a un servizio di backend in una VPC Google Cloud

Questa sezione descrive come stabilire una connettività privata quando sia il servizio di backend che il collegamento al servizio PSC si trovano all'interno dello stesso progetto Google Cloud.

L'immagine seguente mostra la configurazione della connettività di rete privata da Integration Connectors a un servizio ospitato in una VPC Google Cloud:

Per configurare la connettività privata a un servizio di backend in un VPC di Google Cloud, completa i seguenti passaggi:

Crea un collegamento a un servizio PSC

Per stabilire la connettività privata da Integration Connectors, il servizio deve essere esposto a Integration Connectors utilizzando un collegamento di servizio PSC. Un allegato del servizio utilizza sempre un bilanciatore del carico. Pertanto, se il tuo servizio non è dietro un bilanciatore del carico, è necessario configurarne uno.

  1. Crea un probe di controllo di integrità e consenti il traffico dal probe.
    1. Creare il probe di controllo di integrità.
      gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port BACKEND_SERVER_PORT --region=REGION

      In questo comando, imposta BACKEND_SERVER_PORT su 3306, la porta predefinita su cui viene eseguito il server MySQL.

    2. Creare una regola firewall per consentire il traffico dal probe.
      gcloud compute firewall-rules create VPC_NETWORK-allow-health-check --direction=INGRESS --priority=1000 --network=VPC_NETWORK --allow=tcp:BACKEND_SERVER_PORT --source-ranges=35.191.0.0/16,130.211.0.0/22
  2. Crea un bilanciatore del carico interno L4 e consenti il traffico dal bilanciatore del carico.
    1. Crea un servizio di backend.
      gcloud compute backend-services create BACKEND_SERVICE --load-balancing-scheme=internal --protocol=tcp --health-checks=HEALTH_CHECK_NAME --health-checks-region=REGION 
    2. Aggiungi il gruppo di istanze al servizio di backend.
      gcloud compute backend-services add-backend BACKEND_SERVICE --instance-group=INSTANCE_GROUP_NAME --instance-group-zone=ZONE
    3. Crea una regola di inoltro.
      gcloud compute forwarding-rules create FORWARDING_RULE_NAME --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE --backend-service-region=REGION
    4. Crea una regola firewall per consentire il traffico interno dal bilanciatore del carico al gruppo di istanze.
      gcloud compute firewall-rules create VPC_NETWORK-allow-internal --direction=INGRESS --priority=1000 --network=VPC_NETWORK --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
  3. Crea il collegamento al servizio
    1. Crea una subnet per la NAT PSC. Il seguente comando crea una subnet con il nome psc-nat-subnet1 e lo scopo PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. Crea una regola firewall per consentire il traffico dalla NAT del PSC al bilanciatore del carico.
      gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \
          --direction=INGRESS  --network=VPC_NETWORK \
          --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
    3. Creare un collegamento a un servizio con approvazione esplicita.
      gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME  --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1

      In questo comando, LIMIT è il limite di connessioni per il progetto. Il limite di connessioni è il numero di consumatori Endpoint PSC che possono connettersi a questo servizio. Per scaricare SERVICE_DIRECTORY_PROJECT_ID, svolgi i seguenti passaggi:

      • Puoi creare il collegamento al servizio PSC in modo che accetti le richieste solo dai progetti Google Cloud specificati. Tuttavia, per farlo, devi disporre dell'ID progetto della directory dei servizi associata al tuo progetto Google Cloud. Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato di seguito esempio.

        Sintassi

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

        Sostituisci quanto segue:

        • CONNECTORS_PROJECT_ID: l'ID del progetto Google Cloud in cui hai creato la connessione.

        Esempio

        Questo esempio recupera l'ID progetto della directory dei servizi per il progetto Google Cloud connectors-test.

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

        L'esecuzione di questo comando sul terminale mostra un output simile al seguente:

        .....
        {
          "connections": [
            {
              "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
              "createTime": "2022-10-07T09:02:31.905048520Z",
              "updateTime": "2022-10-07T09:22:39.993778690Z",
              "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
              "status": {
                "state": "ACTIVE"
              },
              "configVariables": [
                {
                  "key": "project_id",
                  "stringValue": "connectors-test"
                },
                {
                  "key": "dataset_id",
                  "stringValue": "testDataset"
                }
              ],
              "authConfig": {},
              "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
              "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
              "nodeConfig": {
                "minNodeCount": 2,
                "maxNodeCount": 50
              }
            },
        ....
        

        Nell'output di esempio, per il progetto Google Cloud connectors-test, l'ID progetto della directory dei servizi è abcdefghijk-tp.

Dopo aver creato un collegamento a un servizio PSC, crea un collegamento endpoint per utilizzarlo. Per ulteriori informazioni, vedi Creare un allegato dell'endpoint.

Connettività privata per diversi progetti Google Cloud

Questa sezione descrive come stabilire una connettività privata quando il servizio di backend e il collegamento al servizio PSC si trovano in progetti o VPC Google Cloud diversi.

L'immagine seguente mostra la configurazione della connettività di rete privata in cui l'attacco del servizio PSC e il servizio di backend si trovano in progetti Google Cloud diversi:

Per configurare la connettività privata per diversi progetti Google Cloud, completa i seguenti passaggi:

Configura la connettività privata

Per configurare la connettività privata, segui questi passaggi:

  1. Creare un bilanciatore del carico. Se hai già un bilanciatore del carico, salta questo passaggio.
    1. Crea un NEG a livello di zona. Per maggiori informazioni, consulta Creare un NEG a livello di zona.
    2. Aggiungi il NEG a livello di zona come backend e crea le seguenti regole:
      1. Crea una regola di inoltro.
        gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --load-balancing-scheme=internal --network=VPC_NETWORK --subnet=SUBNET_NAME_2 \
        --ip-protocol=TCP --ports=BACKEND_SERVER_PORT --backend-service=BACKEND_SERVICE \
        --backend-service-region=REGION
      2. Crea una regola firewall per consentire il traffico interno dal bilanciatore del carico al gruppo di istanze.
        gcloud compute firewall-rules create FIREWALL_RULE_NAME_INTERNAL \
        --direction=INGRESS --priority=1000 --network=VPC_NETWORK \
        --action=ALLOW --rules=all --source-ranges=SUBNET_RANGE_2
  2. Crea il collegamento al servizio
    1. Crea una subnet per la NAT PSC. Il seguente comando crea una subnet con il nome psc-nat-subnet1 e lo scopo PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. Crea una regola firewall per consentire il traffico dal NAT del PSC al bilanciatore del carico.
      gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \
          --direction=INGRESS  --network=VPC_NETWORK \
          --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
    3. Crea il collegamento al servizio con approvazione esplicita.
      gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME  --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1

      In questo comando, LIMIT è il limite di connessioni per il progetto. Il limite di connessione è il numero di endpoint PSC consumer che possono connettersi a questo servizio. Per ottenere il SERVICE_DIRECTORY_PROJECT_ID, svolgi i seguenti passaggi:

      • Puoi creare il collegamento al servizio PSC in modo che accetti le richieste solo dai progetti Google Cloud specificati. Tuttavia, per farlo, devi disporre dell'ID progetto della directory dei servizi associata al tuo progetto Google Cloud. Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato nell'esempio seguente.

        Sintassi

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

        Sostituisci quanto segue:

        • CONNECTORS_PROJECT_ID: l'ID del progetto Google Cloud in cui hai creato la connessione.

        Esempio

        Questo esempio recupera l'ID progetto della directory dei servizi per il progetto Google Cloud connectors-test.

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

        L'esecuzione di questo comando sul terminale mostra un output simile al seguente:

        .....
        {
          "connections": [
            {
              "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
              "createTime": "2022-10-07T09:02:31.905048520Z",
              "updateTime": "2022-10-07T09:22:39.993778690Z",
              "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
              "status": {
                "state": "ACTIVE"
              },
              "configVariables": [
                {
                  "key": "project_id",
                  "stringValue": "connectors-test"
                },
                {
                  "key": "dataset_id",
                  "stringValue": "testDataset"
                }
              ],
              "authConfig": {},
              "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
              "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
              "nodeConfig": {
                "minNodeCount": 2,
                "maxNodeCount": 50
              }
            },
        ....
        

        Nell'output di esempio, per il progetto Google Cloud connectors-test, l'ID progetto della directory dei servizi è abcdefghijk-tp.

Autorizza il progetto Integration Connectors in un collegamento a un servizio

Puoi creare il collegamento al servizio PSC in modo che accetti le richieste solo dai progetti Google Cloud specificati. Tuttavia, per fare questo, devi avere l'ID della directory dei servizi associata al tuo progetto Google Cloud. Per ottenere l'ID progetto della directory dei servizi, puoi utilizzare l'API List Connections come mostrato nell'esempio seguente.

Sintassi

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

Sostituisci quanto segue:

  • CONNECTORS_PROJECT_ID: l'ID del progetto Google Cloud in cui hai creato la connessione.

Esempio

Questo esempio recupera l'ID progetto della directory dei servizi per il progetto Google Cloud connectors-test.

curl -X GET \
    -H "authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

L'esecuzione di questo comando sul terminale mostra un output simile al seguente:

.....
{
  "connections": [
    {
      "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
      "createTime": "2022-10-07T09:02:31.905048520Z",
      "updateTime": "2022-10-07T09:22:39.993778690Z",
      "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
      "status": {
        "state": "ACTIVE"
      },
      "configVariables": [
        {
          "key": "project_id",
          "stringValue": "connectors-test"
        },
        {
          "key": "dataset_id",
          "stringValue": "testDataset"
        }
      ],
      "authConfig": {},
      "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
      "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
      "nodeConfig": {
        "minNodeCount": 2,
        "maxNodeCount": 50
      }
    },
....

Nell'output di esempio, per il progetto Google Cloud connectors-test, l'ID progetto della directory del servizio è abcdefghijk-tp.

Dopo aver inserito nella lista consentita il progetto Integration Connectors in un collegamento di servizio PSC, crea un collegamento endpoint per utilizzare il collegamento al servizio PSC. Per maggiori informazioni, vedi Creare un collegamento dell'endpoint.

Crea un collegamento dell'endpoint

Collegamento dell'endpoint come indirizzo IP

Per istruzioni su come creare un allegato dell'endpoint come indirizzo IP, consulta Creare un allegato dell'endpoint come indirizzo IP.

Collegamento dell'endpoint come nome host

In alcuni casi, ad esempio con i backend abilitati per TLS, la destinazione richiede l'utilizzo di nomi host anziché di IP privati per eseguire la convalida TLS. Nei casi in cui un utente Il DNS viene utilizzato al posto di un indirizzo IP per la destinazione host, oltre a creare un endpoint come indirizzo IP, devi anche configurare le zone gestite. Per istruzioni su come creare un collegamento endpoint come nome host, consulta Creare un collegamento dell'endpoint come nome host.

In seguito, quando configuri la connessione per utilizzare il collegamento dell'endpoint, puoi selezionare questo collegamento.

Configura una connessione per utilizzare il collegamento dell'endpoint

Ora che hai creato un collegamento endpoint, utilizzalo nella tua connessione. Quando crei una nuova connessione o aggiorni una esistente, nella sezione Destinazioni seleziona Collegamento di endpoint come Tipo di destinazione e seleziona il collegamento di endpoint che hai creato dall'elenco Collegamento di endpoint.

Se hai creato una zona gestita, seleziona Indirizzo host come Tipo di destinazione e utilizza il record A che hai creato durante la creazione della zona gestita.

Suggerimenti per la risoluzione dei problemi

Se hai problemi di connettività privata, segui le linee guida elencate in questa sezione per evitare i problemi più comuni.

  • Per verificare che il collegamento dell'endpoint sia configurato correttamente e che la connessione PSC sia stabilita, controlla lo stato della connessione. Per ulteriori informazioni, vedi Verificare la connessione del collegamento dell'endpoint.
  • Assicurati che le regole firewall siano configurate come segue:
    • Il traffico proveniente dalla subnet del collegamento del servizio PSC deve essere consentito a raggiungere il servizio di backend.
    • Il bilanciatore del carico deve essere in grado di inviare traffico al servizio di backend.
      • Bilanciatori del carico passthrough (ILB TCP/UDP L4) Le richieste dagli IP NAT del collegamento al servizio PSC devono poter a raggiungere il tuo backend. Questi IP NAT vengono allocati automaticamente dal protocollo NAT PSC devi quindi autorizzare l'intero intervallo IP della subnet NAT in cui si trova il collegamento al servizio. Per trovare la subnet NAT del PSC, utilizza il seguente comando:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=PRIVATE_SERVICE_CONNECT"
      • Bilanciatori del carico basati su proxy/HTTP(S) (ILB proxy L4, ILB L7) Le richieste di un bilanciatore del carico proxy provengono dalla subnet solo proxy della regione. Pertanto, le regole firewall devono essere configurate in modo da consentire alle richieste provenienti da intervalli di subnet solo proxy di raggiungere il tuo backend. Per trovare il proxy utilizza questo comando:
        gcloud compute networks subnets list --project=PROJECT_ID --region=REGION --filter="purpose=REGIONAL_MANAGED_PROXY"
      • Per informazioni sulla risoluzione dei problemi dei bilanciatori del carico, vedi Risolvere i problemi relativi ai bilanciatori del carico delle applicazioni interni.

      • Il probe del controllo di integrità deve essere in grado di accedere al sistema di backend. I probe di controllo di integrità di Google Cloud hanno un intervallo IP fisso (35.191.0.0/16, 130.211.0.0/22). Pertanto, questi indirizzi IP devono essere autorizzati a inviare traffico al tuo server di backend.
    • Test di connettività Google Cloud può essere utilizzato per identificare eventuali lacune nella configurazione di rete. Per ulteriori informazioni, consulta Creare ed eseguire test di connettività.