Conectividad de red privada
En esta página, se describe cómo puedes configurar Integration Connectors para que se conecten de forma privada a tus aplicaciones de backend y se supone que conoces los siguientes conceptos:- Nube privada virtual (VPC) de Google Cloud
- Private Service Connect
- Cloud DNS
- Conectores de Integration
Integration Connectors admite la conectividad a tus backends alojados en una red privada. Para habilitar la conectividad privada, debes usar Private Service Connect (PSC). PSC permite conectarse de forma privada a servicios en diferentes redes.
En el caso de Integration Connectors, desde el punto de vista de las redes, eres el productor de servicios y Integration Connectors es el consumidor de servicios. Como productor de servicios, debes configurar un adjunto de servicio de PSC que los conectores de integración puedan usar para consumir el servicio. Una vez que el adjunto de servicio está listo, puedes configurar la conexión para que consuma el adjunto de servicio con un adjunto de extremo.
Adjuntos de extremos
Los adjuntos de extremo son recursos de Integration Connectors que permiten que las conexiones establezcan conectividad con tus aplicaciones de backend a través de los adjuntos de servicio de PSC.
En la siguiente imagen, se muestra un adjunto de extremo que permite que una conexión establezca conectividad con una aplicación de backend a través de un adjunto de servicio de PSC:
Puedes crear el adjunto de extremo como una dirección IP o como nombre de host.
- Cómo crear un archivo adjunto de extremo como una dirección IP
- Crea un adjunto de extremo como nombre de host
Crea un adjunto de extremo como una dirección IP
Para crear un archivo adjunto de extremo como una dirección IP, puedes usar la consola de Cloud o la línea de comandos (gcloud). .Console
Para crear un adjunto de extremo desde la consola de Cloud, haz lo siguiente:
- Abre la página Adjuntos de extremos de Integration Connectors.
- Haz clic en + Crear. Se abrirá la página Crear adjunto de extremo.
- Ingresa valores para los siguientes campos:
- Nombre: Un nombre para el adjunto del extremo. El nombre debe ser único. No pueden existir otros adjuntos de extremo con el mismo nombre y no puedes cambiarlo más adelante. El nombre debe comenzar con una letra minúscula seguida por un máximo de 63 letras minúsculas, números o guiones, pero no puede terminar con un guion. La longitud mínima es de 2.
- ID de adjunto de servicio: Es el nombre del adjunto de servicio de PSC que ya tienes. crear.
- Descripción (opcional): Ingresa una descripción para el archivo adjunto del extremo.
- Etiquetas (opcional): Ingresa etiquetas de recursos como pares clave-valor. Más información sobre las etiquetas, consulta ¿Qué son las etiquetas?
- (Opcional) Habilitar el acceso global de extremos: Selecciona esta opción si deseas enviar tráfico a tu backend desde una conexión presente en cualquier región.
De forma predeterminada, el el adjunto del extremo requiere que tanto la conexión como el backend pueden estar en la misma región. Por lo tanto, si habilitas el acceso global para el extremo, una conexión presente en cualquier región puede enviar tráfico a tu backend.
- Haz clic en Crear.
La columna Dirección IP especifica la dirección IP del archivo adjunto del extremo. Debes usa esta dirección IP cuando configures un conector para conectividad privada.
gcloud
Para crear un archivo adjunto de extremo desde la línea de comandos, haz lo siguiente:
- Obtén el recurso de adjunto de servicio de PSC:
gcloud compute service-attachments list
El comando muestra la lista de adjuntos de servicio. Por ejemplo:
NAME REGION TARGET_SERVICE CONNECTION_PREFERENCE demo-sa us-west1 k8s2-tcp-tgysilgj-apps-ingressgateway-fzdhwstg ACCEPT_AUTOMATIC
Necesitarás esta información sobre el adjunto de servicio en los pasos posteriores.
- Obtén un token de autenticación antes de ejecutar la API de CreateEndpointAttachment:
TOKEN="$(gcloud auth print-access-token)"
- Crea el adjunto de extremo mediante la API de CreateEndpointAttachment. Por ejemplo:
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
Aquí:
- LOCATION es la región del adjunto del servicio. Por ejemplo,
us-west1
- PROJECT_ID es el proyecto de Google Cloud en el que creaste el adjunto de servicio de PSC.
- ENDPOINT_ATTACHMENT_NAME es el nombre del adjunto del extremo. El nombre debe ser único. No puede haber otro extremo archivos adjuntos con el mismo nombre y no podrás cambiarlo más adelante. El nombre debe comenzar con una letra minúscula seguida por un máximo de 31 letras minúsculas, números o guiones, pero no puede terminar con un guion. La longitud mínima es de 2.
- SERVICE_ATTACHMENT_NAME es el nombre del adjunto del servicio. Usa el nombre de la cuenta de servicio de PSC que muestra el comando
gcloud compute service-attachments list
que se ejecutó anteriormente.
Después de llamar a la API, Integration Connectors inicia un de larga duración y puede tardar un poco en completarse. El extremo adjunto se creará una vez que la operación se complete correctamente.
- LOCATION es la región del adjunto del servicio. Por ejemplo,
- Obtén el ID del proyecto del directorio de servicios asociado con tu proyecto de Google Cloud y, luego, agrégalo a la lista de entidades permitidas en el adjunto de servicio.
- Verifica si el adjunto de extremo se creó con la API de GetEndpointAttachment.
Por ejemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpointAttachments/ENDPOINT_ATTACHMENT_NAME
La API muestra una respuesta similar a la que se ve a continuación:
{ "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"}, }
La dirección IP del archivo adjunto del extremo está disponible en el campo
endpointIp
. En esta respuesta de muestra, la dirección IP es10.0.0.0
. Usa esta dirección IP cuando configures un conector para la conectividad privada.
Si la creación del adjunto de extremo se realiza correctamente, el adjunto creado recientemente se muestra en la página Adjunto de extremo, similar a la siguiente imagen:
Los pasos, descritos hasta ahora, muestran cómo crear un adjunto de extremo como una dirección IP. Sin embargo, también puedes crear un adjunto de extremo como nombre de host y usarlo para configurar un conector para la conectividad privada. Para comprender cómo crear un archivo adjunto de extremo con un nombre de host, consulta Crea un archivo adjunto de extremo como nombre de host.
Crea un adjunto de extremo como nombre de host
Para crear un adjunto de extremo como nombre de host, realiza las siguientes tareas:
- Crea un adjunto de extremo como una dirección IP. Para obtener más información, consulta Crea un archivo adjunto de extremo como una dirección IP.
- Crea una zona privada administrada de Cloud DNS en cualquiera de tus proyectos de Google Cloud.
En esta zona de DNS, debes agregar un nombre de host que quieras usar para la configuración del conector y asignarlo a la dirección IP del archivo adjunto del extremo que obtuviste en el paso 1. Para obtener información sobre cómo crear una zona administrada privada de Cloud DNS, consulta Crea una zona privada y Agrega un registro.
- Crea una zona administrada de Integration Connectors en tu proyecto de Google Cloud que uses para Integration Connectors. La zona administrada de Integration Connectors (zona de intercambio de tráfico) se comunica con la zona privada administrada de Cloud DNS (creada en el paso 2) para la resolución de nombres.
Antes de crear la zona administrada, debes otorgar los siguientes roles y permisos:
- Otorga el permiso
connectors.managedZones.create
a el usuario que crea la zona administrada de Integration Connectors.El permiso
connectors.managedZones.create
es disponibles en el rol de IAMroles/connectors.admin
o en Rol de IAMroles/connectors.managedZonesAdmin
. Para obtener información sobre los diversos roles de IAM y sus permisos correspondientes disponibles para los conectores de integración, consulta Roles y permisos de IAM para los conectores de integración. - Otorga el rol
role/dns.peer
a la cuenta de servicio deservice-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.com
de los conectores de integración.Si el proyecto de Google Cloud de Cloud DNS es diferente del proyecto de Google Cloud de Integration Connectors, otorga el rol
roles/dns.peer
a la cuenta de servicio de Integration Connectors en el proyecto de Google Cloud de Cloud DNS. Por ejemplo: quieres crear la zona administrada de Integration Connectors en el proyecto 12345 de Google Cloud y Cloud DNS está en el proyecto 67890 de Google Cloud. En este caso, debes otorgar el rolroles/dns.peer
en el Cuenta de servicio deservice-12345@gcp-sa-connectors.iam.gserviceaccount.com
en el proyecto 67890 de Google Cloud.
Para crear una zona administrada de Integration Connectors, puedes usar la consola de Cloud o la línea de comandos (gcloud).
Console
Para crear una zona administrada de Integration Connectors desde la consola de Cloud, haz lo siguiente:
- Ve a la página Zonas administradas de los conectores de integración.
- Ingresa valores para los siguientes campos:
- Nombre: Un nombre para la zona administrada.
- Nombre de DNS de destino: Es el nombre completo de Cloud DNS para el que crearás la zona administrada (intercambio de tráfico). Por ejemplo,
server8.stage.user.private
- Proyecto de destino: Es el nombre del proyecto de Google Cloud que tiene la zona privada de Cloud DNS.
- Red de destino: Es el nombre de la red de VPC en la que se mantiene la zona privada de Cloud DNS.
- (Opcional) Descripción: Ingresa una descripción para el adjunto del extremo.
- Etiquetas (opcional): Ingresa etiquetas de recursos como pares clave-valor. Para obtener más información sobre las etiquetas, consulta ¿Qué son las etiquetas?
- Haz clic en Crear.
gcloud
Para crear una zona administrada de Integration Connectors desde la línea de comandos, haz lo siguiente:
- Obtén un token de autenticación antes de ejecutar la API de CreateManagedZone:
TOKEN="$(gcloud auth print-access-token)"
- Crea la zona administrada con la API de CreateManagedZone. Por ejemplo:
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
Aquí:
- DESCRIPTION es una descripción opcional de la zona administrada.
- DNS_NAME: Es el nombre completo de Cloud DNS para el que crearás la zona administrada (intercambio de tráfico). Por ejemplo,
server8.stage.user.private
- TARGET_PROJECT es el nombre del proyecto de Google Cloud que tiene la zona privada de Cloud DNS.
- TARGET_NETWORK es el nombre de la red de VPC en la que se mantiene la zona privada de Cloud DNS.
- PROJECT_ID es tu proyecto de Google Cloud que usas para Integration Connectors.
- MANAGED_ZONE_NAME es el nombre de la zona administrada. El nombre debe ser único. No se puede otras zonas administradas con el mismo nombre, y no se puede cambiar el nombre más adelante. El nombre debe comenzar con una letra minúscula seguida por un máximo de 63 letras minúsculas, números o guiones, pero no puede terminar con un guion. La longitud mínima es de 2.
Después de llamar a la API, Integration Connectors inicia una operación de larga duración que puede tardar un tiempo en completarse. El servicio administrado zona se creará luego de que la operación se complete correctamente.
- Verifica si la zona administrada se creó con la API de GetManagedZone.
Por ejemplo:
curl -X GET -H "Authorization: Bearer $TOKEN" \ https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/global/managedZones/MANAGED_ZONE_NAME
La API muestra una respuesta similar a la que se ve a continuación:
{ "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" }
- Otorga el permiso
Si la creación de la zona administrada se realiza de forma correcta, la zona administrada recién creada en la página Zonas administradas, similar a la siguiente imagen:
Agrega a la lista de entidades permitidas el proyecto de Integration Connectors en un archivo adjunto de servicio
Puedes crear el archivo adjunto de servicio de PSC de modo que acepte solicitudes solo de los proyectos de Google Cloud especificados. Sin embargo, para hacerlo, necesitas el ID del proyecto del directorio de servicios asociado con tu proyecto de Google Cloud. Para obtener el ID del proyecto del directorio de servicios, puedes usar la API de List Connections, como se muestra en el siguiente ejemplo.
Sintaxis
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"
Reemplaza lo siguiente:
- CONNECTORS_PROJECT_ID: El ID de tu proyecto de Google Cloud en el que creaste la conexión.
Ejemplo
En este ejemplo, se obtiene el ID del proyecto del directorio de servicios para el proyecto connectors-test
de Google Cloud.
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"
Si ejecutas este comando en la terminal, se mostrará un resultado similar al siguiente:
..... { "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 } }, ....
En el resultado de muestra, para el proyecto de Google Cloud connectors-test
, el ID del proyecto del directorio de servicios es abcdefghijk-tp
.
Verifica la conexión del adjunto de extremo
Para verificar la conexión del adjunto de extremo, haz lo siguiente:
- En la página Archivos adjuntos de extremos, haz clic en el nombre del adjunto de extremo que creaste.
- En la página Detalles del adjunto de extremo que aparece, consulta el campo Estado de conexión. Si el estado es
Accepted
, entonces el adjunto de extremo está configurado correctamente y se establece la conexión de Private Service Connect.Para obtener información sobre otros estados, consulta Estados de conexión.
Configura una conexión para usar el adjunto de extremo
En Conectores de integración, cuando crees una conexión nueva o actualices una existente, en la sección Destinos, selecciona Adjunto de extremo como Tipo de destino y elige el adjunto de extremo que creaste en la lista Adjunto de extremo.
Si creaste una zona administrada, selecciona Dirección de host como Tipo de destino y usa el registro A que creaste cuando creaste la zona administrada.
Conectividad a varios tipos de redes privadas
Aunque la conectividad privada en Integration Connectors siempre será a través de un adjunto de servicio de PSC, los pasos para establecer la conectividad privada varían un poco según el entorno. En las siguientes secciones, se describe cómo establecer conectividad privada en los diversos entornos:
- El backend se aloja de forma local
- El backend está alojado en la VPC de Google
- El backend está alojado en un entorno sin servidores de Google Cloud
- El backend está disponible como un servicio administrado de Google Cloud