Creare e gestire interfacce di Private Service Connect

In questa pagina viene descritto in che modo gli amministratori di rete producer possono creare e gestire le interfacce Private Service Connect. Le interfacce Private Service Connect consentono alle reti Virtual Private Cloud (VPC) dei producer di servizi di avviare connessioni alle reti VPC consumer.

Prima di iniziare

Ruoli

Per ottenere le autorizzazioni necessarie per creare le interfacce Private Service Connect, chiedi all'amministratore di concederti i seguenti ruoli IAM per il tuo progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Potresti anche essere in grado di ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Il ruolo Amministratore istanze Compute (v1) contiene l'autorizzazione compute.instances.pscInterfaceCreate, necessaria per creare le interfacce Private Service Connect.

Crea e configura un'interfaccia di Private Service Connect

Per creare e configurare un'istanza di macchina virtuale (VM) con un'interfaccia Private Service Connect, completa i seguenti passaggi.

Crea una VM con un'interfaccia Private Service Connect

Quando crei un'interfaccia di Private Service Connect, crei una VM con almeno due interfacce di rete. La prima interfaccia si connette a una subnet di un producer. La seconda interfaccia è un'interfaccia Private Service Connect che richiede una connessione a un collegamento di rete in una rete consumer.

Se la connessione viene accettata, Google Cloud assegna all'interfaccia Private Service Connect un indirizzo IP interno dalla subnet specificata dal collegamento di rete.

Se crei un'interfaccia di Private Service Connect che fa riferimento a un collegamento di rete configurato per accettare manualmente le connessioni e il progetto dell'interfaccia non è nell'elenco di accettazione del collegamento di rete, la creazione della VM dell'interfaccia di Private Service Connect non va a buon fine. In questo caso, collabora con l'organizzazione consumer per aggiungere il tuo progetto all'elenco di accettazione, quindi crea un'interfaccia Private Service Connect.

Quando crei un'interfaccia di Private Service Connect, puoi scegliere di assegnarle uno o più intervalli IP alias interni. Se prevedi di assegnare intervalli IP alias, contatta l'organizzazione consumer per determinare gli intervalli di indirizzi IP appropriati.

Per assegnare un intervallo IP alias, specifica la lunghezza del prefisso dell'intervallo nella notazione CIDR. Quando assegni uno o più intervalli IP alias a un'interfaccia Private Service Connect, Google Cloud alloca gli intervalli IP alias a partire dall'intervallo di indirizzi IP principali della subnet associata al collegamento di rete. L'indirizzo IP principale dell'interfaccia Private Service Connect viene allocato dall'esterno di qualsiasi intervallo IP alias. Se nella subnet del collegamento di rete non è presente un numero sufficiente di indirizzi IP per allocare l'indirizzo IP principale e gli intervalli IP alias, la creazione della VM dell'interfaccia Private Service Connect non va a buon fine. Puoi trovare gli indirizzi IP specifici assegnati descrivendo la VM dell'interfaccia.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic su Crea istanza.

  3. Inserisci un Nome.

  4. Seleziona una regione che corrisponda alla regione del collegamento di rete a cui vuoi connetterti.

  5. Seleziona una zona.

  6. Fai clic su Opzioni avanzate.

  7. Fai clic su Networking.

  8. Nella sezione Interfacce di rete, fai clic sulla prima interfaccia di rete, che è l'interfaccia di rete principale, quindi:

    1. Seleziona una rete per l'interfaccia di rete principale.
    2. Seleziona una subnet come interfaccia di rete principale. Questa subnet deve trovarsi nella stessa regione del collegamento di rete dell'interfaccia Private Service Connect.
  9. Fai clic su Aggiungi un'interfaccia di rete.

  10. In Tipo di interfaccia, seleziona Private Service Connect.

  11. Inserisci un URL del collegamento di rete.

  12. Seleziona un tipo di stack IP. Per creare un'interfaccia Private Service Connect a doppio stack, la subnet del collegamento di rete deve essere a doppio stack.

  13. (Facoltativo) Per aggiungere un intervallo IP alias, nella casella Lunghezza prefisso, inserisci la lunghezza del prefisso, ad esempio /30. Puoi aggiungere più intervalli IP alias facendo clic su Aggiungi intervallo IP e inserendo la lunghezza del prefisso per ogni intervallo IP alias aggiuntivo che vuoi aggiungere.

  14. Fai clic su Fine.

  15. Fai clic su Crea.

gcloud

