Accede a los servicios administrados mediante Private Service Connect

Private Service Connect te permite conectarte a los productores de servicios mediante extremos con direcciones IP internas en la red de VPC.

En este documento, se explica cómo usar los extremos de Private Service Connect para conectarse a servicios administrados compatibles en otra red de VPC. Puedes conectarte a tus propios servicios o a los que proporcionan otros productores de servicios. Consulta servicios administrados públicos para obtener más información.

Roles

La siguiente función de IAM proporciona los permisos necesarios para realizar las tareas de esta guía.

Tarea Funciones
Crear un extremo de Private Service Connect Ambos roles:
Administrador de red de Compute (roles/compute.networkAdmin) y
Directorio de servicios Editor (roles/servicedirectory.editor)
Configura entradas de DNS de forma manual o automática para un extremo de Private Service Connect Administrador de DNS(roles/dns.admin)

Antes de comenzar

  • Debes habilitar la API de Compute Engine en tu proyecto.

  • Debes habilitar la API de Directorio de servicios en tu proyecto.

  • Debes habilitar la API de Cloud DNS en tu proyecto.

  • Las reglas de firewall de salida deben permitir el tráfico a la dirección IP interna del extremo de Private Service Connect. La regla de firewall implícita de permiso de salida permite la salida a cualquier dirección IP de destino.

    Si creaste reglas de firewall de denegación de salida en la red de VPC o si creaste políticas de firewall jerárquicas que modifican el comportamiento de salida permitido, el acceso al extremo podría verse afectado. Crea una política o regla de firewall de permiso de salida específicas para permitir el tráfico al destino de la dirección IP interna del extremo del servicio.

  • Debes tener el URI del adjunto del servicio para el servicio. Por ejemplo, projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

  • Si creas un extremo de Private Service Connect en un proyecto protegido por un perímetro de Controles del servicio de VPC que restringe compute.googleapis.com, servicedirectory.googleapis.com o dns.googleapis.com, se necesita una configuración adicional. Debes crear reglas de entrada y salida para los Controles del servicio de VPC antes de crear el extremo. A fin de obtener más información, consulta Configura las reglas de entrada y salida para los Controles del servicio de VPC.

Limitaciones

  • No se puede acceder a los extremos de Private Service Connect desde redes de VPC con intercambio de tráfico.

  • No puedes enviar solicitudes desde un entorno local conectado a una VPC mediante túneles de Cloud VPN o adjuntos de Cloud Interconnect (VLAN) a un extremo de Private Service Connect que se usa para acceder a los servicios en otra red de VPC.

    Para obtener información sobre cómo acceder a los extremos de Private Service Connect desde entornos locales que están conectados mediante Cloud VPN, consulta Usa Private Service Connect desde hosts locales.

  • Duplicación de paquetes no puede duplicar paquetes para el tráfico de servicios publicados de Private Service Connect.

Configuración de DNS automática

Si están presentes las siguientes configuraciones, las entradas DNS se crean automáticamente para los extremos de Private Service Connect:

  • El productor de servicios configuró un nombre de dominio para el servicio.

  • El extremo de Private Service Connect se registra con un espacio de nombres del Directorio de servicios.

    Todos los extremos nuevos se registran de forma automática con el Directorio de servicios, pero es posible que los extremos más antiguos no se registren.

Si ambas configuraciones están presentes, cuando se crea el extremo de Private Service Connect, se crea una zona de DNS del Directorio de servicios con el nombre NAMESPACE--REGION. En esta zona privada, se almacenan entradas de DNS para servicios que se encuentran en el espacio de nombres NAMESPACE del Directorio de servicios, en la región REGION.

Configuración de DNS automática para los extremos de Private Service Connect mediante el Directorio de servicios (haz clic para ampliar)

Después de crear el extremo de Private Service Connect, puedes verificar si se crea una zona DNS de Directorio de servicios. Si la zona DNS del Directorio de servicios no se crea, puedes crear una configuración similar de forma manual. Para obtener más información, consulta Visualiza las zonas de DNS del Directorio de servicios.

Si no quieres que se creen estas entradas de DNS, realiza una de las siguientes acciones:

  • Si no usas Cloud DNS con otro propósito, inhabilita la API de Cloud DNS o quita los permisos necesarios para Cloud DNS.

  • Espera a que se cree la zona DNS y, luego, borra la zona DNS de forma manual.

    Si quieres configurar DNS de forma manual, consulta Configura DNS de forma manual.

Crear un extremo de Private Service Connect

