Rede particular e Cloud Run

Nesta página, você vai ver as opções de configuração para incluir serviços do Cloud Run na sua rede privada.

Para aproveitar esse conteúdo ao máximo, você precisa conhecer um pouco os seguintes conceitos:

Para proteger o tráfego de rede dos serviços e aplicativos, muitas organizações usam uma rede particular no Google Cloud com controles de perímetro para evitar a exfiltração de dados. A rede particular pode ter as seguintes propriedades:

  • Você pode ter vários recursos, como VMs, em uma ou mais redes VPC.
  • Essas VMs podem pertencer a muitos projetos diferentes e podem estar conectadas a uma VPC compartilhada.
  • É possível ter cargas de trabalho no local ou cargas de trabalho em outras nuvens conectadas a esse ambiente usando o Cloud VPN ou o Cloud Interconnect.
  • Você pode ter ativado um perímetro do VPC Service Controls para reduzir o risco de exfiltração de dados.
  • É possível ter várias redes particulares, uma para cada um dos diversos ambientes diferentes, como uma para produção, outra para preparo e uma para desenvolvimento.

Por padrão, os serviços do Cloud Run não são associados a nenhuma rede VPC específica. Nesta página, explicamos como incorporar serviços do Cloud Run à sua rede particular.

Narrativa de rede sem servidor

Para explorar uma variedade de configurações corporativas comuns para redes públicas e privadas, leia nossa narrativa sobre rede sem servidor.

Este ponto de partida apresenta os seguintes cenários do Cloud Run do básico ao avançado:

  • Implante com segurança um app "Hello, World!" que usa um domínio personalizado
  • Desenvolva aplicativos empresariais e microsserviços
  • Acessar bancos de dados e sistemas de arquivos de maneira pública ou privada
  • Conectar-se com provedores de SaaS
  • Aplicar controles de segurança

Consulte a lista de módulos do Terraform correspondentes.

Receber solicitações da sua rede particular

O recebimento de solicitações da sua rede particular requer configuração com base nas seguintes condições:

  • Origem da solicitação.
  • Se o serviço do Cloud Run só permite solicitações da sua rede particular.

Por exemplo, receber solicitações de redes VPC pode exigir uma configuração diferente de recebimento de solicitações de recursos locais e de outras nuvens.

Receber solicitações de outros serviços do Cloud Run, App Engine e Cloud Functions

Quando o serviço de destino do Cloud Run recebe tráfego de outros serviços do Cloud Run, do App Engine ou do Cloud Functions, e usa a configuração de entrada "interna" ou "balanceamento de carga e interno", o tráfego precisará usar a rede VPC para ser considerado interno.

Para receber solicitações de outros serviços do Cloud Run, do App Engine ou do Cloud Functions, execute as seguintes etapas:

  1. Configure o serviço de origem para usar a saída da VPC direta ou um conector.

  2. Verifique se o tráfego para as rotas do Cloud Run por meio da rede VPC usa uma das seguintes opções:

    • Configurar o serviço de origem para enviar todo o tráfego pela rede VPC e ativar o acesso privado do Google na sub-rede associada à saída de VPC direta ou conector.
    • Configure o Private Service Connect ou um balanceador de carga de aplicativo interno para exibir o serviço de destino do Cloud Run. Com essa configuração, você acessa o Cloud Run usando endereços IP internos para que as solicitações sejam roteadas por meio da rede VPC.
    • Ative o Acesso privado do Google na sub-rede associada ao serviço de origem e configure o DNS para resolver URLs run.app nos intervalos private.googleapis.com (199.36.153.8/30) ou restricted.googleapis.com (199.36.153.4/30). As solicitações para esses intervalos são roteadas por meio da rede VPC.

Receber solicitações de redes VPC