Per creare una VM con un'interfaccia Private Service Connect solo IPv4, utilizza il comando instances create.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME'

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome della nuova istanza
  • ZONE: la zona della nuova istanza
  • MACHINE_TYPE: il tipo di macchina dell'istanza, che può essere predefinito o personalizzato.
  • IMAGE_PROJECT: il progetto dell'immagine. Ad esempio, se specifichi debian-10-buster-v20230809 come immagine, specifica debian-cloud come progetto di immagine. Puoi visualizzare un elenco delle immagini, dei progetti di immagini e delle famiglie di immagini disponibili utilizzando il comando gcloud compute images list.
  • IMAGE: una versione specifica di un'immagine pubblica, ad esempio debian-10-buster-v20230809.
  • PRODUCER_NETWORK: la rete dell'istanza.
  • PRODUCER_SUBNET: la subnet dell'interfaccia di rete principale della VM. Questa subnet deve trovarsi nella stessa regione del collegamento di rete dell'interfaccia Private Service Connect.
  • CONSUMER_PROJECT_ID: l'ID del consumatore a cui vuoi collegarti.
  • ATTACHMENT_NAME: il nome del collegamento di rete a cui richiedere una connessione.

Per assegnare all'interfaccia Private Service Connect sia un indirizzo IPv4 sia un indirizzo IPv6, specifica stack-type='IPV4_IPv6'. Il collegamento di rete a cui fa riferimento l'interfaccia deve essere associato a una subnet a doppio stack.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,stack-type='IPV4_IPV6''

Per assegnare all'interfaccia Private Service Connect uno o più intervalli IP alias, specifica la lunghezza del prefisso di ogni intervallo IP alias che vuoi assegnare:

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,aliases=ALIAS_IP_RANGE'

Sostituisci ALIAS_IP_RANGE con una o più lunghezze del prefisso nella notazione CIDR. Puoi includere più prefissi in un elenco separato da punto e virgola, ad esempio /24;/28.

API

Per creare una VM con un'interfaccia Private Service Connect solo IPv4, invia una richiesta POST al metodo instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME"
    }
  ]
}

Sostituisci quanto segue:

  • PRODUCER_PROJECT_ID: l'ID del progetto del produttore.
  • INSTANCE_ZONE: la zona della nuova istanza.
  • MACHINE_TYPE_ZONE: la zona del tipo di macchina.
  • MACHINE_TYPE: il tipo di macchina della nuova VM, che può essere predefinita o personalizzata.
  • VM_NAME: il nome della nuova VM.
  • IMAGE_PROJECT: il progetto contenente l'immagine. Ad esempio, se specifichi debian-10-buster-v20200309 come immagine, specifica debian-cloud come progetto di immagine.
  • IMAGE: una versione specifica di un'immagine pubblica, ad esempio debian-10-buster-v20200309.
  • PRODUCER_PROJECT_ID: l'ID del progetto dell'interfaccia.
  • PRODUCER_NETWORK: il nome della rete VPC del producer.
  • SUBNET_REGION: la regione della subnet dell'interfaccia di rete principale. Questa subnet deve trovarsi nella stessa regione del collegamento di rete dell'interfaccia Private Service Connect.
  • SUBNET: nome della subnet dell'interfaccia di rete principale.
  • CONSUMER_PROJECT_ID: l'ID del progetto consumatore.
  • ATTACHMENT_REGION: l'area geografica del collegamento di rete.
  • ATTACHMENT_NAME: il nome del collegamento di rete.

Per assegnare all'interfaccia Private Service Connect sia un indirizzo IPv4 sia un indirizzo IPv6, specifica "stack-type": "IPV4_IPv6". Il collegamento di rete a cui fa riferimento l'interfaccia deve essere associato a una subnet a doppio stack.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME",
      "stackType": "IPV4_IPV6"
    }
  ]
}

Per assegnare all'interfaccia Private Service Connect uno o più intervalli IP alias, specifica la lunghezza del prefisso di ogni intervallo IP alias che vuoi assegnare.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "ALIAS_IP_RANGE"
        }
      ],
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME"
    }
  ]
}

Sostituisci ALIAS_IP_RANGE con una lunghezza del prefisso nella notazione CIDR, ad esempio /28. Puoi specificare più intervalli IP alias nell'elenco aliasIpRanges nel seguente formato:

"aliasIpRanges": [
  {
    "ipCidrRange": "/28"
  },
  {
    "ipCidrRange": "/30"
  }
]

Per saperne di più sulla creazione di istanze VM, consulta Creare e avviare un'istanza VM.

Consenti connettività SSH

Assicurati che le regole firewall siano configurate in modo da consentire le connessioni SSH in entrata alla VM dell'interfaccia di Private Service Connect.

Trovare il nome Google Cloud dell'interfaccia di Private Service Connect

Per configurare il routing, devi conoscere il nome Google Cloud della tua interfaccia Private Service Connect.

