Criar e gerenciar interfaces do Private Service Connect

Nesta página, descrevemos como os administradores de rede do produtor podem criar e gerenciar interfaces do Private Service Connect. As interfaces do Private Service Connect permitem que redes de nuvem privada virtual (VPC) do produtor de serviços iniciem conexões com redes VPC do consumidor.

Antes de começar

Papéis

Para receber as permissões necessárias para criar interfaces do Private Service Connect, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

O papel Administrador da instância do Compute (v1) contém a permissão compute.instances.pscInterfaceCreate, que é necessária para criar interfaces do Private Service Connect.

Criar e configurar uma interface do Private Service Connect

Para criar e configurar uma máquina virtual (VM) que tenha uma interface de Private Service Connect, conclua as etapas a seguir.

Criar uma VM com uma interface do Private Service Connect

Ao criar uma interface do Private Service Connect, você cria uma VM que tem pelo menos duas interfaces de rede. A primeira interface se conecta a uma sub-rede de produtor. A segunda é uma interface do Private Service Connect que solicita uma conexão com um anexo de rede em uma rede de consumidor.

Se a conexão for aceita, o Google Cloud atribuirá à interface do Private Service Connect um endereço IP interno da sub-rede que é especificado pelo anexo de rede.

Se você criar uma interface do Private Service Connect que se refere a um anexo de rede configurado para aceitar conexões manualmente e o projeto da interface não estiver na lista de aceitação do anexo de rede, a criação da VM da interface do Private Service Connect falhará. Nesse caso, trabalhe com a organização do consumidor para adicionar seu projeto à lista de aceitações e crie uma interface do Private Service Connect.

Ao criar uma interface do Private Service Connect, é possível atribuir a ela um ou mais intervalos de IP de alias internos. Se você planeja atribuir intervalos de IP do alias, entre em contato com a organização do consumidor para determinar os intervalos de endereços IP apropriados.

Para atribuir um intervalo de IP do alias, especifique o tamanho do prefixo do intervalo na notação CIDR. Quando você atribui um ou mais intervalos de IP de alias a uma interface do Private Service Connect, o Google Cloud aloca os intervalos de IP do alias do intervalo de endereços IP principal da sub-rede associada ao anexo de rede. , O endereço IP principal da interface do Private Service Connect é alocado de fora de qualquer intervalo de IP do alias. Se não houver endereços IP suficientes na sub-rede do anexo de rede para alocar o endereço IP principal e os intervalos de IP do alias, a criação da VM da interface do Private Service Connect falhará. É possível encontrar os endereços IP específicos atribuídos descrevendo a VM da interface.

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Digite um Nome.

  4. Selecione uma Região que corresponda à região do anexo de rede a que você quer se conectar.

  5. Selecione uma Zona.

  6. Clique em Opções avançadas.

  7. Clique em Rede.

  8. Na seção Interfaces de rede, clique na primeira interface de rede, que é a principal, e faça o seguinte:

    1. Selecione uma Rede para a interface de rede principal.
    2. Selecione uma Sub-rede para a interface de rede principal. Essa sub-rede precisa estar na mesma região que o anexo de rede da interface do Private Service Connect.
  9. Clique em Adicionar uma interface de rede.

  10. Em Tipo de interface, selecione Private Service Connect.

  11. Insira um URL de anexo de rede.

  12. Selecione um tipo de pilha de IP. Para criar uma interface do Private Service Connect de pilha dupla, a sub-rede do anexo de rede precisa ser de pilha dupla.

  13. Opcional: para adicionar um intervalo de IP do alias, na caixa Comprimento do prefixo, digite o tamanho do prefixo, por exemplo, /30. Para adicionar vários intervalos de IP do alias, clique em Adicionar intervalo de IP e insira o tamanho do prefixo de cada intervalo de IP do alias que quiser incluir.

  14. Clique em Concluído.

  15. Clique em Criar.

gcloud

Para criar uma VM com uma interface do Private Service Connect somente IPv4, use o comando instances create.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME'

