Connettività di rete privata
Questa pagina descrive come configurare Integration Connectors per connettersi in privato alle tue applicazioni di backend e presuppone che tu abbia familiarità con i seguenti concetti:- Virtual Private Cloud (VPC) di Google Cloud
- Private Service Connect
- Cloud DNS
- Integration Connectors
Integration Connectors supporta la connettività ai backend ospitati su una rete privata. Per abilitare la connettività privata, devi utilizzare Private Service Connect (PSC). PSC consente di connettersi ai servizi su reti diverse in modo privato.
Nel caso di Integration Connectors, dal punto di vista della rete, sei il producer di servizi e Integration Connectors è il consumer di servizi. In qualità di producer di servizi, devi configurare un collegamento di servizio PSC che Integration Connectors possa utilizzare per utilizzare il servizio. Una volta che il collegamento al servizio è pronto, puoi configurare la connessione in modo che utilizzi il collegamento al servizio utilizzando un collegamento endpoint.
Collegamenti endpoint
I collegamenti endpoint sono risorse di Integration Connectors che consentono alle connessioni di stabilire la connettività con le applicazioni di backend tramite i collegamenti dei servizi PSC.
La seguente immagine mostra un collegamento endpoint che consente di stabilire una connessione con un'applicazione di backend tramite un collegamento del servizio PSC:
Puoi creare l'allegato dell'endpoint come indirizzo IP o come nome host.
- Creare un collegamento dell'endpoint come indirizzo IP
- Creare un collegamento dell'endpoint come nome host
Creare un collegamento dell'endpoint come indirizzo IP
Per creare un allegato dell'endpoint come indirizzo IP, puoi utilizzare la console Cloud o la riga di comando (gcloud). .Console
Per creare un allegato dell'endpoint dalla console Cloud:
- Apri la pagina Allegamenti endpoint per Integration Connectors.
- Fai clic su + Crea. Viene visualizzata la pagina Crea collegamento dell'endpoint.
- Inserisci i valori per i seguenti campi:
- Nome: un nome per l'allegato dell'endpoint. Il nome deve essere univoco. Non possono essere presenti altri endpoint con lo stesso nome e non puoi modificarlo in un secondo momento. Il nome deve iniziare con una lettera minuscola seguita da un massimo di 63 lettere minuscole, numeri o trattini, ma non può terminare con un trattino. La lunghezza minima è 2.
- ID collegamento a servizio: il nome del collegamento a servizio PSC che hai già creato.
- (Facoltativo) Descrizione: inserisci una descrizione per l'allegato dell'endpoint.
- (Facoltativo) Etichette: inserisci le etichette delle risorse sotto forma di coppie chiave-valore. Per saperne di più sulle etichette, consulta Cosa sono le etichette?
- (Facoltativo) Abilita l'accesso globale all'endpoint: seleziona questa opzione se vuoi inviare traffico al tuo backend da una connessione presente in qualsiasi regione.
Per impostazione predefinita, il collegamento all'endpoint richiede che sia la connessione sia il backend si trovino nella stessa regione. Pertanto, se attivi l'accesso globale per l'endpoint, una connessione presente in qualsiasi regione può inviare traffico al tuo backend.
- Fai clic su Crea.
La colonna Indirizzo IP specifica l'indirizzo IP dell'attacco all'endpoint. Devi utilizzare questo indirizzo IP quando configuri un connettore per la connettività privata.
gcloud
Per creare un allegato dell'endpoint dalla riga di comando:
- Recupera la risorsa di collegamento del servizio PSC:
gcloud compute service-attachments list
Il comando restituisce l'elenco dei collegamenti al servizio. Ad esempio:
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
Avrai bisogno di queste informazioni sugli allegati del servizio nei passaggi successivi.
- Ottieni un token di autenticazione prima di eseguire l'API CreateEndpointAttachment:
TOKEN="$(gcloud auth print-access-token)"
- Crea il collegamento dell'endpoint utilizzando l'API CreateEndpointAttachment. Ad esempio:
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "projects/PROJECT_ID/locations/LOCATION/endpointAttachments/ENDPOINT_ATTACHMENT_NAME", "serviceAttachment": "projects/demo/serviceAttachments/?SERVICE_ATTACHMENT_NAME" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpointAttachments?endpointAttachmentId=ENDPOINT_ATTACHMENT_NAME
Dove:
- LOCATION è la regione del collegamento al servizio. Ad esempio,
us-west1
. - PROJECT_ID è il progetto Google Cloud in cui hai creato il collegamento del servizio PSC.
- ENDPOINT_ATTACHMENT_NAME è il nome dell'allegato dell'endpoint. Il nome deve essere univoco. Non possono essere presenti altri endpoint collegati con lo stesso nome e non puoi modificarlo in un secondo momento. Il nome deve iniziare con una lettera minuscola seguita da un massimo di 31 lettere minuscole, numeri o trattini, ma non può terminare con un trattino. La lunghezza minima è 2.
- SERVICE_ATTACHMENT_NAME è il nome del collegamento al servizio. Utilizza il nome dell'account di servizio
PSC restituito dal comando
gcloud compute service-attachments list
eseguito in precedenza.
Dopo aver chiamato l'API, Integration Connectors avvia un'operazione a lunga esecuzione che potrebbe richiedere del tempo per essere completata. L'allegato dell'endpoint verrà creato al termine dell'operazione.
- LOCATION è la regione del collegamento al servizio. Ad esempio,
- Ottieni l'ID progetto della directory dei servizi associata al tuo progetto Google Cloud e poi inseriscilo nella lista consentita dell'allegato del servizio.
- Verifica se l'allegato dell'endpoint è stato creato utilizzando l'API GetEndpointAttachment.
Ad esempio:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
L'API restituisce una risposta simile alla seguente:
{ "name": "projects/demo-project/locations/us-central1/endpointAttachments/demo-ea", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo endpoint attachment", "serviceAttachment": "projects/demo-project/regions/us-central1/serviceAttachments/demo-sa", "endpointIp": "10.0.0.0", "labels": {"team":"sre"}, }
L'indirizzo IP dell'attacco all'endpoint è disponibile nel campo
endpointIp
. In questa risposta di esempio, l'indirizzo IP è10.0.0.0
. Utilizza questo indirizzo IP quando configuri un connettore per la connettività privata.
Se la creazione del collegamento dell'endpoint è andata a buon fine, il collegamento appena creato è elencato nella pagina Collegamenti endpoint, in modo simile all'immagine seguente:
I passaggi descritti finora mostrano come creare un allegato dell'endpoint come indirizzo IP. Tuttavia, puoi anche creare un collegamento endpoint come nome host e utilizzarlo per configurare un connettore per la connettività privata. Per capire come creare un allegato dell'endpoint con un nome host, consulta Creare un allegato dell'endpoint come nome host.
Creare un collegamento dell'endpoint come nome host
Per creare un allegato dell'endpoint come nome host:
- Crea un collegamento dell'endpoint come indirizzo IP. Per ulteriori informazioni, consulta Creare un allegato dell'endpoint come indirizzo IP.
- Crea una zona gestita privata Cloud DNS in uno dei tuoi progetti Google Cloud.
In questa zona DNS, devi aggiungere un nome host da utilizzare per la configurazione del connettore e mapparlo all'indirizzo IP dell'attacco dell'endpoint ottenuto nel passaggio 1. Per informazioni su come creare una zona gestita privata Cloud DNS, consulta Creare una zona privata e Aggiungere un record.
- Crea una zona gestita di Integration Connectors nel tuo progetto Google Cloud da utilizzare per Integration Connectors. La zona gestita di Integration Connectors (zona di peering) comunica con la zona gestita privata di Cloud DNS (creata nel passaggio 2) per la risoluzione dei nomi.
Prima di creare la zona gestita, devi concedere i seguenti ruoli e autorizzazioni:
- Concedi l'autorizzazione
connectors.managedZones.create
all'utente che crea la zona gestita di Integration Connectors.L'autorizzazione
connectors.managedZones.create
è disponibile nel ruolo IAMroles/connectors.admin
o nel ruolo IAMroles/connectors.managedZonesAdmin
. Per informazioni sui diversi ruoli IAM e sulle autorizzazioni corrispondenti disponibili per Integration Connectors, consulta Ruoli e autorizzazioni IAM per Integration Connectors. - Concedi il ruolo
role/dns.peer
all'account di servizio Integration Connectorsservice-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com
.Se il progetto Google Cloud Cloud DNS è diverso dal progetto Google Cloud Integration Connectors, concedi il ruolo
roles/dns.peer
all'account di servizio Integration Connectors nel progetto Google Cloud Cloud DNS. Ad esempio, immagina di voler creare la zona gestita dei connettori di integrazione nel progetto Google Cloud 12345 e che Cloud DNS sia nel progetto Google Cloud 67890. In questo caso, devi concedere il ruoloroles/dns.peer
all'account di servizioservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
nel progetto Google Cloud 67890.
Per creare una zona gestita di Integration Connectors, puoi utilizzare la console Cloud o la riga di comando (gcloud).
Console
Per creare una zona gestita di Integration Connectors dalla console Cloud:
- Vai alla pagina Zone gestite per i connettori di integrazione.
- Inserisci i valori per i seguenti campi:
- Nome: un nome per la zona gestita.
- Nome DNS di destinazione: il nome completo di Cloud DNS per cui stai creando la zona gestita (di peering). Ad esempio,
server8.stage.user.private
. - Progetto di destinazione: il nome del progetto Google Cloud che contiene la zona Cloud DNS privata.
- Rete di destinazione: il nome della rete VPC in cui viene gestita la zona Cloud DNS privata.
- (Facoltativo) Descrizione: inserisci una descrizione per l'allegato dell'endpoint.
- (Facoltativo) Etichette: inserisci le etichette delle risorse sotto forma di coppie chiave-valore. Per saperne di più sulle etichette, consulta Cosa sono le etichette?
- Fai clic su Crea.
gcloud
Per creare una zona gestita di Integration Connectors dalla riga di comando:
- Ottieni un token di autenticazione prima di eseguire l'API CreateManagedZone:
TOKEN="$(gcloud auth print-access-token)"
- Crea la zona gestita utilizzando l'API CreateManagedZone. Ad esempio:
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "description": "DESCRIPTION", "dns": "DNS_NAME", "target_project": "TARGET_PROJECT", "target_vpc": "TARGET_VPC" }' \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones?managedZoneId=MANAGED_ZONE_NAME
Dove:
- DESCRIPTION è una descrizione facoltativa della zona gestita.
- DNS_NAME: nome completo di Cloud DNS per cui stai creando la zona gestita (peering). Ad esempio,
server8.stage.user.private
. - TARGET_PROJECT è il nome del progetto Google Cloud che contiene la zona Cloud DNS privata.
- TARGET_NETWORK è il nome della rete VPC in cui viene gestita la zona Cloud DNS privata.
- PROJECT_ID è il tuo progetto Google Cloud che utilizzi per i connettori di integrazione.
- MANAGED_ZONE_NAME è il nome della zona gestita. Il nome deve essere univoco. Non possono esserci altre zone gestite con lo stesso nome e non puoi modificarlo in un secondo momento. Il nome deve iniziare con una lettera minuscola seguita da un massimo di 63 lettere minuscole, numeri o trattini, ma non può terminare con un trattino. La lunghezza minima è 2.
Dopo aver chiamato l'API, Integration Connectors avvia un'operazione a lunga esecuzione che potrebbe richiedere del tempo per essere completata. La zona gestita verrà creata al termine dell'operazione.
- Verifica se la zona gestita è stata creata utilizzando l'API GetManagedZone.
Ad esempio:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
L'API restituisce una risposta simile alla seguente:
{ "name": "projects/demo-project/locations/global/managedZones/demo-mz", "createTime": "2023-04-17T04:34:59.569527046Z", "updateTime": "2023-04-17T04:37:25.189074195Z", "description": "demo managed zone", "dns": "api.private.service.com.", "targetVpc": "target-project-vpc", "targetProject": "target-project" }
- Concedi l'autorizzazione
Se la creazione della zona gestita è andata a buon fine, la zona gestita appena creata viene elencata nella pagina Zone gestite in modo simile all'immagine seguente:
Aggiungi alla lista consentita il progetto Integration Connectors in un allegato del servizio
Puoi creare il collegamento al servizio PSC in modo che accetti 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 del servizio è abcdefghijk-tp
.
Verificare la connessione dell'attacco dell'endpoint
Per verificare la connessione dell'attacco dell'endpoint:
- Nella pagina Allegamenti endpoint, fai clic sul nome dell'allegato dell'endpoint che hai creato.
- Nella pagina Dettagli collegamento endpoint visualizzata, controlla il campo Stato connessione. Se lo stato è
Accepted
, l'associazione dell'endpoint è configurata correttamente e la connessione Private Service Connect è stabilita.Per informazioni sugli altri stati, vedi Stati di connessione.
Configura una connessione per utilizzare il collegamento endpoint
In Integration Connectors, 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.
Connettività a vari tipi di reti private
Anche se la connettività privata in Integration Connectors avviene sempre tramite un allegato del servizio PSC, i passaggi per stabilire la connettività privata variano leggermente in base all'ambiente. Le seguenti sezioni descrivono come stabilire la connettività privata nei vari ambienti:
- Il backend è ospitato on-premise
- Il backend è ospitato nel VPC di Google
- Il backend è ospitato nell'ambiente serverless di Google Cloud
- Il backend è disponibile come servizio Google Cloud gestito