Configure private network access

This page describes how to set up private network access and route traffic within a Google Cloud network.

To set up private network access, you configure three projects:

  • A project that contains a Virtual Private Cloud (VPC) network to be used by the target virtual machine instance (VM) or target internal load balancer.
  • A project that acts as a Service Directory service project.
  • A project for a Google Cloud product with the configuration that invokes private network access. An example of a Google Cloud product that can call endpoints using private network access is Dialogflow CX.

The artifacts of the projects could be in the same project or in different projects.

Before you begin

Before you configure private network access, complete the following steps:

  • For each project, in the Google Cloud console, on the APIs & Services page, click Enable APIs and services to enable the APIs that you want to use, including the Service Directory API.

  • To link your VPC network to on-premises hosts, create a Cloud VPN tunnel or a Cloud Interconnect connection.

  • Ensure that the Google Cloud project is within the VPC Service Controls perimeter of both the network project and the Service Directory project for servicedirectory.googleapis.com.

    Learn more about VPC Service Controls.

Configure the project for the VPC network

To configure the project for the VPC network, follow these steps:

  1. Create a VPC network or select an existing VPC network that has either an IPv4-only or dual-stack subnet in the region you want to use. Legacy networks are not supported.

  2. Create necessary ingress allow firewall rules.

    • If the target is a VM or an internal passthrough Network Load Balancer, firewall rules must permit TCP traffic from the 35.199.192.0/19 range to the ports used by the software running on the target VM instances.

    • If the target is an internal Application Load Balancer or an internal proxy Network Load Balancer, VPC firewall rules and hierarchical firewall policies do not control which protocols and ports are accepted by the load balancer. For internal Application Load Balancer, a Google Cloud Armor security policy can be used to restrict access to your load balancer.

    For more information about the 35.199.192.0/19 range, see Paths for Cloud DNS and Service Directory.

  3. Grant the Identity and Access Management (IAM) Private Service Connect Authorized Service role (roles/servicedirectory.pscAuthorizedService) to the service agent of the Google Cloud product that will call the endpoint.

    For more information about roles and permissions, see Service Directory permissions and roles.

Configure the Service Directory project

To configure the Service Directory project, follow these steps:

  1. In the VPC network, create a VM or an internal load balancer.

  2. Grant the IAM Service Directory Viewer role (roles/servicedirectory.viewer) to the service agent of the Google Cloud product that will call the endpoint.

  3. Create a Service Directory namespace and service. Then, create an endpoint for this service, following the steps in the next section.

Create an endpoint with private network access

To create an endpoint with private network access configured, follow these steps:

Console

  1. In the Google Cloud console, go to the Service Directory namespaces page. Go to Service Directory namespaces
  2. Click a namespace.
  3. Click a service.
  4. Click Add endpoint.
  5. For Endpoint name, enter a name for the endpoint.
  6. For IP address, enter an IPv4 address, such as 192.0.2.0.
  7. For Port, enter a port number, such as 443 or 80.
  8. To enable private network access, in Associated VPC network, select the required option:
    • To choose from a list of available networks, click Choose from the list, and then select the network.
    • To specify a project and a network, click Specify by a project and network name, and then enter the project number and the network name.
  9. Click Create.

gcloud

Use the gcloud service-directory endpoints create command with the project ID and the network path specified.

gcloud service-directory endpoints create ENDPOINT_NAME \
--project=PROJECT_ID \
--location=REGION \
--namespace=NAMESPACE_NAME \
--service=SERVICE_ID \
--address=IP_ADDRESS \
--port=PORT_NUMBER \
--network=NETWORK_PATH

Replace the following:

  • ENDPOINT_NAME: a name for the endpoint that you're creating in your service, such as my-endpoint
  • PROJECT_ID: the ID of the project
  • REGION: the Google Cloud region that contains the namespace
  • NAMESPACE_NAME: the name that you gave the namespace, such as my-namespace
  • SERVICE_ID: the ID of the service
  • IP_ADDRESS: the IP address of the endpoint, such as 192.0.2.0
  • PORT_NUMBER: the ports that the endpoints are running on, typically 443 or 80
  • NETWORK_PATH: the URL to the network, such as projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME

Configure the Google Cloud product project

To configure the Google Cloud product project, follow these steps:

  1. Enable the Google Cloud product API.

  2. Configure your Google Cloud product to call the Service Directory service that you created. The required steps depend on the specific Google Cloud product.

Use cases

This section provides example use cases for configuring private network access.

Call an HTTP endpoint when a VPC network, a VM, and Service Directory are in the same project

In this use case, you set up Dialogflow CX, a Google Cloud product for natural language processing, to call an HTTP endpoint on your VM. While calling the endpoint, ensure that the traffic doesn't transition over the public internet.

In this use case, you create the following artifacts in the same project:

  • A VPC network
  • A VM
  • A Service Directory service
  • Dialogflow CX

Figure 1 shows how you can allow a Google service configuration of a project to egress to a VM. The VM resides in a VPC network of the project.

Allow a Google service configuration of a project to egress to a network project VM.
Figure 1. Allow a Google service configuration of a project to egress to a VM (click to enlarge).

Set up your network and target network

  1. Create a project, such as myproject.
  2. Create a VPC network, such as vpc-1.

    While creating the VPC network, in Subnet creation mode, select Automatic.

  3. Create a firewall rule, such as firewall-1.

    While creating the firewall rule, enter or select the following values:

    • For Network, select vpc-1.
    • For Source IPv4 ranges, enter 35.199.192.0/19.
    • For Protocols and ports, select TCP and enter 443 or 80.
  4. In the us-central1 region, create a VM, such as vm-1.

    While creating the VM, enter or select the following values:

    • For