Creare e gestire le interfacce Private Service Connect

Questa pagina descrive in che modo gli amministratori di rete dei produttori 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 dei consumer.

Prima di iniziare

Ruoli

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

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

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

Creare e configurare un'interfaccia Private Service Connect

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

Creare una VM con un'interfaccia Private Service Connect

Quando crei un'interfaccia Private Service Connect, crei una VM con almeno due interfacce di rete. La prima interfaccia si connette a una subnet del produttore. 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 della sottorete specificato dal collegamento di rete.

Se crei un'interfaccia 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 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 e poi crea un'interfaccia Private Service Connect.

Quando crei un'interfaccia Private Service Connect, puoi optionally assegnare uno o più intervalli IP di 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 di alias, specifica la lunghezza del prefisso dell'intervallo in notazione CIDR. Quando assegni uno o più intervalli IP di alias a un'interfaccia Private Service Connect, Google Cloud li alloca dall'intervallo di indirizzi IP principale della sottorete associata all'attacco alla rete. L'indirizzo IP primario dell'interfaccia Private Service Connect viene allocato dall'esterno di qualsiasi intervallo IP di alias. Se nella subnet dell'attacco alla rete non sono presenti indirizzi IP sufficienti 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 corrispondente alla regione dell'attacco alla 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, ovvero l'interfaccia di rete principale, e poi segui questi passaggi:

    1. Seleziona una Rete per l'interfaccia di rete principale.
    2. Seleziona una subnet per l'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 dell'attacco alla 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 poi 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 immagine. Puoi visualizzare un elenco di immagini, progetti di immagini e 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 sottorete 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 connetterti.
  • ATTACHMENT_NAME: il nome del collegamento di rete a cui richiedere una connessione.

Per assegnare all'interfaccia Private Service Connect sia un indirizzo IPv4 che un indirizzo IPv6, specifica stack-type='IPV4_IPv6'. L'attacco alla 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 di alias, specifica la lunghezza del prefisso di ogni intervallo IP di 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 in notazione CIDR. Puoi includere più lunghezze di prefisso in un elenco separato da due punti, 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 predefinito o personalizzato.
  • 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 immagine.
  • IMAGE: una versione specifica di un'immagine pubblica, ad esempio debian-10-buster-v20200309.
  • PRODUCER_PROJECT_ID: l'ID progetto dell'interfaccia.
  • PRODUCER_NETWORK: il nome della rete VPC del produttore.
  • 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: il nome della subnet dell'interfaccia di rete principale.
  • CONSUMER_PROJECT_ID: l'ID del progetto consumer.
  • ATTACHMENT_REGION: la regione del collegamento di rete.
  • ATTACHMENT_NAME: il nome dell'attacco alla rete.

Per assegnare all'interfaccia Private Service Connect sia un indirizzo IPv4 che un indirizzo IPv6, specifica "stack-type": "IPV4_IPv6". L'attacco alla 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 di alias, specifica la lunghezza del prefisso di ogni intervallo IP di 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 in notazione CIDR, ad esempio /28. Puoi specificare più intervalli IP di alias nell'elenco aliasIpRanges nel seguente formato:

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

Per ulteriori informazioni sulla creazione di istanze VM, consulta Creare e avviare un'istanza VM.

Consenti la connettività SSH

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

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

Per configurare il routing, devi conoscere il nome di Google Cloud dell'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, individua e prendi nota del nome della tua interfaccia 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 con l'interfaccia Private Service Connect.
    • ZONE: la zona della VM.
  2. Nell'output del comando, individua e prendi nota del nome di Google Cloud dell'interfaccia Private Service Connect, ad esempio nic1.

Trovare il nome del sistema operativo guest dell'interfaccia Private Service Connect

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

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

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

    ip address
    

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

Trovare l'IP del gateway dell'interfaccia Private Service Connect

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

  1. Connettiti alla VM dell'interfaccia 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 Private Service Connect. Ad esempio, se il nome dell'interfaccia è nic1, utilizza un valore 1.

Aggiungere route per le subnet dei consumatori

Devi aggiungere una route al gateway predefinito dell'interfaccia Private Service Connect per ogni subnet consumer che si connette all'interfaccia Private Service Connect. In questo modo, il traffico destinato alla rete del consumatore esce dall'interfaccia Private Service Connect.

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

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

  2. Esegui il seguente comando per ogni subnet consumer che si connette all'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 istanze che includono le interfacce 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 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 predefinito o personalizzato 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 di questa subnet.
  • REGION: la regione della sottorete 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 immagine. Puoi visualizzare un elenco di immagini, progetti di immagini e 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 dell'allegato della rete.
  • ATTACHMENT_REGION: la regione del collegamento alla rete.
  • ATTACHMENT_NAME: il nome del collegamento alla rete. Quando crei una VM utilizzando questo modello di istanza, l'interfaccia Private Service Connect richiede una connessione a questo collegamento di rete.

    Puoi specificare una configurazione aggiuntiva, ad esempio il nome dell'immagine e le dimensioni del disco di avvio. Per saperne di più, 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 immagine. Puoi visualizzare un elenco di immagini e 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 predefinito o personalizzato per le VM create utilizzando questo modello di istanza, ad esempiof1-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 di questa subnet.
  • ATTACHMENT_PROJECT_ID: l'ID del progetto dell'allegato della rete.
  • ATTACHMENT_REGION: la regione del collegamento alla rete.
  • NETWORK_ATTACHMENT: il nome del collegamento alla rete. Quando crei una VM utilizzando questo modello di istanza, l'interfaccia Private Service Connect richiede una connessione a questo collegamento di rete.

Per saperne di più sulla creazione di modelli di istanze, consulta Creare modelli di istanze.

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

Puoi utilizzare le interfacce Private Service Connect con Controlli di servizio VPC. In questo modo, una rete VPC del producer può accedere alle API e ai servizi Google tramite una rete VPC del consumer, mentre l'organizzazione consumer può applicare i vantaggi della sicurezza di Controlli di servizio VPC.

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

I passaggi che seguono aggiornano temporaneamente la tabella di routing per le VM che utilizzano Debian. Per aggiungere il percorso in modo permanente o per aggiornarlo per un sistema operativo diverso, 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 Private Service Connect

Puoi descrivere una VM per visualizzare i dettagli della sua interfaccia Private Service Connect. L'indirizzo IP dell'interfaccia, gli intervalli IP degli alias, il collegamento alla rete e la subnet del consumatore 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 della tua interfaccia 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 tua 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.

Eliminare una VM con un'interfaccia Private Service Connect

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

Passaggi successivi