Un extremo de Private Service Connect se conecta a servicios de otra red de VPC mediante una regla de reenvío de Private Service Connect. Cada regla de reenvío se tiene en cuenta para la cuota por proyecto de las reglas de reenvío de Private Service Connect a fin de acceder a los servicios en otra red de VPC.

Cuando usas Private Service Connect para conectarte a servicios en otra red de VPC, debes elegir una dirección IP de una subred en tu red de VPC.

La dirección IP debe estar en la misma región que el adjunto de servicio del productor del servicio. La dirección IP se considera dentro de la cuota del proyecto para las direcciones IP internas.

Cuando creas un extremo de Private Service Connect, este se registra automáticamente con el Directorio de servicios mediante el espacio de nombres que elijas o el predeterminado, goog-psc-default.

Console

  1. En Google Cloud Console, ve a Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

  3. Haz clic en Conectar extremo.

  4. En Destino, selecciona Servicio publicado.

  5. En Servicio de destino, ingresa el URI del adjunto de servicio al que deseas conectarte.

    El URI del adjunto de servicio tiene el siguiente formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

  6. En Nombre del extremo, ingresa un nombre para usar en el extremo.

  7. Selecciona una red para el extremo.

  8. Selecciona una subred para el extremo.

  9. Selecciona una dirección IP para el extremo. Si necesitas una dirección IP nueva, puedes crear una:

    1. Haz clic en el menú desplegable Dirección IP y selecciona Crear dirección IP.
    2. Ingresa un nombre y una descripción para la dirección IP.
    3. En Dirección IP estática, selecciona Asignar de forma automática o Permitirme elegir.

      Si seleccionaste Permitirme elegir, ingresa la dirección IP personalizada que deseas usar.

    4. Haga clic en Reservar.

  10. Selecciona un espacio de nombres de la lista desplegable o crea un espacio de nombres nuevo.

    La región se propaga en función de la subred seleccionada.

  11. Haz clic en Agregar extremo.