Console

  1. Nella console Google Cloud, vai a Istanze VM:

    Vai a Istanze VM

  2. Fai clic sul nome della VM con l'interfaccia Private Service Connect.

  3. Nella sezione Interfacce di rete, trova e prendi nota del nome dell'interfaccia di Private Service Connect, ad esempio nic1.

gcloud

  1. Utilizza il comando compute instances describe.

    gcloud compute instances describe VM_NAME
      --zone=ZONE
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della VM che ha la tua interfaccia Private Service Connect.
    • ZONE: la zona della VM.
  2. Nell'output del comando, individua e prendi nota del nome Google Cloud della tua interfaccia Private Service Connect, ad esempio nic1.

Trova il nome del sistema operativo ospite dell'interfaccia di Private Service Connect

Per configurare il routing, devi conoscere il nome del sistema operativo guest dell'interfaccia di Private Service Connect, che è diverso dal nome dell'interfaccia in Google Cloud.

Per trovare il nome dell'interfaccia su una VM Debian, segui questi passaggi. Per le VM con altri sistemi operativi, consulta la documentazione pubblica del sistema operativo.

  1. Connettiti alla VM dell'interfaccia di Private Service Connect.
  2. Esegui questo comando:

    ip address
    

    Nell'elenco di interfacce di rete, individua e prendi nota del nome dell'interfaccia associato all'indirizzo IP dell'interfaccia di Private Service Connect, ad esempio ens5.

Trovare l'IP gateway dell'interfaccia Private Service Connect

Per configurare il routing, devi conoscere l'indirizzo IP del gateway predefinito dell'interfaccia di Private Service Connect.

  1. Connettiti alla VM dell'interfaccia di Private Service Connect.

  2. Invia la seguente richiesta GET dalla VM dell'interfaccia al server di metadati associato:

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google" && echo
    

    Sostituisci INTERFACE_NUMBER con la parte numerica del nome di Google Cloud per l'interfaccia di Private Service Connect. Ad esempio, se il nome dell'interfaccia è nic1, utilizza il valore 1.

Aggiungi route per le subnet consumer

Devi aggiungere una route al gateway predefinito dell'interfaccia di Private Service Connect per ogni subnet consumer che si connette all'interfaccia di Private Service Connect. Ciò garantisce che il traffico associato alla rete consumer sia in uscita dall'interfaccia di Private Service Connect.

I passaggi seguenti descrivono come aggiornare temporaneamente la tabella di routing per una VM che utilizza il sistema operativo Debian. Per aggiornare la tabella in modo permanente o per aggiornare la route su un altro sistema operativo, consulta la documentazione pubblica del sistema operativo.

  1. Connettiti alla VM dell'interfaccia di Private Service Connect.

  2. Esegui questo comando per ogni subnet consumer che si connette alla tua interfaccia Private Service Connect:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME
    

    Sostituisci quanto segue:

Crea un modello di istanza con un'interfaccia Private Service Connect

Puoi creare modelli di istanza che includono le interfacce di Private Service Connect.

Console

  1. Vai alla pagina Modelli di istanza.

    Vai a Modelli di istanza

  2. Fai clic su Crea modello istanza.

  3. Inserisci un nome per il modello di istanza.

  4. Fai clic su Opzioni avanzate.

  5. Fai clic su Networking.

  6. Nella sezione Interfacce di rete, fai clic sulla freccia di espansione.

  7. Seleziona una rete e una Subnet per l'interfaccia di rete principale del modello di istanza.

  8. Fai clic su Fine.

  9. Fai clic su Aggiungi un'interfaccia di rete.

  10. Fai clic su Private Service Connect.

  11. Seleziona una rete e una subnet per l'interfaccia di Private Service Connect.

  12. Fai clic su Fine.

  13. Fai clic su Crea.

gcloud

Utilizza il comando instance-templates create.

gcloud compute instance-templates create NAME \
    --machine-type=MACHINE_TYPE \
    --network-interface=subnet=SUBNET \
    --region=REGION \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface=network-attachment=projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME

Sostituisci quanto segue:

  • NAME: il nome del modello di istanza.
  • MACHINE_TYPE: il tipo di macchina predefinita o personalizzata per le VM create utilizzando questo modello di istanza, ad esempio f1-micro.
  • SUBNET: la subnet del modello di istanza. Quando crei una VM utilizzando questo modello di istanza, all'interfaccia di rete principale della VM viene assegnato un indirizzo IP interno da questa subnet.
  • REGION: la regione della subnet del modello di istanza.
  • IMAGE_PROJECT: il progetto dell'immagine. Ad esempio, se specifichi debian-10-buster-v20230809 come immagine, specifica debian-cloud come progetto di immagine. Puoi visualizzare un elenco delle immagini, dei progetti di immagini e delle famiglie di immagini disponibili utilizzando il comando gcloud compute images list.
  • IMAGE: una versione specifica di un'immagine pubblica, ad esempio debian-10-buster-v20230809.
  • ATTACHMENT_PROJECT_ID: l'ID del progetto del collegamento di rete.
  • ATTACHMENT_REGION: la regione del collegamento della rete.
  • ATTACHMENT_NAME: il nome del collegamento di rete. Quando crei una VM utilizzando questo modello di istanza, l'interfaccia di Private Service Connect richiede una connessione a questo collegamento di rete.

    Puoi specificare una configurazione aggiuntiva, ad esempio il nome dell'immagine e la dimensione del disco di avvio. Per ulteriori informazioni, consulta Creare un nuovo modello di istanza.

