Rede particular e Cloud Run

Nesta página, você vai encontrar as opções de configuração para incluir recursos 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 recursos do Cloud Run não são associados a nenhuma rede VPC específica. Nesta página, explicamos como incorporar recursos 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 recurso 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 recursos do Cloud Run ou do App Engine

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

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

  1. Configure o recurso de origem para usar a saí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:

    • Configure o recurso de origem para enviar todo o tráfego pela rede VPC e ativar o Acesso privado do Google na sub-rede associada à saída direta de VPC ou ao conector.
    • Configure o Private Service Connect ou um balanceador de carga de aplicativo interno para exibir o recurso 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 recurso 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 que têm endereços IP externo ou usam o Cloud NAT podem acessar diretamente a Internet e os serviçosGoogle Cloud , como o Pub/Sub e o Cloud Run. Para outros recursos, há algumas opções para ativar o caminho de tráfego para o Cloud Run:

  • O caminho mais direto é ativar o Acesso privado do Google nas sub-redes que hospedam seus recursos. Quando o Acesso privado do Google é ativado, os recursos nas sub-redes podem acessar os recursos do Cloud Run no URL run.app padrão. O tráfego da rede VPC para o Cloud Run permanece na rede do Google. Nesse caso, o intervalo de IP para solicitações enviadas ao recurso do Cloud Run é 0.0.0.0/32. Isso significa que, nas entradas de registro de solicitação, o atributo remoteIp do HttpRequest será 0.0.0.0.
  • Se você precisar que o recurso do Cloud Run (com outras APIs do Google) seja acessível por um endereço IP interno na rede VPC, crie um endpoint do Private Service Connect e configure uma zona de DNS particular para run.app. Com essa configuração, os recursos na rede VPC podem acessar os recursos do Cloud Run no URL run.app padrão pelo endereço IP do endpoint do Private Service Connect.
  • Se você precisar de recursos e controles de balanceamento de carga, use um balanceador de carga de aplicativo interno. Com essa abordagem, os recursos na rede VPC acessam os recursos do Cloud Run usando o URL associado ao balanceador de carga interno do aplicativo.
  • 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 o serviço usando o Private Service Connect. Os projetos que precisam consumir o serviço podem acessá-lo usando um endpoint do Private Service Connect ou um back-end do Private Service Connect.

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

Considerações especiais para VPC compartilhada

Ao usar a configuração internal com os controles de entrada do Cloud Run para determinar que todo o tráfego precisa vir da sua rede privada, o tráfego da VPC compartilhada só é reconhecido como "interno" nas seguintes situações:

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

  • Entrada de VPC compartilhada: o recurso 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 pela saída de VPC direta ou pelo 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 recurso do Cloud Run da rede VPC compartilhada, reimplante sem acesso à rede VPC ou com o recurso 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 redes VPC fora do projeto

Ao usar a configuração internal com os controles de entrada do Cloud Run para determinar que todo o tráfego precisa vir da sua rede privada, o tráfego de outras redes VPC fora do projeto não é reconhecido como "interno", exceto nas seguintes situações:

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

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

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

As solicitações para o Cloud Run feitas por Google Cloud serviços 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 BigQuery, Cloud Scheduler, Cloud Tasks, Dialogflow CX, Eventarc, Pub/Sub, monitores sintéticos (incluindo verificações de tempo de atividade) e Workflows no mesmo projeto ou perímetro do VPC Service Controls são reconhecidas como "internas".
  • As solicitações do Cloud Run ou do App Engine 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 ou do App Engine.
  • Se o serviço Google Cloud escolhido não conseguir acessar os recursos do Cloud Run com a entrada definida como internal, muitos deles serão compatíveis com a autenticação no Cloud Run, como o Pub/Sub (compatível com internal e autenticação), o API Gateway e o Dialogflow CX (compatível com internal e autenticação). Dependendo das suas necessidades de segurança, pode ser suficiente que o recurso de destino do Cloud Run exija autenticação em vez de entrada "interna".
  • As solicitações de serviços Google Cloud não mencionados anteriormente não são reconhecidas como internas e não podem ser recebidas por recursos do Cloud Run com a entrada definida como internal ou internal-and-cloud-load-balancing.

Receber solicitações de recursos locais ou de outras nuvens

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

Exigir solicitações da sua rede privada

Para evitar o tráfego de entrada (entrada) de origens externas, especifique 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 navegar por elas, consulte a seção Receber solicitações da rede privada.

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

  • Para especificar a configuração de entrada para cada recurso do Cloud Run: consulte Como definir a entrada.
  • Para aplicar uma configuração de entrada específica a todos os recursos 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 recurso 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 a saída de VPC direta ou os conectores 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, as respostas são retornadas usando o caminho pelo qual a solicitação passou. As solicitações da rede VPC para o Cloud Run são ativadas usando outras tecnologias e não são roteadas pela saída VPC direta ou por conectores, e as respostas a essas solicitações são retornadas usando o mesmo caminho. Para saber mais sobre como enviar solicitações da rede VPC ao Cloud Run, consulte 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 da VPC compartilhada, consulte Conectar-se a uma rede VPC compartilhada.
  2. Para outras redes VPC, configure a saída de VPC direta ou um conector para se conectar a uma VPC no projeto.
    • Redes 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 redes VPC: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 rede VPC do projeto, configure o Private Service Connect depois de configurar a saída de rede VPC.

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

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

Para solicitações a recursos do Cloud Run com configurações de entrada restritivas, é necessária uma configuração adicional. Consulte Receber solicitações de outros recursos do Cloud Run ou do App Engine.

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, faça o seguinte:

  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. Exija que todas as solicitações acessem sua rede VPC.

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

Para exigir que todas as solicitações do recurso 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 recurso do Cloud Run que usa a saída de rede VPC ou aplique a configuração de saída preferencial em todos os recursos do Cloud Run no projeto, na pasta ou na organização.

Isso é útil nos cenários de:

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

Se o recurso 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 nos conectores de acesso VPC sem servidor configurados e pode aumentar os custos de acordo. Os conectores são escalonados automaticamente quando o tráfego aumenta, mas não são reduzir escalonamento horizontal se o tráfego diminui. 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 recurso específico do Cloud Run ou uma máquina virtual do Compute Engine, use 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 recursos do Cloud Run em uma rede privada.