Por padrão, somente os recursos de VPC que têm endereços IP públicos ou usam o Cloud NAT podem acessar diretamente a Internet e os serviços do Google Cloud, como o Pub/Sub e o Cloud Run. Para outros recursos da VPC, há algumas opções para ativar o caminho de tráfego para o Cloud Run:

  1. O caminho mais direto é ativar o Acesso privado do Google nas sub-redes que hospedam seus recursos de VPC. Após a ativação, os recursos nas sub-redes poderão acessar os serviços do Cloud Run no URL run.app padrão. O tráfego da VPC para o Cloud Run permanece na rede do Google. Nesse caso, o intervalo de IP para solicitações enviadas para o serviço do Cloud Run é 0.0.0.0/32. Isso significa que, nas entradas de registro de solicitação, o atributo remoteIp de HttpRequest vai ser 0.0.0.0.
  2. Se você precisar que o serviço do Cloud Run (com outras APIs do Google) seja exposto como um endereço IP interno na rede VPC, considere usar o Private Service Connect. Uma vez ativados, os recursos da VPC podem acessar os serviços do Cloud Run no URL run.app padrão usando o endereço IP interno.
  3. Se você precisar de recursos e controles de balanceamento de carga, use um balanceador de carga de aplicativo interno. Com essa abordagem, os recursos da VPC acessam seus serviços do Cloud Run usando o URL associado ao balanceador de carga interno do aplicativo.
  4. Se você quiser expor o serviço a clientes internos como um serviço gerenciado e controlar quais projetos podem acessá-lo, vai poder hospedá-lo com um balanceador de carga de aplicativo interno e publicar isso usando o Private Service Connect. Os projetos que precisam consumir o serviço também podem acessá-lo usando o Private Service Connect.

As respostas são retornadas usando o mesmo caminho em que a solicitação passou.

Considerações especiais para VPC compartilhada

Se você estiver usando os controles de entrada do Cloud Run para determinar que todo o tráfego precisa vir da sua rede privada (usando a configuração internal), observe que o tráfego da VPC compartilhada só é reconhecido como "interno" nas seguintes situações:

  • O serviço do Cloud Run está em execução no projeto do host da VPC compartilhada.

  • Entrada de VPC compartilhada (visualização): o serviço do Cloud Run está anexado a uma rede de VPC compartilhada. Nesse cenário, observe as seguintes considerações:

    • Somente revisões de serviço que tiverem configurado a saída VPC direta ou um conector de acesso VPC sem servidor para enviar tráfego à rede VPC compartilhada também aceitarão tráfego da mesma rede VPC compartilhada.

    • As solicitações usam caminhos diferentes com base na direção do tráfego. As solicitações enviadas do Cloud Run para a rede VPC compartilhada são roteadas por meio da saída de VPC direta ou do conector. No entanto, as solicitações enviadas da rede VPC compartilhada para o Cloud Run usam o caminho de entrada padrão.

    • Para desanexar um serviço do Cloud Run da rede VPC compartilhada, reimplante sem acesso à rede VPC ou com o serviço configurado para enviar tráfego para uma rede VPC diferente.

  • Você está usando um balanceador de carga de aplicativo interno para fazer o tráfego de proxy.

  • Você colocou o host da VPC compartilhada e todos os projetos de serviço dentro do mesmo perímetro do VPC Service Controls. Para configurar o VPC Service Controls, consulte Como usar o VPC Service Controls (VPC SC).

Considerações especiais para outras VPCs fora do projeto

Se você estiver usando os controles de entrada do Cloud Run para determinar que todo o tráfego precisa vir da sua rede privada (usando a configuração internal), o tráfego de outras VPCs fora do projeto não será reconhecido como "interno", exceto nas seguintes situações:

  • O VPC Service Controls está configurado para permitir o tráfego, e o Acesso privado do Google está ativado para a sub-rede de origem.
  • Seu serviço do Cloud Run é publicado como um serviço gerenciado usando o Private Service Connect (requer um balanceador de carga de aplicativo interno de aplicativo) e é acessado da outra rede VPC.

Fazer o peering de uma VPC fora do projeto não permite que o tráfego seja reconhecido como "interno".

Receber solicitações de outros serviços do Google Cloud

As solicitações para o Cloud Run feitas por serviços do Google Cloud, como o Pub/Sub, permanecem na rede do Google.