gcloud

  1. Reserva una dirección IP interna para asignarla al extremo.

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --subnet=SUBNET
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: nombre que se asignará a la dirección IP reservada.

    • REGION: Es la región de la dirección IP del extremo. Debe ser la misma región que contiene el adjunto del servicio del productor de servicios.

    • SUBNET: Es el nombre de la subred para la dirección IP del extremo.

  2. Busca la dirección IP reservada.

    gcloud compute addresses list --filter="name=ADDRESS_NAME"
    
  3. Crea una regla de reenvío para conectar el extremo al adjunto de servicio del productor de servicios.

    gcloud compute forwarding-rules create ENDPOINT_NAME \
        --region=REGION \
        --network=NETWORK_NAME \
        --address=ADDRESS_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT \
        [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
    

    Reemplaza lo siguiente:

    • ENDPOINT_NAME: nombre que se asignará al extremo.

    • REGION: Es la región para el extremo. Debe ser la misma región que contiene el adjunto del servicio del productor de servicios.

    • NETWORK_NAME: nombre de la red de VPC para el extremo.

    • ADDRESS_NAME: Es el nombre de la dirección reservada.

    • SERVICE_ATTACHMENT: Es el URI del adjunto del servicio del productor de servicios. Por ejemplo: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • PROJECT_ID: el ID de tu proyecto

    • NAMESPACE: El espacio de nombres del Directorio de servicios que deseas usar. Especificar un espacio de nombres que no existe crea el espacio de nombres.

      Si omites la marca --service-directory-registration, se usa el espacio de nombres predeterminado de goog-psc-default.

API

  1. Reserva una dirección IP interna para asignarla al extremo.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/region/REGION/addresses
    
    {
      "name": ADDRESS_NAME,
      "addressType": "INTERNAL",
      "subnetwork": SUBNET_URI
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto

    • ADDRESS_NAME: nombre que se asignará a la dirección IP reservada.

    • SUBNET_URI: la subred de la dirección IP. Usa el método subnetworks.list o gcloud compute networks subnets list --uri para encontrar las URL de tus redes.

  2. Crea una regla de reenvío para conectar el extremo a los servicios y las API de Google.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
    {
      "name": ENDPOINT_NAME,
      "IPAddress": ADDRESS_URI,
      "target": SERVICE_ATTACHMENT,
      "network": NETWORK_URI,
      "serviceDirectoryRegistrations": [
          {
              "namespace": NAMESPACE,
          }
      ],
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID de tu proyecto

    • REGION: Es la región para el extremo.

    • ENDPOINT_NAME: nombre que se asignará al extremo.

    • ADDRESS_URI: URI de la dirección reservada en la red asociada. Usa el método addresses.list o gcloud compute addresses list --uri para encontrar la URL de la dirección reservada.

    • SERVICE_ATTACHMENT: Es el URI del adjunto del servicio del productor de servicios. Por ejemplo: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • NETWORK_URI: red de VPC para el extremo. Usa el método network.list o gcloud compute networks list --uri para encontrar el URI de tu red.

    • NAMESPACE: es el espacio de nombres para el extremo. Especificar un espacio de nombres que no existe, crea el espacio de nombres. Si omites el campo namespace, se asigna el espacio de nombres predeterminado de goog-psc-default.

Configura las reglas de entrada y salida para los Controles del servicio de VPC

Si creas un extremo de Private Service Connect en un proyecto protegido por un perímetro de Controles del servicio de VPC que restringe compute.googleapis.com, servicedirectory.googleapis.com o dns.googleapis.com, se necesita una configuración adicional. Antes de crear un extremo de Private Service Connect, pídele la siguiente información al productor de servicios:

  • PRODUCER_PROJECT_NUMBER: es el número del proyecto que contiene el adjunto del servicio.

  • PRODUCER_SERVICE_ACCOUNT (opcional): es el nombre de la cuenta de servicio que creó el adjunto de servicio si deseas configurar una regla de entrada que restrinja el acceso por cuenta.

Usa esta información para crear reglas de entrada y salida a fin de permitir que se establezca la conexión entre el extremo de Private Service Connect y el adjunto del servicio.

Para obtener información sobre la configuración de las reglas de entrada y salida, consulta Configura políticas de entrada y salida.

  1. Configura una regla de salida que permita la salida del proyecto de consumidor al proyecto de productor PRODUCER_PROJECT_NUMBER.

    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - serviceName: 'compute.googleapis.com'
          methodSelectors:
          - method: 'ServiceAttachmentsService.Insert'
          - method: 'ServiceAttachmentsService.Patch'
          - method: 'RegionForwardingRulesService.Insert'
        - serviceName: 'servicedirectory.googleapis.com'
          methodSelectors:
          - method: '*'
        - serviceName: 'dns.googleapis.com'
          methodSelectors:
          - method: '*'
        resources:
        - 'projects/PRODUCER_PROJECT_NUMBER'
    
  2. Crea una de las siguientes reglas de entrada.

    • Esta regla de entrada de ejemplo permite que el productor de servicios actualice un adjunto de servicio que creó PRODUCER_SERVICE_ACCOUNT para agregar tu proyecto a la lista de aceptación.

      - ingressFrom:
          sources:
          - accessLevel: '*' # All Sources
          identities: serviceAccount: PRODUCER_SERVICE_ACCOUNT
        ingressTo:
          operations:
          - serviceName: 'compute.googleapis.com'
            methodSelectors:
            - method: 'ServiceAttachmentsService.Patch'
          - serviceName: 'servicedirectory.googleapis.com'
            methodSelectors:
            - method: '*'
          - serviceName: 'dns.googleapis.com'
            methodSelectors:
            - method: '*'
          resources:
          - '*'
      
    • Esta regla de entrada de ejemplo permite que el productor de servicios actualice un adjunto de servicio que creó cualquier cuenta para agregar tu proyecto a la lista de aceptación.

      - ingressFrom:
          sources:
          - accessLevel: '*' # All Sources
          identityType: ANY_IDENTITY
        ingressTo:
          operations:
          - serviceName: 'compute.googleapis.com'
            methodSelectors:
            - method: 'ServiceAttachmentsService.Patch'
          - serviceName: 'servicedirectory.googleapis.com'
            methodSelectors:
            - method: '*'
          - serviceName: 'dns.googleapis.com'
            methodSelectors:
            - method: '*'
          resources:
          - '*'
      

Después de configurar las reglas de entrada y salida, puedes crear un extremo de Private Service Connect que se conecte a un adjunto de servicio en el proyecto PRODUCER_PROJECT_NUMBER.

Visualiza las zonas DNS del Directorio de servicios

Si se cumplen los requisitos para la configuración de DNS automática, se crea una zona DNS con un nombre en el formato NAMESPACE--REGION.

Console

  1. En Cloud Console, ve a la página Zonas de Cloud DNS.

    Ir a Zonas de Cloud DNS

  2. Busca una zona privada con el nombre NAMESPACE--REGION.

gcloud

  • Ejecuta el siguiente comando para mostrar todas las zonas DNS privadas:

    gcloud dns managed-zones list \
        --filter="visibility=private"
    
  • Ejecuta el siguiente comando para obtener detalles de una zona con el nombre NAMESPACE--REGION.

    gcloud dns managed-zones describe NAMESPACE--REGION
    

Si la zona no está presente, consulta los detalles del extremo de Private Service Connect y verifica si la configuración del extremo incluye un valor para el espacio de nombres.

Enumerar extremos

Puedes enumerar todos los extremos configurados de Private Service Connect.

Console

  1. En Google Cloud Console, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

    Se muestran los extremos de Private Service Connect.

gcloud

gcloud compute forwarding-rules list  \
    --filter 'target~serviceAttachments'

El resultado es similar al siguiente:

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          REGION/serviceAttachments/SERVICE_NAME

API

Esta llamada a la API muestra todas las reglas de reenvío, no solo los extremos de Private Service Connect que se usan para acceder a los servicios.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules

Reemplaza lo siguiente:

  • PROJECT_ID: proyecto que contiene el extremo.
  • REGION: Es la región para el extremo.

Ver detalles del extremo

Puedes ver todos los detalles de configuración de un extremo de Private Service Connect.

El extremo puede tener uno de los siguientes estados:

  • Pendiente: El extremo está configurado para conectarse a un servicio que requiere aprobación y aún no se ha aprobado a este proyecto.

  • Aceptado: El extremo se encuentra en un proyecto que está aprobado para conectarse al servicio.

  • Rechazado: El extremo está en un proyecto que no tiene permiso para conectarse al servicio.

  • Cerrado: El extremo está conectado a un adjunto de servicio que se borró.

Console

  1. En Google Cloud Console, ve a la página Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

  3. Haz clic en el servicio que deseas ver.

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --region=REGION

Reemplaza lo siguiente:

  • ENDPOINT_NAME: El nombre del extremo.
  • REGION: Es la región para el extremo.

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: proyecto que contiene el extremo.
  • REGION: Es la región para el extremo.
  • ENDPOINT_NAME: El nombre del extremo.

Etiqueta un extremo

Puedes administrar etiquetas para los extremos de Private Service Connect. Consulta cómo etiquetar recursos para obtener más información.

Borra un extremo

Puedes borrar un extremo de Private Service Connect.

Sin embargo, las siguientes configuraciones del Directorio de servicios no se borran cuando borras el extremo:

  • Espacio de nombres del Directorio de servicios
  • Zona del DNS del Directorio de servicios

Otros servicios pueden usar el espacio de nombres del Directorio de servicios y la zona DNS del Directorio de servicios. Verifica que el espacio de nombres esté vacío antes de borrar el espacio de nombres del Directorio de servicios o borrar la zona DNS del Directorio de servicios.

Console

  1. En Google Cloud Console, ve a Private Service Connect.

    Ir a Private Service Connect

  2. Haz clic en la pestaña Extremos conectados.

  3. Selecciona el extremo de Private Service Connect que deseas borrar y haz clic en Borrar.

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --region=REGION

Reemplaza lo siguiente:

  • ENDPOINT_NAME: El nombre del extremo.
  • REGION: Es la región para el extremo.

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: proyecto que contiene el extremo.
  • REGION: Es la región para el extremo.
  • ENDPOINT_NAME: El nombre del extremo.

Otras formas de configurar DNS

Si no se cumplen los requisitos para la configuración automática de DNS, puedes crear entradas de DNS de otras maneras:

Configura una zona DNS del Directorio de servicios

Si un extremo de Private Service Connect se registra con el Directorio de servicios, pero el servicio publicado con el que se conecta no tiene configurado un nombre de dominio, no se realizan cambios de DNS.

Si deseas replicar la configuración automática de DNS, puedes configurar de forma manual una zona DNS del Directorio de servicios respaldada por el espacio de nombres del Directorio de servicios. Después de crear la zona, se crean automáticamente entradas de DNS para el extremo de Private Service Connect.

Crea una zona DNS del directorio del servicio con la siguiente configuración:

  • Nombre de la zona: Especifica NAMESPACE--REGION, en la que NAMESPACE es el espacio de nombres en el que está registrado el extremo de Private Service Connect y REGION es la región en la que se crea el extremo.

  • Nombre de DNS: Es el dominio DNS que el productor de servicios usa para sus servicios publicados. Consulta esta información con el productor de servicios.

    El nombre del DNS puede tener el formato REGION.p.DOMAIN. Por ejemplo, si el dominio público del productor de servicios es example.com y su servicio publicado está en us-west1, recomendamos que habiliten la disponibilidad de su servicio mediante los nombres de dominio us-west1.p.example.com. Incluye un punto final, por ejemplo, us-west1.p.example.com..

  • Espacio de nombres del Directorio de servicios: El espacio de nombres que configuraste para este extremo.

Consulta los detalles del extremo de Private Service Connect para encontrar el espacio de nombres y la región del Directorio de servicios.

Mediante esta configuración, si configuraste una zona del DNS del Directorio de servicios con el nombre DNS us-west1.p.example.com y creas un extremo de Private Service Connect llamado analytics, se crea automáticamente un registro DNS para analytics.us-west1.p.example.com.

Registra un extremo de Private Service Connect con el Directorio de servicios

Los extremos nuevos de Private Service Connect se registran automáticamente en el Directorio de servicios. Sin embargo, si se creó un extremo de Private Service Connect antes de que se habilitara el registro automático con el Directorio de servicios, es posible que falte esta configuración.

Puedes borrar el extremo de Private Service Connect y crear uno nuevo, que se registra con el Directorio de servicios de forma automática.

También puedes seguir estos pasos para registrar una extremo de Private Service Connect existente con un espacio de nombres del Directorio de servicios.

  1. Crea un espacio de nombres del Directorio de servicios para el extremo de Private Service Connect, NAMESPACE.

  2. Crea un servicio del Directorio de servicios para el extremo de Private Service Connect, SERVICE_NAME.

    En el servicio, usa el mismo nombre que el de la regla de reenvío que se usa para el extremo de Private Service Connect, ENDPOINT_NAME.

  3. Crea un extremo de Directorio de servicios con el nombre default y usa la dirección IP y el puerto (443) del extremo de Private Service Connect.

Después de registrar el extremo de Private Service Connect en el Directorio de servicios, sigue las instrucciones para configurar una zona DNS del Directorio de servicios.

Configura DNS de forma manual

Si impediste la configuración automática de DNS o si no está habilitada en tu configuración, puedes usar Cloud DNS para crear registros DNS de forma manual.

Si deseas obtener más información, consulta las siguientes páginas:

  • Control de acceso: El rol de administrador de DNS (roles/dns.admin) proporciona los permisos necesarios para crear zonas y registros DNS.

  • Crea una zona privada.

    • Cuando configuras una zona privada, debes proporcionar un nombre de DNS. Usa el dominio DNS que el productor de servicios usa para sus servicios publicados. Consulta esta información con el productor de servicios.

      Puede tener este formato: REGION.p.DOMAIN. Por ejemplo, si el dominio público del productor de servicios es example.com y su servicio publicado está en us-west1, recomendamos que habiliten la disponibilidad de su servicio mediante los nombres de dominio us-west1.p.example.com.

  • Agrega un registro,

Logging

Puedes habilitar los registros de flujo de VPC en las subredes que contengan VM que accedan a servicios en otra red de VPC mediante extremos de Private Service Connect. Los registros muestran los flujos entre las VM y el extremo de Private Service Connect.

Usa Private Service Connect desde hosts locales

Si tu red local está conectada a una red de VPC, puedes acceder a los servicios publicados de Private Service Connect desde los hosts locales con la dirección IP interna del extremo de Private Service Connect.

  • Tu red local debe estar conectada a una red de VPC mediante túneles de Cloud VPN, en la misma región donde se encuentra el extremo de Private Service Connect.

  • El extremo de Private Service Connect está en la red de VPC que está conectada a tu red local.

  • Si deseas acceder al extremo de Private Service Connect mediante su nombre de DNS, debes configurar sistemas locales para que puedan realizar consultas en tus zonas de DNS privadas.

    Si implementaste las zonas de DNS privadas con Cloud DNS, completa los siguientes pasos:

Soluciona problemas

No se puede crear una zona DNS privada

Cuando creas un extremo de Private Service Connect, se crea una zona DNS del Directorio de servicios. La creación de zonas puede fallar por los siguientes motivos:

  • No habilitaste la API de Cloud DNS en tu proyecto.

  • No tienes los permisos necesarios para crear una zona DNS del Directorio de servicios.

  • Existe una zona DNS con el mismo nombre en esta red de VPC.

  • Ya existe una zona DNS para el mismo nombre de dominio en esta red de VPC.

Para crear manualmente la zona DNS del Directorio de servicios, haz lo siguiente:

  1. Verifica que la API de Cloud DNS esté habilitada en tu proyecto.

  2. Verifica que tengas los permisos necesarios para crear la zona DNS del Directorio de servicios:

    • dns.managedZones.create
    • dns.networks.bindPrivateDNSZone
    • servicedirectory.namespaces.associatePrivateZone
  3. Si hay una zona en conflicto, pero ya no es necesaria, borra la zona DNS.

  4. Crea una zona DNS de Directorio del servicio respaldada por el espacio de nombres del Directorio de servicios asociado con tu extremo de Private Service Connect.