API

Invia una richiesta POST al metodo instanceTemplates.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
{
  "name": "NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
      },
      {
        "networkAttachment": "projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/NETWORK_ATTACHMENT"
      }
    ]
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto in cui creare il modello di istanza.
  • NAME: il nome del modello di istanza.
  • IMAGE_PROJECT: il progetto dell'immagine. Ad esempio, se specifichi debian-10-buster-v20230809 come immagine, specifica debian-cloud come progetto di immagine. Puoi visualizzare un elenco delle immagini e dei progetti di immagini disponibili utilizzando il comando gcloud compute images list.
  • IMAGE: una versione specifica di un'immagine pubblica, ad esempio debian-10-buster-v20230809.
  • MACHINE_TYPE: il tipo di macchina predefinita o personalizzata per le VM create utilizzando questo modello di istanza, ad esempio f1-micro.
  • SUBNET_REGION: la regione della subnet del modello di istanza.
  • SUBNET: la subnet del modello di istanza. Quando crei una VM utilizzando questo modello di istanza, all'interfaccia di rete principale della VM viene assegnato un indirizzo IP interno da questa subnet.
  • ATTACHMENT_PROJECT_ID: l'ID del progetto del collegamento di rete.
  • ATTACHMENT_REGION: la regione del collegamento della rete.
  • NETWORK_ATTACHMENT: il nome del collegamento di rete. Quando crei una VM utilizzando questo modello di istanza, l'interfaccia di Private Service Connect richiede una connessione a questo collegamento di rete.

Per ulteriori informazioni sulla creazione di modelli di istanza, consulta Creare modelli di istanza.

Utilizzare un'interfaccia Private Service Connect con i Controlli di servizio VPC

Puoi utilizzare le interfacce di Private Service Connect con i Controlli di servizio VPC. Ciò consente alla rete VPC del producer di accedere alle API e ai servizi Google tramite una rete VPC consumer, mentre l'organizzazione consumer può applicare i vantaggi in termini di sicurezza dei Controlli di servizio VPC.

Per utilizzare un'interfaccia di Private Service Connect con Controlli di servizio VPC, devi aggiornare la tabella di routing della VM dell'interfaccia di Private Service Connect. Sostituisci la route predefinita con una che invia il traffico al gateway predefinito dell'interfaccia di Private Service Connect.

I passaggi seguenti consentono di aggiornare temporaneamente la tabella di routing per le VM che utilizzano Debian. Per aggiungere la route in modo permanente o per aggiornarla per un altro sistema operativo, consulta la documentazione pubblica del sistema operativo.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM:

    Vai a Istanze VM

  2. Fai clic sul nome della VM con l'interfaccia Private Service Connect.

  3. Esegui questo comando:

    sudo ip route replace default via GATEWAY_IP dev OS_INTERFACE_NAME
    

    Sostituisci quanto segue:

Descrivere un'interfaccia di Private Service Connect

Puoi descrivere una VM per visualizzare i dettagli della relativa interfaccia Private Service Connect. L'indirizzo IP, gli intervalli IP alias, il collegamento di rete e la subnet consumer dell'interfaccia sono elencati nella sezione delle interfacce di rete della descrizione della VM.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai a Istanze VM

  2. Fai clic sulla VM con l'interfaccia Private Service Connect.

  3. Nella sezione Interfacce di rete, visualizza i dettagli dell'interfaccia di Private Service Connect.

gcloud

gcloud compute instances describe VM_NAME
    --zone=ZONE

Sostituisci quanto segue:

  • VM_NAME: il nome della VM dell'interfaccia.
  • ZONE: la zona della VM.

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Sostituisci quanto segue:

  • PROJECT_ID: l'ID progetto della VM.
  • ZONE: la zona della VM.
  • VM_NAME: il nome della VM.

Elimina una VM con un'interfaccia Private Service Connect

Per eliminare un'interfaccia di Private Service Connect, devi eliminare l'istanza VM a cui è collegata. Per ulteriori informazioni, consulta Eliminare un'istanza.

Che cosa succede dopo?