Substitua:

  • INSTANCE_NAME: o nome da nova instância.
  • ZONE: a zona da nova instância
  • MACHINE_TYPE: o tipo de máquina da instância, que pode ser predefinido ou personalizado.
  • IMAGE_PROJECT: o projeto da imagem. Por exemplo, se você especificar debian-10-buster-v20230809 como a imagem, especifique debian-cloud como o projeto da imagem. É possível ver uma lista de imagens, projetos de imagens e famílias de imagens disponíveis usando o comando gcloud compute images list.
  • IMAGE: uma versão específica de uma imagem pública. Por exemplo, debian-10-buster-v20230809.
  • PRODUCER_NETWORK: a rede da instância.
  • PRODUCER_SUBNET: a sub-rede da interface de rede principal da VM. Essa sub-rede precisa estar na mesma região que o anexo de rede da interface do Private Service Connect.
  • CONSUMER_PROJECT_ID: o ID do consumidor ao qual você quer se conectar.
  • ATTACHMENT_NAME: o nome do anexo de rede para solicitar uma conexão.

Para atribuir um endereço IPv4 e um IPv6 à interface do Private Service Connect, especifique stack-type='IPV4_IPv6'. O anexo de rede a que a interface se refere precisa estar associado a uma sub-rede de pilha dupla.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,stack-type='IPV4_IPV6''

Para atribuir à interface do Private Service Connect um ou mais intervalos de IP de alias, especifique o tamanho do prefixo de cada intervalo de IP do alias que você quer atribuir:

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,aliases=ALIAS_IP_RANGE'

Substitua ALIAS_IP_RANGE por um ou mais comprimentos de prefixo na notação CIDR. É possível incluir vários comprimentos de prefixo em uma lista separada por ponto e vírgula, por exemplo, /24;/28.

API

Para criar uma VM com uma interface do Private Service Connect somente IPv4, envie uma solicitação POST para o método instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME"
    }
  ]
}

Substitua:

  • PRODUCER_PROJECT_ID: o ID do projeto do produtor.
  • INSTANCE_ZONE: a zona da nova instância.
  • MACHINE_TYPE_ZONE: a zona do tipo de máquina;
  • MACHINE_TYPE: o tipo de máquina da nova VM, que pode ser predefinida ou personalizada.
  • VM_NAME: o nome da nova VM.
  • IMAGE_PROJECT: o projeto que contém a imagem. Por exemplo, se você especificar debian-10-buster-v20200309 como a imagem, especifique debian-cloud como o projeto da imagem.
  • IMAGE: uma versão específica de uma imagem pública. Por exemplo, debian-10-buster-v20200309
  • PRODUCER_PROJECT_ID: o ID do projeto da interface.
  • PRODUCER_NETWORK: o nome da rede VPC do produtor
  • SUBNET_REGION: a região da sub-rede da interface de rede principal. Essa sub-rede precisa estar na mesma região que o anexo de rede da interface do Private Service Connect.
  • SUBNET: o nome da sub-rede da interface de rede principal.
  • CONSUMER_PROJECT_ID: o ID do projeto do consumidor.
  • ATTACHMENT_REGION: a região do anexo de rede.
  • ATTACHMENT_NAME: o nome do anexo de rede.

Para atribuir um endereço IPv4 e um IPv6 à interface do Private Service Connect, especifique "stack-type": "IPV4_IPv6". O anexo de rede a que a interface se refere precisa estar associado a uma sub-rede de pilha dupla.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME",
      "stackType": "IPV4_IPV6"
    }
  ]
}

Para atribuir à interface do Private Service Connect um ou mais intervalos de IP de alias, especifique o tamanho do prefixo de cada intervalo de IP do alias que você quer atribuir.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "ALIAS_IP_RANGE"
        }
      ],
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME"
    }
  ]
}

Substitua ALIAS_IP_RANGE por um tamanho de prefixo na notação CIDR, por exemplo, /28. É possível especificar vários intervalos de IP de alias na lista de aliasIpRanges da seguinte forma:

"aliasIpRanges": [
  {
    "ipCidrRange": "/28"
  },
  {
    "ipCidrRange": "/30"
  }
]

Para mais informações sobre como criar instâncias de VM, consulte Criar e iniciar uma instância de VM.

Permitir conectividade SSH

Verifique se as regras de firewall estão configuradas para permitir conexões SSH de entrada com a VM da interface do Private Service Connect.

Encontrar o nome do Google Cloud da sua interface do Private Service Connect

Para configurar o roteamento, você precisa saber o nome do Google Cloud da sua interface do Private Service Connect.

