Configura el acceso privado a los servicios

En esta página, se describe cómo configurar el acceso privado a los servicios en la red de VPC.

El acceso privado a los servicios se implementa como una conexión de intercambio de tráfico de VPCentre tu red de VPC y la red de VPC de los servicios de Google subyacente en la que reside la instancia de Cloud SQL. La conexión privada permite que las instancias de VM en la red de VPC y los servicios a los que accedes se comuniquen de forma exclusiva mediante direcciones IP internas. Las instancias de VM no necesitan acceso a Internet o direcciones IP externas para alcanzar los servicios que están disponibles a través del acceso privado a los servicios.

Antes de comenzar

Cloud SQL requiere acceso privado a servicios para cada red de VPC que se usa en conexiones IP privadas.

Para administrar una conexión de acceso a servicios privados, el usuario debe tener los siguientes permisos de IAM. Si no cuentas con los permisos necesarios, puedes recibir errores de permisos insuficientes.

  • compute.networks.list
  • compute.addresses.create
  • compute.addresses.list
  • servicenetworking.services.addPeering

Si usas una red de VPC compartida, también debes agregar el usuario al proyecto host y asignarle los mismos permisos al usuario en el proyecto host.

Configura el acceso privado a servicios para Cloud SQL

El proceso de configuración del acceso privado a servicios se conforma por las siguientes partes:

  • Selecciona un existente o asigna un nuevo rango de direcciones IP.

    También tienes la opción de permitir que Google asigne el rango por ti. En este caso, Google asignará un rango de IP automáticamente con una longitud de prefijo /20 y usará el nombre default-ip-range.

    Si vas a crear instancias en varias regiones o para diferentes tipos de bases de datos, se recomienda un rango de /20 o superior.

  • Creación de una conexión privada desde la red de VPC hacia la red del productor de servicios

Asigna un rango de direcciones IP

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
  2. Selecciona la red de VPC que deseas usar.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. Selecciona la pestaña Rangos de IP asignados para los servicios.
  5. Haz clic en Asigna rangos de IP.
  6. Para el Nombre del rango asignado, especifica google-managed-services-VPC_NETWORK_NAME, en el que VPC_NETWORK_NAME es el nombre de la red de VPC que conectas (por ejemplo, google-managed-services-default). La Descripción es opcional.
  7. Selecciona la opción Personalizado y, luego, ingresa el rango de direcciones IP que se asignará, en notación CIDR.
  8. Haz clic en Asignar para crear un rango asignado.

gcloud

Realiza una de las acciones siguientes:

  • Para especificar un rango de direcciones y una longitud de prefijo (máscara de subred), usa las marcas addresses y prefix-length. Por ejemplo, a fin de asignar el bloque CIDR 192.168.0.0/16, especifica 192.168.0.0 para la dirección y 16 como la longitud de prefijo.

    gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --network=[VPC_NETWORK_NAME]
    
  • Para especificar solo una longitud de prefijo (máscara de subred), usa la marca prefix-length. Cuando omites el rango de direcciones, Google Cloud selecciona de forma automática un rango de direcciones sin usar en tu red de VPC. En el siguiente ejemplo, se selecciona un rango de direcciones IP sin usar con una longitud de prefijo de 16 bits.

    gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --network=[VPC_NETWORK_NAME]
    

Reemplaza [VPC_NETWORK_NAME] por el nombre de tu red de VPC, como my-vpc-network.

En el siguiente ejemplo, se asigna un rango de IP que permite que los recursos en la red de VPC my-vpc-network se conecten a instancias de Cloud SQL mediante una IP privada.

gcloud compute addresses create google-managed-services-my-vpc-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --network=my-vpc-network \
    --project=my-project

Crea una conexión privada

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
  2. Selecciona la red de VPC que deseas usar.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. Selecciona la pestaña Conexiones privadas a servicios.
  5. Haz clic en Crear una conexión para crear una conexión privada entre tu red y un productor de servicios.
  6. Para la Asignación designada, selecciona uno o más rangos asignados existentes que no estén siendo usados por otros productores de servicios.
  7. Haz clic en Conectar para crear la conexión.

gcloud

  1. Crea una conexión privada.

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=google-managed-services-[VPC_NETWORK_NAME] \
        --network=[VPC_NETWORK_NAME] \
        --project=[PROJECT_ID]
    

    Reemplaza [VPC_NETWORK_NAME] por el nombre de tu red de VPC y [PROJECT_ID] por el ID del proyecto que contiene tu red de VPC.

    El comando inicia una operación de instancia de Cloud SQL de larga duración y muestra un nombre de operación.

  2. Verifica si la operación se realizó correctamente.

    gcloud services vpc-peerings operations describe \
        --name=[OPERATION_NAME]
    

    Reemplaza [OPERATION_NAME] por el nombre de la operación que se mostró en el paso anterior.

Puedes especificar más de un rango asignado cuando creas una conexión privada. Por ejemplo, si se agotó un rango, puedes asignar rangos adicionales. El servicio usa direcciones IP de todos los rangos proporcionados, en el orden que especificaste.

Cambia la configuración del acceso privado a servicios

Puedes cambiar el rango de direcciones asignado de una conexión privada de servicios sin modificar ninguna instancia de Cloud SQL existente. Para cambiar la dirección IP privada de una instancia de Cloud SQL existente, sigue estos pasos.

Para cambiar el rango de direcciones asignado, realiza las siguientes acciones:

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
  2. Selecciona la red de VPC que deseas usar.
  3. Selecciona la pestaña Conexión privada a servicios.
  4. Selecciona la pestaña Rangos de IP asignados a servicios.
  5. Selecciona el nombre del rango que deseas borrar.
  6. Haz clic en Liberar.
  7. Haz clic en Asigna rangos de IP.
  8. Crea un rango nuevo con el mismo nombre y rango nuevo.

    El nombre es importante porque la conexión privada ya se estableció con ese nombre de dirección.

Cambia la dirección IP privada de una instancia de Cloud SQL existente

Para cambiar la dirección IP privada de una instancia de Cloud SQL existente, debes moverla a una red de VPC temporal; luego, cambia la configuración de acceso privado a los servicios y vuelve a mover la instancia de Cloud SQL.

Para trasladar a una red de VPC diferente, sigue el último paso, excepto el paso que se muestra a continuación (traslada la instancia). La [TEMPORARY_VPC_NETWORK_NAME] es la nueva red de VPC en este caso. Además, borra la conexión privada anterior. La conexión privada borrada puede tardar unos días en desaparecer de Google Cloud Console.

Console

  1. Ve a la página Redes de VPC en Google Cloud Console.
  2. Crea una red de VPC temporal.
  3. Mueve la instancia de Cloud SQL a la red de VPC temporal.
    gcloud --project=[PROJECT_ID] beta sql instances patch [INSTANCE_ID]
    --network=[TEMPORARY_VPC_NETWORK_NAME] --no-assign-ip
  4. Cambia la configuración del acceso privado a servicios
  5. Mueve la instancia de Cloud SQL a la red de VPC original.
    gcloud --project=[PROJECT_ID] beta sql instances patch [INSTANCE_ID]
    --network=[ORIGINAL_VPC_NETWORK_NAME] --no-assign-ip