Há algumas considerações especiais se você tiver configurado controles de entrada do Cloud Run para permitir apenas tráfego "interno":

  • As solicitações do Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub e Workflows no mesmo projeto ou perímetro do VPC Service Controls são reconhecidas como "internas".
  • As solicitações do Cloud Run, do App Engine e do Cloud Functions enviadas do mesmo projeto ou perímetro do VPC Service Controls exigem outras configurações antes de serem reconhecidas como "internas". Para mais detalhes, consulte a seção Receber solicitações de outros serviços do Cloud Run, do App Engine e do Cloud Functions.
  • Se o serviço escolhido do Google Cloud não conseguir acessar os serviços do Cloud Run com a entrada definida como internal, muitos serão compatíveis com a autenticação no Cloud Run, como o Pub/Sub (compatível com internal e autenticação), gateway de API e Dialogflow CX. Dependendo das suas necessidades de segurança, pode ser suficiente que o serviço de destino do Cloud Run exija autenticação em vez de entrada "interna".
  • Solicitações de serviços do Google Cloud não mencionados acima não são reconhecidas como internas e não podem ser recebidas por serviços do Cloud Run com a entrada definida como internal ou internal-and-cloud-load-balancing.

Receber solicitações de outras nuvens ou no local

Há várias maneiras de receber solicitações de recursos particulares e de outras nuvens de maneira particular.

  1. Configuração básica: para que as solicitações de recursos locais e de outras nuvens atravessem sua rede particular, configure o Acesso privado do Google para hosts locais.
  2. Exponha o serviço do Cloud Run com um endereço IP interno: para chamar os serviços do Cloud Run usando um endereço IP interno, configure o Private Service Connect para hosts locais A adição do Private Service Connect para hosts locais permite expor o serviço do Cloud Run à rede VPC como um endereço IP interno. O Private Service Connect gera custos.
  3. Com recursos de balanceamento de carga: se você precisar de recursos e controles de balanceamento de carga, use um balanceador de carga de aplicativo interno.
  4. Em limites administrativos: se você quiser expor seu serviço a clientes internos como um serviço gerenciado e controlar quais projetos podem acessá-lo, faça o seguinte: publique-o usando o Private Service Connect. Para saber mais, consulte Como usar o Private Service Connect de hosts locais. Você vai precisar de um balanceador de carga interno do aplicativo.

Exigir solicitações da sua rede privada

Para evitar o tráfego de entrada (entrada) de origens externas, você pode especificar uma configuração de entrada restritiva. A configuração de entrada mais restritiva é internal. Com a entrada definida como internal, o serviço só permite solicitações do projeto, redes VPC compartilhadas às quais o projeto está anexado e o perímetro do VPC Service Controls. Há algumas limitações nessa configuração, dependendo da origem das solicitações. Para saber mais sobre essas limitações e como navegá-las, consulte a seção Receber solicitações da rede privada.

É possível especificar a configuração de entrada para cada serviço do Cloud Run ou aplicar o uso da configuração preferida de entrada em todos os serviços do Cloud Run na sua organização.

  • Para especificar a configuração de entrada para cada serviço: consulte Como definir a entrada.
  • Para aplicar uma configuração de entrada específica a todos os serviços do Cloud Run no projeto, na pasta ou na organização: configure a restrição da política da organização run.allowedIngress. Para saber como fazer isso, consulte Como personalizar políticas para restrições de lista.

Enviar solicitações para sua rede privada

Se o serviço do Cloud Run precisar acessar um recurso na rede particular, configure um caminho para solicitações particulares à rede. A configuração depende do destino final da solicitação.

Enviar solicitações para sua rede VPC

Para enviar solicitações a uma rede VPC, você precisa configurar a saída de VPC direta ou um conector de acesso VPC sem servidor. Comparar a saída de VPC direta e os conectores de VPC Analise os preços para entender os custos.

Quando os conectores de acesso VPC sem servidor ou a saída de VPC direta são configurados, as seguintes considerações se aplicam por padrão:

  • Todas as consultas DNS são enviadas ao servidor DNS configurado para a rede VPC associada à configuração de saída da rede VPC.

  • As solicitações para endereços IP particulares são encaminhadas para a rede VPC usando a saída de VPC direta ou um conector. As solicitações para destinos públicos continuam sendo roteadas diretamente para a Internet, a menos que a configuração de saída esteja definida de outra forma.