Console

  1. No console do Google Cloud, acesse Instâncias de VM.

    Acessar instâncias de VM

  2. Clique no nome da VM que tem a interface do Private Service Connect.

  3. Na seção Interfaces de rede, encontre e anote o nome da interface do Private Service Connect, por exemplo, nic1.

gcloud

  1. Use o comando compute instances describe.

    gcloud compute instances describe VM_NAME
      --zone=ZONE
    

    Substitua:

    • VM_NAME: o nome da VM com a interface do Private Service Connect.
    • ZONE: a zona da VM.
  2. Na saída do comando, localize e anote o nome do Google Cloud da sua interface do Private Service Connect, por exemplo, nic1.

Encontrar o nome do SO convidado da interface do Private Service Connect

Para configurar o roteamento, você precisa saber o nome do SO convidado da interface do Private Service Connect, que é diferente do nome da interface no Google Cloud.

Para encontrar o nome da interface em uma VM do Debian, siga as etapas abaixo. Para VMs com outros sistemas operacionais, consulte a documentação pública do sistema operacional.

  1. Conecte-se à VM da interface do Private Service Connect.
  2. Execute este comando:

    ip address
    

    Na lista de interfaces de rede, localize e anote o nome da interface associado ao endereço IP da interface do Private Service Connect, por exemplo, ens5.

Encontrar o IP do gateway da interface do Private Service Connect

Para configurar o roteamento, você precisa saber o endereço IP do gateway padrão da interface do Private Service Connect.

  1. Conecte-se à VM da interface do Private Service Connect.

  2. Faça a seguinte solicitação GET da VM da interface para o servidor de metadados associado:

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google" && echo
    

    Substitua INTERFACE_NUMBER pela parte numérica do nome do Google Cloud para a interface do Private Service Connect. Por exemplo, se o nome da interface for nic1, use um valor de 1.

Adicionar rotas para sub-redes de consumidores

É necessário adicionar uma rota ao gateway padrão da interface do Private Service Connect para cada sub-rede do consumidor que se conecta à interface do Private Service Connect. Isso garante que o tráfego vinculado à rede do consumidor saia da interface do Private Service Connect.

As etapas a seguir descrevem como atualizar temporariamente a tabela de roteamento de uma VM que usa o sistema operacional Debian. Para atualizar a tabela permanentemente ou para atualizar a rota em um sistema operacional diferente, consulte a documentação pública do sistema operacional.

  1. Conecte-se à VM da interface do Private Service Connect.

  2. Execute o seguinte comando para cada sub-rede de consumidor que se conecta à interface do Private Service Connect:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME
    

    Substitua:

Criar um modelo de instância com uma interface do Private Service Connect

É possível criar modelos de instância que incluem interfaces do Private Service Connect.

Console

  1. Acesse a página Modelos de instância.

    Acesse "Modelos de instância"

  2. Clique em Criar modelo de instância.

  3. Digite um Nome para o modelo de instância.

  4. Clique em Opções avançadas.

  5. Clique em Rede.

  6. Na seção Interfaces de rede, clique na seta .

  7. Selecione uma Rede e uma Sub-rede para a interface de rede principal do modelo de instância.

  8. Clique em Concluído.

  9. Clique em Adicionar uma interface de rede.

  10. Clique em Private Service Connect.

  11. Selecione uma Rede e uma Sub-rede para a interface do Private Service Connect.

  12. Clique em Concluído.

  13. Clique em Criar.

gcloud

Use o comando instance-templates create.

gcloud compute instance-templates create NAME \
    --machine-type=MACHINE_TYPE \
    --network-interface=subnet=SUBNET \
    --region=REGION \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface=network-attachment=projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME

Substitua:

  • NAME: o nome do modelo de instância.
  • MACHINE_TYPE: o tipo de máquina predefinido ou personalizado para VMs criadas usando esse modelo de instância. Por exemplo: (f1-micro)
  • SUBNET: a sub-rede do modelo de instância. Quando você cria uma VM usando esse modelo de instância, a interface de rede principal da VM recebe um endereço IP interno dessa sub-rede.
  • REGION: a região da sub-rede do modelo de instância.
  • IMAGE_PROJECT: o projeto da imagem. Por exemplo, se você especificar debian-10-buster-v20230809 como a imagem, especifique debian-cloud como o projeto da imagem. É possível ver uma lista de imagens, projetos de imagens e famílias de imagens disponíveis usando o comando gcloud compute images list.
  • IMAGE: uma versão específica de uma imagem pública. Por exemplo, debian-10-buster-v20230809.
  • ATTACHMENT_PROJECT_ID: o ID do projeto do anexo de rede.
  • ATTACHMENT_REGION: a região do anexo de rede..
  • ATTACHMENT_NAME: o nome do anexo de rede. Quando você cria uma VM usando esse modelo de instância, a interface do Private Service Connect solicita uma conexão com esse anexo de rede.

    Você pode especificar outras configurações, como o nome da imagem e o tamanho do disco de inicialização. Para mais informações, consulte Criar um novo modelo de instância.

