Esta página mostra como usar o Acesso a VPC sem servidor para ligar a sua app do ambiente padrão do App Engine diretamente à sua rede VPC, permitindo o acesso a instâncias de VMs do Compute Engine, instâncias do Memorystore e quaisquer outros recursos com um endereço IP interno.
Antes de começar
Se ainda não tiver uma rede VPC no seu projeto, crie uma.
Se usar a VPC partilhada, consulte o artigo Estabelecer ligação a uma rede de VPC partilhada.
Na Google Cloud consola, certifique-se de que a API Serverless VPC Access está ativada para o seu projeto.
Crie um conetor do Acesso a VPC sem servidor
Para enviar pedidos para a sua rede VPC e receber as respostas correspondentes sem usar a Internet pública, pode usar um conetor do Acesso a VPC sem servidor.
Se o conector estiver localizado no mesmo projeto que a respetiva rede VPC, pode criar um conector através de uma sub-rede existente ou criar um conector e uma nova sub-rede.
Se o conector estiver localizado num projeto de serviço e usar uma rede de VPC partilhada, o conector e a respetiva rede de VPC associada estão em projetos diferentes. Quando um conector e a respetiva rede VPC estão em projetos diferentes, um administrador da rede VPC partilhada tem de criar a sub-rede do conector na rede VPC partilhada antes de poder criar o conector e tem de criar o conector através de uma sub-rede existente.
Para saber mais acerca dos requisitos de sub-rede, consulte os requisitos de sub-rede do conector.
Para saber mais sobre o débito do conetor, incluindo o tipo de máquina e o dimensionamento, consulte o artigo Débito e dimensionamento.
Pode criar um conector através da Google Cloud consola, da Google Cloud CLI ou do Terraform.
Consola
Aceda à página de vista geral do Acesso a VPC sem servidor.
Clique em Criar conetor.
No campo Nome, introduza um nome para o conector, de acordo com as convenções de nomenclatura do Compute Engine, com os requisitos adicionais de que o nome tem de ter menos de 21 carateres e que os hífens (-) contam como dois carateres.
No campo Região, selecione uma região para o conetor. Tem de corresponder à região do seu serviço sem servidor.
Se o seu serviço ou trabalho estiver na região
us-central
oueurope-west
, useus-central1
oueurope-west1
.No campo Rede, selecione a rede VPC à qual quer anexar o conetor.
No campo Sub-rede, selecione uma das seguintes opções:
Crie um conetor com uma sub-rede existente: selecione a sub-rede existente no campo Sub-rede.
Crie um conetor e uma nova sub-rede: selecione Intervalo de IP personalizado no campo Sub-rede. Em seguida, introduza o primeiro endereço num
/28
CIDR não usado (por exemplo,10.8.0.0/28
) para usar como o intervalo de endereços IPv4 principal de uma nova sub-rede que Google Cloud cria na rede VPC do conetor. Certifique-se de que o intervalo de IPs não entra em conflito com nenhuma rota existente na rede VPC do conector. O nome da nova sub-rede começa com o prefixo "aet-".
(Opcional) Para definir opções de dimensionamento para um controlo adicional do conector, clique em Mostrar definições de dimensionamento para apresentar o formulário de dimensionamento.
- Defina o número mínimo e máximo de instâncias para o seu conetor,
ou use os valores predefinidos, que são 2 (mínimo) e 10 (máximo). O conetor é dimensionado até ao máximo especificado se a utilização do tráfego o exigir, mas o conetor não é redimensionado quando o tráfego diminui. Tem de usar valores entre
2
e10
. - No menu Tipo de instância, escolha o tipo de máquina a usar para o conetor ou use o valor predefinido
e2-micro
. Repare na barra lateral de custos à direita quando escolher o tipo de instância, que apresenta estimativas de largura de banda e custos.
- Defina o número mínimo e máximo de instâncias para o seu conetor,
ou use os valores predefinidos, que são 2 (mínimo) e 10 (máximo). O conetor é dimensionado até ao máximo especificado se a utilização do tráfego o exigir, mas o conetor não é redimensionado quando o tráfego diminui. Tem de usar valores entre
Clique em Criar.
É apresentada uma marca de verificação verde junto ao nome do conector quando este estiver pronto a ser usado.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Atualize os componentes do
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API Serverless VPC Access está ativada para o seu projeto:
gcloud services enable vpcaccess.googleapis.com
Crie o conetor através de uma das seguintes opções:
Para mais detalhes e argumentos opcionais, consulte a
gcloud
referência.Crie um conetor com uma sub-rede existente:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Substitua o seguinte:
CONNECTOR_NAME
: um nome para o conector, que corresponda às convenções de nomenclatura> do Compute Engine, com os requisitos adicionais de que o nome tem de ter menos de 21 carateres e que os hífenes (-) contam como dois carateres.REGION
: uma região para o conetor, correspondente à região do seu serviço ou tarefa sem servidor. Se o seu serviço ou trabalho for emus-central
oueurope-west
, useus-central1
oueurope-west1
.SUBNET_NAME
: o nome da sub-rede existente.HOST_PROJECT_ID
: o ID do projeto anfitrião da VPC partilhada. Se o conetor e a sub-rede existente estiverem localizados no mesmo projeto, omita a flag--subnet-project
.MIN
: o número mínimo de instâncias a usar para o conector. Use um número inteiro entre2
(o valor predefinido) e9
.MAX
: o número máximo de instâncias a usar para o conector. Use um número inteiro entre3
e10
(o valor predefinido). Se o conetor for dimensionado até ao número máximo de instâncias, não é novamente dimensionado para baixo.MACHINE_TYPE
: tem de ser um dos seguintes:f1-micro
,e2-micro
oue2-standard-4
.
Crie um conetor e uma nova sub-rede:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Substitua o seguinte:
CONNECTOR_NAME
: um nome para o conector, que corresponda às convenções de nomenclatura> do Compute Engine, com os requisitos adicionais de que o nome tem de ter menos de 21 carateres e que os hífenes (-) contam como dois carateres.REGION
: uma região para o conetor, correspondente à região do seu serviço ou tarefa sem servidor. Se o seu serviço ou trabalho for emus-central
oueurope-west
, useus-central1
oueurope-west1
.VPC_NETWORK
: o nome da rede VPC à qual anexar o conetor. O conetor e a rede VPC têm de estar localizados no mesmo projeto.IP_RANGE
: forneça um CIDR/28
não usado (por exemplo,10.8.0.0/28
) para usar como o intervalo de endereços IPv4 principal de uma nova sub-rede que Google Cloud cria na rede VPC do conector. Certifique-se de que o intervalo de IP não entra em conflito com nenhuma rota existente na rede VPC do conector. O nome da nova sub-rede começa com o prefixo "aet-".MIN
: o número mínimo de instâncias a usar para o conector. Use um número inteiro entre2
(o valor predefinido) e9
.MAX
: o número máximo de instâncias a usar para o conector. Use um número inteiro entre3
e10
(o valor predefinido). Se o conetor for dimensionado até ao número máximo de instâncias, não é novamente dimensionado para baixo.MACHINE_TYPE
: tem de ser um dos seguintes:f1-micro
,e2-micro
oue2-standard-4
.
Verifique se o conetor está no estado
READY
antes de o usar:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Substitua o seguinte:
CONNECTOR_NAME
: o nome do conector; este é o nome que especificou no passo anterior.REGION
: a região do seu conector. Esta é a região que especificou no passo anterior.
A saída deve conter a linha
state: READY
.
Terraform
Pode usar um recurso do Terraform
para ativar a API vpcaccess.googleapis.com
.
Pode usar módulos do Terraform para criar uma rede VPC e uma sub-rede e, em seguida, criar o conetor.
Configure o seu serviço para usar um conetor
Depois de criar um conetor do Acesso a VPC sem servidor, tem de configurar cada serviço na sua app do App Engine que quer ligar à sua rede VPC.
Para especificar um conetor para um serviço na sua app:
Para usar o Acesso a VPC sem servidor, descontinue a utilização do serviço URL Fetch do App Engine. O Acesso a VPC sem servidor não suporta a obtenção de URLs e os pedidos feitos através da obtenção de URLs ignoram as definições do Acesso a VPC sem servidor. Em alternativa, estabeleça ligações de saída com sockets.
Adicione o campo
vpc_access_connector
ao ficheiroapp.yaml
do seu serviço:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Em que
PROJECT_ID
é o ID do seu Google Cloud projeto,REGION
é a região em que o conetor se encontra, eCONNECTOR_NAME
é o nome do seu conetor.Implemente o serviço:
gcloud app deploy
Depois de implementar o serviço, este pode enviar pedidos para endereços IP internos para aceder a recursos na sua rede VPC.
Restrinja o acesso aos recursos da VPC
Regras de firewall obrigatórias para conectores em projetos de serviço
Se criar um conector numa rede VPC autónoma ou no projeto anfitrião de uma rede VPC partilhada, Google Cloud cria todas as regras de firewall necessárias para o funcionamento do conector. Para mais informações, consulte o artigo Regras de firewall para conetores em redes da VPC autónomas ou projetos anfitriões da VPC partilhada.
No entanto, se criar um conector num projeto de serviço e o conector segmentar uma rede da VPC partilhada no projeto anfitrião, tem de adicionar regras de firewall para permitir o tráfego necessário para o funcionamento do conector a partir dos seguintes intervalos:
- Intervalo de IPs da infraestrutura sem servidor:
35.199.224.0/19
- Intervalos de IP da sondagem de verificação de estado:
35.191.0.0/16
,35.191.192.0/18
e130.211.0.0/22
Estes intervalos são usados pela infraestrutura da Google subjacente ao Cloud Run, às funções do Cloud Run e ao ambiente padrão do App Engine. Todos os pedidos destes endereços IP têm origem na infraestrutura da Google para garantir que cada recurso sem servidor comunica apenas com o conetor ao qual está ligado.
Também tem de permitir o tráfego da sub-rede do conector para recursos na sua rede VPC.
Para realizar estes passos, tem de ter uma das seguintes funções no projeto anfitrião:
- Função de proprietário (
roles/owner
) - Função de administrador de segurança do Compute (
roles/compute.securityAdmin
) - Função Identity and Access Management (IAM) personalizada com a autorização
compute.firewalls.create
ativada
Para uma configuração básica, aplique as regras para permitir que os recursos sem servidor em qualquer projeto de serviço ligado à rede VPC partilhada enviem pedidos a qualquer recurso na rede.
Para aplicar estas regras, execute os seguintes comandos no projeto anfitrião:
Crie regras de firewall que permitam que os pedidos da infraestrutura sem servidor da Google e as sondas de verificação de estado alcancem todos os conetores na rede. Nestes comandos, as portas UDP e TCP são usadas como proxies e para verificações de funcionamento HTTP, respetivamente. Não altere as portas especificadas.
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
Substitua
VPC_NETWORK
pelo nome da rede VPC à qual quer anexar o conetor.Crie uma regra de firewall de entrada na sua rede da VPC para permitir pedidos de conetores que segmentam esta rede:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
Esta regra dá ao conetor acesso a todos os recursos na rede. Para limitar os recursos que o seu ambiente sem servidor pode alcançar através do Acesso a VPC sem servidor, consulte o artigo Restrinja o acesso da VM do conetor aos recursos da rede VPC.
Crie regras de firewall para conectores específicos
Seguir o procedimento em Regras de firewall necessárias para conectores em projetos de serviço resulta em regras de firewall que se aplicam a todos os conectores, tanto os atuais como os criados no futuro. Se não quiser isto, mas quiser criar regras apenas para conectores específicos, pode definir o âmbito das regras para que se apliquem apenas a esses conectores.
Para limitar o âmbito das regras a conectores específicos, pode usar um dos seguintes mecanismos:
- Etiquetas de rede: cada conetor tem duas etiquetas de rede:
vpc-connector
evpc-connector-REGION-CONNECTOR_NAME
. Use o último formato para limitar o âmbito das regras de firewall a um conector específico. - Intervalos de IP: use esta opção apenas para as regras de saída, porque não funciona para regras de entrada. Pode usar o intervalo de IP da sub-rede do conector para limitar o âmbito das regras de firewall a um único conector de VPC.
Restrinja o acesso da VM do conetor aos recursos da rede VPC
Pode restringir o acesso do conector aos recursos na respetiva rede VPC de destino através de regras de firewall de VPC ou regras em políticas de firewall. Pode aplicar estas restrições através de uma das seguintes estratégias:
- Crie regras de entrada cujos destinos representam os recursos aos quais quer limitar o acesso da VM do conetor e cujas origens representam as VMs do conetor.
- Crie regras de saída cujos destinos representem as VMs do conetor e cujos destinos representem os recursos aos quais quer limitar o acesso da VM do conetor.
Os exemplos seguintes ilustram cada estratégia.
Restrinja o acesso através de regras de entrada
Escolha etiquetas de rede ou intervalos de CIDR para controlar o tráfego de entrada na sua rede de VPC.
Etiquetas de rede
Os passos seguintes mostram como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base nas etiquetas de rede do conector.
Certifique-se de que tem as autorizações necessárias para inserir regras de firewall. Tem de ter uma das seguintes funções de gestão de identidade e de acesso (IAM):
- Função de administrador de segurança de computação
- Função IAM personalizada com a autorização
compute.firewalls.create
ativada
Recuse o tráfego do conector na sua rede de VPC.
Crie uma regra de firewall de entrada com uma prioridade inferior a 1000 na sua rede da VPC para recusar a entrada a partir da etiqueta da rede do conector. Isto substitui a regra de firewall implícita que o acesso a VPC sem servidor cria na sua rede VPC por predefinição.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Substitua o seguinte:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
deny-vpc-connector
.PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flagallow
.Para fins de segurança e validação, também pode configurar regras de recusa para bloquear o tráfego dos seguintes protocolos não suportados:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor universal se quiser restringir o acesso a todos os conetores (incluindo quaisquer conetores criados no futuro) ou a etiqueta de rede exclusiva se quiser restringir o acesso a um conetor específico.
- Etiqueta de rede universal:
vpc-connector
Etiqueta de rede exclusiva:
vpc-connector-REGION-CONNECTOR_NAME
Substituição:
- REGION: a região do conector que quer restringir
- CONNECTOR_NAME: o nome do conector que quer restringir
Para saber mais acerca das etiquetas de rede de conetores, consulte o artigo Etiquetas de rede.
- Etiqueta de rede universal:
VPC_NETWORK: o nome da sua rede VPC
PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais elevada.
Permita o tráfego do conetor para o recurso que deve receber o tráfego do conetor.
Use as flags
allow
etarget-tags
para criar uma regra de firewall de entrada que segmenta o recurso na sua rede VPC ao qual quer que o conetor VPC aceda. Defina a prioridade desta regra como um valor inferior à prioridade da regra que criou no passo anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Substitua o seguinte:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flagallow
.VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor universal, se quiser restringir o acesso a todos os conetores (incluindo quaisquer conetores criados no futuro), ou a etiqueta de rede exclusiva, se quiser restringir o acesso a um conetor específico. Tem de corresponder à etiqueta de rede que especificou no passo anterior.
- Etiqueta de rede universal:
vpc-connector
Etiqueta de rede exclusiva:
vpc-connector-REGION-CONNECTOR_NAME
Substituição:
- REGION: a região do conector que quer restringir
- CONNECTOR_NAME: o nome do conector que quer restringir
Para saber mais acerca das etiquetas de rede de conetores, consulte o artigo Etiquetas de rede.
- Etiqueta de rede universal:
VPC_NETWORK: o nome da sua rede VPC
RESOURCE_TAG: a etiqueta de rede para o recurso de VPC ao qual quer que o conetor de VPC aceda
PRIORITY: um número inteiro inferior à prioridade que definiu no passo anterior. Por exemplo, se definir a prioridade da regra criada no passo anterior como 990, experimente 980.
Para mais informações acerca das flags obrigatórias e opcionais para criar regras de firewall, consulte a documentação do gcloud compute firewall-rules create
.
Intervalo CIDR
Os passos seguintes mostram como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base no intervalo CIDR do conector.
Certifique-se de que tem as autorizações necessárias para inserir regras de firewall. Tem de ter uma das seguintes funções de gestão de identidade e de acesso (IAM):
- Função de administrador de segurança de computação
- Função IAM personalizada com a autorização
compute.firewalls.create
ativada
Recuse o tráfego do conector na sua rede de VPC.
Crie uma regra de firewall de entrada com uma prioridade inferior a 1000 na sua rede da VPC para negar a entrada a partir do intervalo CIDR do conector. Isto substitui a regra de firewall implícita que o acesso a VPC sem servidor cria na sua rede VPC por predefinição.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Substitua o seguinte:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
deny-vpc-connector
.PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flagallow
.Para fins de segurança e validação, também pode configurar regras de recusa para bloquear o tráfego dos seguintes protocolos não suportados:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector cujo acesso está a restringir
VPC_NETWORK: o nome da sua rede VPC
PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais elevada.
Permita o tráfego do conetor para o recurso que deve receber o tráfego do conetor.
Use as flags
allow
etarget-tags
para criar uma regra de firewall de entrada que segmenta o recurso na sua rede VPC ao qual quer que o conetor VPC aceda. Defina a prioridade desta regra como um valor inferior à prioridade da regra que criou no passo anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Substitua o seguinte:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flagallow
.VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector cujo acesso está a restringir
VPC_NETWORK: o nome da sua rede VPC
RESOURCE_TAG: a etiqueta de rede para o recurso de VPC ao qual quer que o conetor de VPC aceda
PRIORITY: um número inteiro inferior à prioridade que definiu no passo anterior. Por exemplo, se definir a prioridade da regra criada no passo anterior como 990, experimente 980.
Para mais informações sobre as flags obrigatórias e opcionais para criar regras de firewall, consulte a documentação do gcloud compute firewall-rules create
.
Restrinja o acesso através de regras de saída
Os passos seguintes mostram como criar regras de saída para restringir o acesso ao conector.
Certifique-se de que tem as autorizações necessárias para inserir regras de firewall. Tem de ter uma das seguintes funções de gestão de identidade e de acesso (IAM):
- Função de administrador de segurança de computação
- Função IAM personalizada com a autorização
compute.firewalls.create
ativada
Negue o tráfego de saída do conetor.
Crie uma regra de firewall de saída no conector de acesso à VPC sem servidor para impedir que envie tráfego de saída, com exceção das respostas estabelecidas, para qualquer destino.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
Substitua o seguinte:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
deny-vpc-connector
.PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flagallow
.Para fins de segurança e validação, também pode configurar regras de recusa para bloquear o tráfego dos seguintes protocolos não suportados:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor de VPC universal se quiser que a regra se aplique a todos os conetores de VPC existentes e a quaisquer conetores de VPC criados no futuro. Em alternativa, a etiqueta de rede do conetor de VPC exclusivo se quiser controlar um conetor específico.
VPC_NETWORK: o nome da sua rede VPC
PRIORITY: um número inteiro entre 0 e 65535. Por exemplo, 0 define a prioridade mais elevada.
Permita o tráfego de saída quando o destino estiver no intervalo CIDR ao qual quer que o conector aceda.
Use as flags
allow
edestination-ranges
para criar uma regra de firewall que permita o tráfego de saída do seu conetor para um intervalo de destino específico. Defina o intervalo de destino para o intervalo CIDR do recurso na sua rede VPC ao qual quer que o conetor possa aceder. Defina a prioridade desta regra para um valor inferior à prioridade da regra criada no passo anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
Substitua o seguinte:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: um ou mais protocolos que quer permitir a partir do conector da VPC. Os protocolos suportados são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP através da porta 80 e o tráfego UDP. Para mais informações, consulte a documentação da flagallow
.RESOURCE_CIDR_RANGE: o intervalo CIDR do conetor cujo acesso está a restringir
VPC_NETWORK: o nome da sua rede VPC
VPC_CONNECTOR_NETWORK_TAG: a etiqueta de rede do conetor de VPC universal se quiser que a regra se aplique a todos os conetores de VPC existentes e a quaisquer conetores de VPC criados no futuro. Em alternativa, a etiqueta de rede do conetor de VPC exclusivo se quiser controlar um conetor específico. Se usou a etiqueta de rede exclusiva no passo anterior, use a etiqueta de rede exclusiva.
PRIORITY: um número inteiro inferior à prioridade que definiu no passo anterior. Por exemplo, se definir a prioridade da regra criada no passo anterior como 990, experimente 980.
Para mais informações sobre as flags obrigatórias e opcionais para criar regras de firewall, consulte a documentação do gcloud compute firewall-rules create
.
Faça a gestão do conector
Controlar o tráfego de saída de um serviço
Por predefinição, apenas os pedidos a endereços IP internos e nomes DNS internos são encaminhados através de um conetor de acesso a VPC sem servidor. Pode especificar a definição de saída para o seu serviço no ficheiro app.yaml
.
As definições de saída não são compatíveis com o serviço URL Fetch. Se ainda não o fez, desative a predefinição de obtenção de URL usando sockets e interrompa qualquer utilização explícita do pacote urlfetch
.
A utilização da biblioteca urlfetch
ignora as definições de saída e os pedidos não são encaminhados através de um conetor do Acesso a VPC sem servidor.
Para configurar o comportamento de saída do seu serviço do App Engine:
Adicione o atributo
egress_setting
ao campovpc_access_connector
do ficheiroapp.yaml
do serviço:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
Substituição:
PROJECT_ID
com o seu Google Cloud ID do projetoREGION
com a região em que o conector se encontraCONNECTOR_NAME
com o nome do conetorEGRESS_SETTING
com uma das seguintes opções:private-ranges-only
Predefinição. Apenas os pedidos aos intervalos de endereços IP RFC 1918 e RFC 6598 ou aos nomes DNS internos são encaminhados para a sua rede VPC. Todos os outros pedidos são encaminhados diretamente para a Internet.all-traffic
Todos os pedidos de saída do seu serviço são encaminhados para a sua rede VPC. Os pedidos ficam sujeitos às regras de firewall, DNS e encaminhamento da sua rede VPC. Tenha em atenção que o encaminhamento de todos os pedidos de saída para a sua rede VPC aumenta a quantidade de saída processada pelo conetor do Acesso a VPC sem servidor e pode incorrer em custos.
Implemente o serviço:
gcloud app deploy
Desligue um serviço de uma rede de VPC
Para desassociar um serviço de uma rede VPC, remova o campo vpc_access_connector
do ficheiro app.yaml
e volte a implementar o serviço.
Os conetores continuam a incorrer em custos, mesmo que não tenham tráfego e estejam desligados. Para ver detalhes, consulte os preços. Se já não precisar do conetor, certifique-se de que o elimina para evitar a faturação contínua.
Atualize um conector
Pode atualizar e monitorizar os seguintes atributos do conetor através da consola Google Cloud , da CLI Google Cloud ou da API:
- Tipo de máquina (instância)
- Número mínimo e máximo de instâncias
- Débito recente, número de instâncias e utilização da CPU
Atualize o tipo de máquina
Consola
Aceda à página de vista geral do Acesso a VPC sem servidor.
Selecione o conector que quer editar e clique em Editar.
Na lista Tipo de instância, selecione o tipo de máquina (instância) preferido. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação sobre débito e escalabilidade.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para atualizar o tipo de máquina do conetor, execute o seguinte comando no seu terminal:
Substitua o seguinte:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
CONNECTOR_NAME
: o nome do conetorREGION
: o nome da região do conectorMACHINE_TYPE
: o seu tipo de máquina preferido. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação sobre débito e escalabilidade.
Diminua o número mínimo e máximo de instâncias
Para diminuir o número mínimo e máximo de instâncias, tem de fazer o seguinte:
- Crie um novo conetor com os seus valores preferenciais.
- Atualize o seu serviço ou função para usar o novo conector.
- Elimine o conetor antigo quando tiver movido o respetivo tráfego.
Aumente o número mínimo e máximo de instâncias
Consola
Aceda à página de vista geral do Acesso a VPC sem servidor.
Selecione o conector que quer editar e clique em Editar.
No campo Instâncias mínimas, selecione o número mínimo de instâncias preferido.
O valor mais pequeno possível para este campo é o valor atual. O maior valor possível para este campo é o valor atual no campo Máximo de instâncias menos 1. Por exemplo, se o valor no campo Máximo de instâncias for 8, o maior valor possível para o campo Mínimo de instâncias é 7.
No campo Máximo de instâncias, selecione o número máximo de instâncias preferido.
O valor mais pequeno possível para este campo é o valor atual. O valor máximo possível para este campo é 10.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para aumentar o número mínimo ou máximo de instâncias do conector, execute o seguinte comando no terminal:
Substitua o seguinte:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
CONNECTOR_NAME
: o nome do conetorREGION
: o nome da região do conectorMIN_INSTANCES
: o número mínimo preferencial de instâncias.- O valor mais pequeno possível para este campo é o valor atual de
min_instances
. Para encontrar o valor atual, consulte o artigo Encontre os valores dos atributos atuais. - O maior valor possível para este campo é o valor atual de
max_instances
menos 1, porquemin_instances
tem de ser inferior amax_instances
. Por exemplo, semax_instances
for 8, o maior valor possível para este campo é 7. Se o conector usar o valor predefinido demax-instances
10, o maior valor possível deste campo é 9. Para encontrar o valor demax-instances
, consulte Encontre os valores dos atributos atuais.
- O valor mais pequeno possível para este campo é o valor atual de
MAX_INSTANCES
:- O valor mais pequeno possível para este campo é o valor atual de
max_instances
. Para encontrar o valor atual, consulte o artigo Encontre os valores dos atributos atuais. - O maior valor possível para este campo é 10.
Se quiser apenas aumentar o número mínimo de instâncias, mas não o número máximo, tem de especificar o número máximo de instâncias. Por outro lado, se quiser atualizar apenas o número máximo de instâncias, mas não o mínimo, tem de especificar o número mínimo de instâncias. Para manter o número mínimo ou máximo de instâncias no respetivo valor atual, especifique o valor atual. Para encontrar o valor atual, consulte o artigo Encontre os valores dos atributos atuais.
- O valor mais pequeno possível para este campo é o valor atual de
Encontre os valores dos atributos atuais
Para encontrar os valores dos atributos atuais do conector, execute o seguinte no terminal:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
CONNECTOR_NAME
: o nome do conetorREGION
: o nome da região do conectorPROJECT
: o nome do seu Google Cloud projeto
Monitorize a utilização do conetor
A monitorização da utilização ao longo do tempo pode ajudar a determinar quando ajustar as definições de um conector. Por exemplo, se a utilização da CPU aumentar repentinamente, pode tentar aumentar o número máximo de instâncias para obter melhores resultados. Em alternativa, se estiver a atingir o limite máximo de débito, pode decidir mudar para um tipo de máquina maior.
Para apresentar gráficos do débito, do número de instâncias e das métricas de utilização da CPU do conetor ao longo do tempo através da Google Cloud consola:
Aceda à página de vista geral do Acesso a VPC sem servidor.
Clique no nome do conector que quer monitorizar.
Selecione o número de dias que quer apresentar entre 1 e 90 dias.
No gráfico Débito, mantenha o ponteiro sobre o gráfico para ver o débito recente do conector.
No gráfico Número de instâncias, mantenha o ponteiro sobre o gráfico para ver o número de instâncias usadas recentemente pelo conector.
No gráfico Utilização da CPU, mantenha o ponteiro sobre o gráfico para ver a utilização recente da CPU do conector. O gráfico apresenta a utilização da CPU distribuída pelas instâncias para os percentis 50, 95 e 99.
Elimine um conetor
Antes de eliminar um conetor, tem de o remover de todos os recursos sem servidor que ainda o usam. A eliminação de um conector antes de o remover dos recursos sem servidor impede a eliminação da rede VPC posteriormente.
Para os utilizadores da VPC partilhada que configuram conetores no projeto anfitrião da VPC partilhada, pode usar o comando gcloud compute networks vpc-access connectors describe
para listar os projetos nos quais existem recursos sem servidor que usam um determinado conetor.
Para eliminar um conetor, use a Google Cloud consola ou a CLI do Google Cloud:
Consola
Aceda à página de vista geral do Acesso a VPC sem servidor na Google Cloud consola:
Selecione o conector que quer eliminar.
Clique em Eliminar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Use o seguinte comando
gcloud
para eliminar um conetor:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Substitua o seguinte:
- CONNECTOR_NAME com o nome do conetor que quer eliminar
- REGION com a região onde o conetor está localizado
Resolução de problemas
Autorizações da conta de serviço
Para realizar operações no seu Google Cloud projeto, o Acesso a VPC sem servidor usa a conta de serviço doagente de serviço do Acesso a VPC sem servidor. O endereço de email desta conta de serviço tem o seguinte formato:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
Por predefinição, esta conta de serviço tem a função
Agente do serviço de acesso a VPC sem servidor
(roles/vpcaccess.serviceAgent
). As operações de acesso a VPC sem servidor
podem falhar se alterar as autorizações desta conta.
Mau desempenho da rede ou utilização elevada da CPU em modo inativo
A utilização de um único conetor para milhares de instâncias pode causar uma degradação do desempenho e uma utilização elevada da CPU inativa. Para corrigir este problema, divida os seus serviços entre vários conetores.
Problemas com MTU personalizado
Se tiver problemas com uma MTU personalizada, certifique-se de que usa a definição de MTU predefinida para o Cloud Run.
Erros
Erro de função do agente do serviço da conta de serviço
Se usar a restrição da política da organização Restrict Resource Service Usage
para bloquear o Cloud Deployment Manager (deploymentmanager.googleapis.com
), pode ver a seguinte mensagem de erro:
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
Defina a política da organização para remover o Deployment Manager da lista de exclusões ou adicioná-lo à lista de permissões.
Erro de criação do conetor
Se a criação de um conetor resultar num erro, experimente o seguinte:
- Especifique um intervalo de IP interno RFC 1918 que não se sobreponha a nenhuma reserva de endereço IP existente na rede VPC.
- Conceda ao seu projeto autorização para usar imagens de VMs do Compute Engine do projeto com o ID
serverless-vpc-access-images
. Para mais informações sobre como atualizar a política da sua organização em conformidade, consulte o artigo Defina restrições de acesso a imagens.
Não é possível aceder aos recursos
Se especificou um conector, mas continua a não conseguir aceder aos recursos na sua rede VPC, certifique-se de que não existem regras de firewall na sua rede VPC com uma prioridade inferior a 1000 que neguem a entrada a partir do intervalo de endereços IP do conector.
Se configurar um conector num projeto de serviço de VPC partilhada, certifique-se de que as regras de firewall permitem a entrada da sua infraestrutura sem servidor no conector.
Erro de ligação recusada
Se receber erros connection refused
ou connection timeout
que degradam o desempenho da rede, as suas ligações podem estar a aumentar sem limite nas invocações da sua aplicação sem servidor. Para limitar o número máximo de ligações usadas por instância, use uma biblioteca de cliente que suporte conjuntos de ligações. Para ver exemplos detalhados de como usar conjuntos de ligações, consulte o artigo
Faça a gestão das ligações à base de dados.
Erro de recurso não encontrado
Quando elimina uma rede VPC ou uma regra de firewall, pode ver uma mensagem semelhante à seguinte: The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
Para ver informações sobre este erro e a respetiva solução, consulte o artigo Erro de recurso não encontrado na documentação sobre as regras de firewall da VPC.
Passos seguintes
- Monitorize a atividade do administrador com o registo de auditoria do Acesso a VPC sem servidor.
- Proteja os recursos e os dados criando um perímetro de serviço com os VPC Service Controls.
- Saiba mais sobre as funções de gestão de identidade e de acesso (IAM) associadas ao acesso a VPC sem servidor. Consulte as funções do Acesso a VPC sem servidor na documentação do IAM para ver uma lista de autorizações associadas a cada função.
- Saiba como estabelecer ligação ao Memorystore a partir do ambiente padrão do App Engine.