Com as solicitações encaminhadas usando a saída de VPC direta ou os conectores de acesso VPC sem servidor, as respostas são retornadas usando o caminho pelo qual a solicitação passou. Solicitações de sua VPC para o Cloud Run são ativadas usando outras tecnologias e não são roteadas por acesso VPC sem servidor ou saída direta de VPC, e as respostas a essas solicitações são retornadas usando o mesmo caminho. Para saber mais sobre como enviar solicitações da VPC ao Cloud Run, consulte a seção Receber solicitações de redes VPC.

Como enviar solicitações para uma rede VPC fora do seu projeto

Para enviar solicitações a uma rede VPC fora do projeto, faça o seguinte:

  1. Para usuários de VPC compartilhada, consulte Como se conectar a uma rede VPC compartilhada.
  2. Para outras VPCs, configure a saída de VPC direta ou um conector de acesso VPC sem servidor para se conectar a uma VPC no projeto.
    • VPCs com peering: para enviar a uma VPC que faz peering com uma que usa a saída de rede VPC, nenhuma outra configuração é necessária. No entanto, as VMs na sub-rede que hospeda a saída da rede VPC precisam ser capazes de alcançar a rede VPC de destino.
    • Outras VPCs: para redes VPC fora do projeto que não fazem parte do mesmo ambiente de VPC compartilhada ou que estão em peering com a VPC do projeto, configure o Private Service Connect depois de configurar a saída de rede VPC.

Enviar solicitações para outros serviços do Cloud Run e do Google Cloud

As solicitações de um serviço do Cloud Run para outro ou para outros serviços do Google Cloud permanecem na rede interna do Google e estão sujeitas ao VPC Service Controls.

Para solicitações para os serviços do Cloud Run com configurações de entrada restritivas, é necessária uma configuração adicional. Consulte Receber solicitações de outros serviços do Cloud Run, do App Engine e do Cloud Functions.

Enviar solicitações para recursos locais e outras nuvens

Para enviar solicitações a recursos locais e outras nuvens por meio da sua rede privada, é necessário:

  1. verificar se sua rede VPC está configurada para rotear o tráfego de maneira particular ao destino, como por meio de um túnel VPN;
  2. configurar o serviço para enviar solicitações à rede VPC;
  3. em seguida, solicite todas as solicitações para acessar sua rede VPC.

Exigir que todas as solicitações acessem sua rede VPC

Para exigir que todas as solicitações do serviço do Cloud Run acessem a rede VPC, especifique a configuração de saída da rede VPC "all-traffic". Especifique a configuração de saída de cada serviço do Cloud Run que usa a saída de rede VPC ou aplique a configuração de saída preferencial em todos os serviços do Cloud Run no projeto, na pasta ou na organização.

Isso é útil nos cenários de:

  1. Se você quiser configurar um endereço IP de saída estático para o serviço do Cloud Run.
  2. Se você quiser aplicar regras de firewall a todas as saídas de um serviço do Cloud Run.
  3. Você quer enviar solicitações para recursos locais e outras nuvens por meio da sua rede privada.

Se o serviço do Cloud Run fizer solicitações a destinos finais fora da rede VPC, exigir que todas as solicitações acessem a rede VPC aumenta o uso da largura de banda no conector de acesso VPC sem servidor (se configurado) e pode aumentar os custos de acordo. Os conectores de acesso VPC sem servidor fazem o escalonamento horizontal automaticamente quando o tráfego aumenta, mas não são escalonados se o tráfego diminuir. Analise os preços para entender os custos.

Controles adicionais

  • Controles de perímetro: para reduzir o risco de exfiltração de dados de um grupo de recursos, coloque-os em um perímetro baseado no contexto usando o VPC Service Controls.
  • Controles granulares: para controlar o acesso de um recurso específico à rede, como um serviço específico do Cloud Run ou uma máquina virtual do Compute Engine, use as contas de serviço para controlar permissões e autenticação.

A seguir

Se você usa o Terraform, o código de amostra do Terraform está disponível para configurar os serviços do Cloud Run em uma rede privada.