API

Faça uma solicitação POST ao método instanceTemplates.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
{
  "name": "NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
      },
      {
        "networkAttachment": "projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/NETWORK_ATTACHMENT"
      }
    ]
  }
}

Substitua:

  • PROJECT_ID: o ID do projeto em que o modelo de instância será criado.
  • NAME: o nome do modelo de instância.
  • IMAGE_PROJECT: o projeto da imagem. Por exemplo, se você especificar debian-10-buster-v20230809 como a imagem, especifique debian-cloud como o projeto da imagem. Para uma lista de imagens e projetos de imagem disponíveis, use o comando gcloud compute images list.
  • IMAGE: uma versão específica de uma imagem pública. Por exemplo, debian-10-buster-v20230809.
  • MACHINE_TYPE: o tipo de máquina predefinido ou personalizado para VMs criadas usando esse modelo de instância. Por exemplo, f1-micro
  • SUBNET_REGION: a região da sub-rede do modelo de instância.
  • SUBNET: a sub-rede do modelo de instância. Quando você cria uma VM usando esse modelo de instância, a interface de rede principal da VM recebe um endereço IP interno dessa sub-rede.
  • ATTACHMENT_PROJECT_ID: o ID do projeto do anexo de rede.
  • ATTACHMENT_REGION: a região do anexo de rede..
  • NETWORK_ATTACHMENT: o nome do anexo de rede. Quando você cria uma VM usando esse modelo de instância, a interface do Private Service Connect solicita uma conexão com esse anexo de rede.

Para mais informações sobre como criar modelos de instância, consulte Como criar modelos de instância.

Usar uma interface do Private Service Connect com o VPC Service Controls

É possível usar as interfaces do Private Service Connect com o VPC Service Controls. Isso permite que uma rede VPC do produtor acesse APIs e serviços do Google por meio de uma rede VPC do consumidor, enquanto a organização do consumidor pode aplicar os benefícios de segurança do VPC Service Controls.

Para usar uma interface do Private Service Connect com o VPC Service Controls, é preciso atualizar a tabela de roteamento da VM da interface do Private Service Connect. Substitua a rota padrão por uma que envie tráfego pela interface do Private Service Connect para o gateway padrão dela.

As etapas a seguir atualizam temporariamente a tabela de roteamento para VMs que usam o Debian. Para adicionar a rota permanentemente ou para atualizar a rota para um sistema operacional diferente, consulte a documentação pública do sistema operacional.

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs:

    Acessar instâncias de VM

  2. Clique no nome da VM que tem a interface do Private Service Connect.

  3. Execute este comando:

    sudo ip route replace default via GATEWAY_IP dev OS_INTERFACE_NAME
    

    Substitua:

Descrever uma interface do Private Service Connect

É possível descrever uma VM para visualizar os detalhes da interface do Private Service Connect. O endereço IP da interface, os intervalos de IP do alias, o anexo de rede e a sub-rede do consumidor estão listados na seção de interfaces de rede da descrição da VM.

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique na VM que tem sua interface do Private Service Connect.

  3. Na seção Interfaces de rede, confira os detalhes da interface do Private Service Connect.

gcloud

gcloud compute instances describe VM_NAME
    --zone=ZONE

Substitua:

  • VM_NAME: o nome da VM da interface.
  • ZONE: a zona da VM.

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Substitua:

  • PROJECT_ID: o ID do projeto da VM.
  • ZONE: a zona da VM.
  • VM_NAME: o nome da VM.

Excluir uma VM com uma interface do Private Service Connect

Para excluir uma interface do Private Service Connect, você precisa excluir a instância de VM a que está conectada. Para mais informações, consulte Excluir uma instância.

A seguir