Para aproveitar esse conteúdo ao máximo, você precisa conhecer um pouco os seguintes conceitos:
- Rede básica
- Redes de nuvem privada virtual (VPC) do Google Cloud
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 funções do Cloud Run
Quando o serviço de destino do Cloud Run recebe tráfego de outros serviços do Cloud Run, do App Engine ou de funções do Cloud Run, 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 de funções do Cloud Run, execute as seguintes etapas:
Configure o serviço de origem para usar a saída da VPC direta ou um conector.
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 intervalosprivate.googleapis.com
(199.36.153.8/30
) ourestricted.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:
- 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 atributoremoteIp
de HttpRequest vai ser0.0.0.0
. - 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. - 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.
- 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 com
run.googleapis.com
como um serviço restrito, 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) 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":
- Solicitações do Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, monitores sintéticos (incluindo verificações de tempo de atividade) e fluxos de trabalho no mesmo projeto ou o perímetro VPC Service Controls é reconhecido como "interno".
- As solicitações do Cloud Run, do App Engine e de funções do Cloud Run 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 de funções do Cloud Run.
- 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 cominternal
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
ouinternal-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.
- 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.
- 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.
- 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.
- 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:
- Para usuários de VPC compartilhada, consulte Como se conectar a uma rede VPC compartilhada.
- 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 de funções do Cloud Run.
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:
- 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;
- configurar o serviço para enviar solicitações à rede VPC;
- 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:
- Se você quiser configurar um endereço IP de saída estático para o serviço do Cloud Run.
- Se você quiser aplicar regras de firewall a todas as saídas de um serviço do Cloud Run.
- 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.
- Para especificar a configuração de saída para serviços individuais do Cloud Run: consulte Controlar o tráfego do serviço de saída.
- Para aplicar uma configuração de entrada específica em 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.allowedVPCEgress
. Para saber como fazer isso, consulte Como personalizar políticas para restrições de lista.
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.
- Para entender o VPC Service Controls, consulte Visão geral do VPC Service Controls.
- Para começar, consulte o guia do Cloud Run Como usar o VPC Service Controls (VPC SC).
- Para entender os custos, consulte os preços.
- 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.
- Para entender as contas de serviço, consulte O que são contas de serviço?
- Para começar, consulte os guias de autenticação do Cloud Run.
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.