Configurar o acesso VPC sem servidor
Use um conector de acesso VPC sem servidor para conectar o ambiente sem servidor diretamente à rede de nuvem privada virtual (VPC), permitindo acesso a instâncias de máquina virtual (VM) do Compute Engine, a instâncias do Memorystore e a quaisquer outros recursos com um endereço IP interno.
Antes de começar
Se você ainda não tiver uma rede VPC no projeto, crie uma.
Se você usar a VPC compartilhada, consulte a documentação que abrange especificamente a configuração do acesso VPC sem servidor para seu produto.
- Cloud Run: como se conectar a uma rede VPC compartilhada
- Cloud Functions: como se conectar a uma rede VPC compartilhada
- App Engine: como se conectar a uma rede VPC compartilhada
Criar um conector de acesso VPC sem servidor
Para enviar solicitações à rede VPC e receber as respostas correspondentes sem usar a Internet pública, você precisa usar um conector de acesso VPC sem servidor.
É possível criar um conector usando o console do Google Cloud, a Google Cloud CLI ou o Terraform:
Console
Certifique-se de que a API de acesso VPC sem servidor esteja ativada para o projeto.
Acesse a página de visão geral do acesso VPC sem servidor.
Clique em Criar conector.
No campo Nome, insira um nome para o conector. Esse nome precisa estar de acordo com a convenção de nomenclatura do Compute Engine, com a restrição adicional de que precisa ter menos de 21 caracteres e os hífens (-) contam como dois caracteres.
No campo Região, selecione uma região para o conector. Ela precisa corresponder à região do serviço sem servidor.
Se o serviço ou job estiver na região
us-central
oueurope-west
, useus-central1
oueurope-west1
.No campo Rede, selecione uma rede VPC para o conector.
Clique no menu suspenso Sub-rede:
Se você estiver usando a VPC compartilhada, o que exige que você use sua própria sub-rede, selecione uma sub-rede
/28
não utilizada.- As sub-redes precisam ser usadas exclusivamente pelo conector. Elas não podem ser usadas por outros recursos, como VMs, o Private Service Connect ou o balanceamento de carga HTTP(S) interno.
- Para confirmar se a sub-rede não está sendo usada para
o Private Service Connect ou o balanceamento de carga HTTP(S) interno, verifique
se o
purpose
da rede éPRIVATE
executando o seguinte comando na CLI gcloud:gcloud compute networks subnets describe SUBNET_NAME
Substitua:- SUBNET_NAME: o nome da sub-rede
Se você não estiver usando a VPC compartilhada e preferir que o conector crie uma sub-rede em vez de criar uma explicitamente, selecione Intervalo de IP personalizado no menu suspenso. Em seguida, no campo Intervalo de IP, insira o primeiro endereço em um intervalo de IP CIDR
/28
interno não reservado. Ele não pode sobrepor nenhuma reserva de endereço IP atual na rede VPC. Por exemplo,10.8.0.0
(/28
) funcionará na maioria dos novos projetos.
Opcional: se você quiser configurar opções de escalonamento para ter mais controle sobre o conector, clique em Mostrar configurações de escalonamento para exibir o formulário de escalonamento:
- Defina os números mínimo e máximo de instâncias para seu conector
ou use os padrões, que são 2 (mínimo) e 10 (máximo). O
conector é escalonado de acordo com o máximo especificado se o uso do tráfego exigir, mas
o conector não reduz o escalonamento quando o tráfego diminui.
É preciso usar valores entre
2
e10
. - No menu suspenso Tipo de instância, escolha o tipo de máquina a ser usado para o conector ou use o
padrão
e2-micro
. Observe a barra lateral de custo à direita ao escolher o tipo de instância, que exibe a largura de banda e as estimativas de custo.
- Defina os números mínimo e máximo de instâncias para seu conector
ou use os padrões, que são 2 (mínimo) e 10 (máximo). O
conector é escalonado de acordo com o máximo especificado se o uso do tráfego exigir, mas
o conector não reduz o escalonamento quando o tráfego diminui.
É preciso usar valores entre
Clique em Criar.
Uma marca de seleção verde aparecerá ao lado do nome do conector quando ele estiver pronto para uso.
gcloud
Atualize os componentes
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API de acesso VPC sem servidor esteja ativada para seu projeto:
gcloud services enable vpcaccess.googleapis.com
Se você estiver usando a VPC compartilhada, o que exige que você use sua própria sub-rede, crie um conector com o comando a seguir:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET \ # If you are not using Shared VPC, omit the following line. --subnet-project HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances MIN \ --max-instances MAX \ # Optional: specify machine type, default is e2-micro --machine-type MACHINE_TYPE
Substitua:
CONNECTOR_NAME
: um nome para o conector. Ele precisa estar de acordo com a convenção de nomenclatura do Compute Engine, com a restrição adicional de que precisa ter menos de 21 caracteres e hífens (-) contando como dois caracteres.REGION
: uma região do conector. Ela precisa corresponder à região do serviço ou job sem servidor. Se o serviço ou job estiver na regiãous-central
oueurope-west
, useus-central1
oueurope-west1
.SUBNET
: o nome de uma sub-rede/28
não utilizada.- As sub-redes precisam ser usadas exclusivamente pelo conector. Elas não podem ser usadas por outros recursos, como VMs, o Private Service Connect ou o balanceamento de carga HTTP(S) interno.
- Para confirmar se a sub-rede não está sendo usada para
o Private Service Connect ou o balanceamento de carga HTTP(S) interno, verifique
se o
purpose
da rede éPRIVATE
executando o seguinte comando na CLI gcloud:gcloud compute networks subnets describe SUBNET_NAME
Substitua:- SUBNET_NAME: o nome da sub-rede.
HOST_PROJECT_ID
: o ID do projeto host. Forneça-o somente se você estiver usando uma VPC compartilhada.MIN
: é o número mínimo de instâncias a serem usadas no conector. Use um número inteiro entre2
e9
. O padrão é2
. Para saber mais sobre o escalonamento do conector, consulte Capacidade de processamento e escalonamento.MAX
: o número máximo de instâncias a serem usadas no conector. Use um número inteiro entre3
e10
. O padrão é10
. Se o tráfego exigir, o conector será escalonado horizontalmente para instâncias[MAX]
, mas a escala não será reduzida. Para saber mais sobre o escalonamento do conector, consulte Capacidade de processamento e escalonamento.MACHINE_TYPE
:f1-micro
,e2-micro
, oue2-standard-4
. Para saber mais sobre a capacidade de processamento do conector, incluindo o tipo de máquina e o escalonamento, consulte Capacidade de processamento e escalonamento.
Para mais detalhes e argumentos opcionais, consulte a página de referência da
gcloud
.Se você não estiver usando a VPC compartilhada e quiser fornecer um intervalo de IP personalizado em vez de usar uma sub-rede, crie um conector com o comando:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --network VPC_NETWORK \ --region REGION \ --range IP_RANGE
Substitua:
CONNECTOR_NAME
: um nome para o conector. Ele precisa estar de acordo com a convenção de nomenclatura do Compute Engine, com a restrição adicional de que precisa ter menos de 21 caracteres e hífens (-
) contando como dois caracteres.VPC_NETWORK
: a rede VPC a que seu conector será anexado.REGION
: uma região para o conector. Ela precisa corresponder à região do serviço ou job sem servidor. Se o serviço ou job estiver na regiãous-central
oueurope-west
, useus-central1
oueurope-west1
.IP_RANGE
: uma rede de IP interno não reservada, e é necessário ter/28
de espaço não alocado. O valor fornecido é a rede em notação CIDR (10.8.0.0/28
). Esse intervalo de IP não pode se sobrepor a nenhuma reserva de endereço IP existente na rede VPC. Por exemplo,10.8.0.0/28
funciona na maioria dos projetos novos.
Para mais detalhes e argumentos opcionais, como controles de capacidade, consulte a referência do
gcloud
.Verifique se o conector está no estado
READY
antes de usá-lo:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Substitua:
CONNECTOR_NAME
: o nome do conector. Este é o nome que você especificou na etapa anterior.REGION
: a região do conector. Esta é a região especificada na etapa anterior.
A saída precisa conter a linha
state: READY
.
Terraform
É possível usar um
recurso do Terraform para ativar a API vpcaccess.googleapis.com
.
É possível usar módulos do Terraform para criar uma rede VPC e uma sub-rede e, em seguida, criar o conector.
Configurar o ambiente sem servidor para usar um conector
Depois de criar um conector de acesso VPC sem servidor, configure o ambiente sem servidor para usar o conector seguindo as instruções para o ambiente sem servidor:
- Configurar o Cloud Run
- Configuraro Cloud Functions
- Configurar o App Engine
O tráfego de IPv6 não é compatível.
Configure o Cloud Run para usar um conector
Quando você cria um novo serviço ou implanta uma nova revisão, é possível configurar o serviço para usar um conector com o console do Google Cloud, a Google Cloud CLI, um arquivo YAML ou um recurso do Terraform.
Console
Clique em Criar serviço se estiver configurando um novo serviço em que fará uma implantação. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço conforme desejado e clique em Contêiner, redes, segurança para expandir a página de configuração do serviço.
Clique na guia Conexões.
No campo Conector VPC, selecione um conector para usar ou selecione Nenhum para desconectar seu serviço de uma rede VPC.
Clique em Criar ou Implantar.
gcloud
Para especificar um conector durante a implantação, use a sinalização --vpc-connector
:
gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
SERVICE
pelo nome do serviço;- Substitua
IMAGE_URL
. - Substitua
CONNECTOR_NAME
pelo nome do seu conector. Se o conector estiver no projeto host de uma VPC compartilhada, este precisará ser o nome totalmente especificado, por exemplo:projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
em que HOST_PROJECT_ID é o ID do projeto host, CONNECTOR_REGION é a região do conector e CONNECTOR_NAME é o nome que você deu ao conector.
Para anexar, atualizar ou remover um conector de um serviço atual, use o comando gcloud run services update
com uma das seguintes sinalizações, conforme necessário:
Por exemplo, para anexar ou atualizar um conector:
gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
- Substitua
SERVICE
pelo nome do serviço. - Substitua
CONNECTOR_NAME
pelo nome do seu conector.
YAML
É possível fazer o download e conferir as configurações de serviço usando o
comando gcloud run services describe --format export
, que produz
resultados limpos no formato YAML.
Em seguida, modifique os campos descritos abaixo e
faça upload do YAML modificado usando o comando gcloud run services replace
.
Modifique os campos somente conforme documentado.
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Adicione ou atualize o atributo
run.googleapis.com/vpc-access-connector
no atributoannotations
no atributospec
de nível superior:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
- Substitua
SERVICE
pelo nome do serviço do Cloud Run. - Substitua
CONNECTOR_NAME
pelo nome do seu conector. Se o conector estiver no projeto host de uma VPC compartilhada, este precisará ser o nome totalmente especificado, por exemplo:projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
em que HOST_PROJECT_ID é o ID do projeto host, CONNECTOR_REGION é a região do conector e CONNECTOR_NAME é o nome que você deu ao conector.
- Substitua
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud beta run services replace service.yaml
Terraform
É possível usar um recurso do Terraform para criar um serviço e configurá-lo para usar seu conector.
Configurar o Cloud Functions para usar um conector
É possível configurar uma função para usar um conector no Console do Google Cloud ou com a Google Cloud CLI:
Console
Acesse a página de visão geral do Cloud Functions no console do Google Cloud:
Clique em Criar função. Como alternativa, clique em uma função existente para acessar a página de informações dela e clique em Editar.
Expanda as configurações avançadas clicando em CONFIGURAÇÕES DE TEMPO DE EXECUÇÃO, CRIAÇÃO E CONEXÕES.
Na guia Conexões, em "Configurações de saída", insira o nome do conector no campo Conector de VPC.
gcloud
Use o comando gcloud functions deploy
para implantar a função e especificar a sinalização --vpc-connector
:
gcloud functions deploy FUNCTION_NAME \ --vpc-connector CONNECTOR_NAME \ FLAGS...
em que:
FUNCTION_NAME
é o nome da função.CONNECTOR_NAME
é o nome do conector. Se o conector estiver no projeto host de uma VPC compartilhada, este precisará ser o nome totalmente especificado, por exemplo:projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
em que HOST_PROJECT_ID é o ID do projeto host, CONNECTOR_REGION é a região do conector e CONNECTOR_NAME é o nome que você deu ao conector.FLAGS...
refere-se a outras sinalizações que são transmitidas durante a implantação da função.
Para ter mais controle sobre quais solicitações são roteadas pelo conector, consulte Configurações de saída.
Configurar o App Engine para usar um conector
Python 2
Interrompa o uso do serviço de busca de URL do App Engine.
Por padrão, todas as solicitações são roteadas pelo serviço de busca de URL. Isso faz com que as solicitações feitas à rede VPC falhem. Para desativar esse padrão, consulte Como desativar a busca de URL de todas as solicitações de saída.
Você ainda pode usar a biblioteca
urlfetch
diretamente para solicitações individuais, se necessário, mas isso não é recomendado.Adicione o campo "Acesso VPC sem servidor" ao arquivo
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Substitua:
PROJECT_ID
pelo ID do projeto do Cloud. Se o conector estiver no projeto host de uma VPC compartilhada, ele precisa ser o ID do projeto host.REGION
pela região em que o conector se encontra;CONNECTOR_NAME
pelo nome do conector.
Implante o serviço:
gcloud app deploy
Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.
Java 8
Interrompa o uso do serviço de busca de URL do App Engine
URLFetchService
.Adicione o elemento de acesso VPC sem servidor ao arquivo
appengine-web.xml
do serviço:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> </vpc-access-connector>
Substitua:
PROJECT_ID
pelo ID do projeto do Cloud. Se o conector estiver no projeto host de uma VPC compartilhada, ele precisa ser o ID do projeto host.REGION
pela região em que o conector se encontra;CONNECTOR_NAME
pelo nome do conector.
Implante o serviço:
gcloud app deploy WEB-INF/appengine-web.xml
Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.
Go 1.11
Interrompa o uso do serviço de busca de URL do App Engine.
O acesso VPC sem servidor não é compatível com a busca de URL, e as solicitações feitas usando essa busca ignoram as configurações de acesso VPC sem servidor. Em vez disso, faça conexões de saída com soquetes.
Adicione o campo "Acesso VPC sem servidor" ao arquivo
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Substitua:
PROJECT_ID
pelo ID do projeto do Cloud;REGION
pela região em que o conector se encontra;CONNECTOR_NAME
pelo nome do conector.
Implante o serviço:
gcloud app deploy
Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.
Todos os outros ambientes de execução
Adicione o campo "Acesso VPC sem servidor" ao arquivo
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Substitua:
PROJECT_ID
pelo ID do projeto do Cloud. Se o conector estiver no projeto host de uma VPC compartilhada, ele precisa ser o ID do projeto host.REGION
pela região em que o conector se encontra;CONNECTOR_NAME
pelo nome do conector.
Implante o serviço:
gcloud app deploy
Depois de reimplantado, o serviço pode enviar solicitações para endereços IP internos a fim de acessar recursos na rede VPC.
Restringir o acesso a recursos da VPC
É possível restringir o acesso do conector à sua rede VPC usando regras de firewall.
Ao se conectar a uma rede VPC compartilhada com conectores nos projetos de serviço, as regras de firewall não são criadas automaticamente. Um usuário com o papel de Administrador de rede no projeto host define regras de firewall ao configurar o projeto host.
Quando você se conecta a uma rede VPC autônoma ou a uma rede VPC compartilhada que tem o conector no projeto host, uma regra de firewall implícita com prioridade 1.000 é criada automaticamente na rede VPC para permitir a entrada pela sub-rede do conector ou intervalo personalizado de IP a todos os destinos na rede VPC. Observação: a regra de firewall implícita não é visível no console do Google Cloud e existe apenas enquanto o conector associado existir. Se você não quiser que o conector alcance todos os destinos na rede VPC, restrinja o acesso dele.
É possível restringir o acesso do conector criando regras de entrada no recurso de destino ou criando regras de saída no conector VPC.
Restringir o acesso usando regras de entrada
Escolha tags de rede ou intervalos CIDR para controlar o tráfego de entrada para a rede VPC:
Tags de rede
Nas etapas a seguir, mostramos como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base nas tags de rede do conector.
Verifique se você tem as permissões necessárias para inserir regras de firewall. Você precisa ter um dos seguintes papéis de gerenciamento de identidade e acesso (IAM):
- Papel Administrador de segurança do Compute
- Papel de IAM personalizado com a permissão
compute.firewalls.create
ativada
Nega o tráfego do conector na sua rede VPC.
Crie uma regra de firewall de entrada com prioridade menor que 1.000 na sua rede VPC para negar a entrada da tag de rede do conector. Isso substitui a regra de firewall implícita que o acesso VPC sem servidor cria na rede VPC por padrã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:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
deny-vpc-connector
.PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag deallow
.Para fins de segurança e validação, também é possível configurar regras de negação para bloquear o tráfego para os seguintes protocolos sem suporte:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_NETWORK_TAG: a tag de rede universal do conector se você quiser restringir o acesso a todos os conectores (incluindo todos os conectores feitos no futuro), ou a tag de rede única se quiser restringir o acesso a um conector específico.
- Tag de rede universal:
vpc-connector
Tag de rede única:
vpc-connector-REGION-CONNECTOR_NAME
Substitua:
- REGION: a região do conector que você quer restringir
- CONNECTOR_NAME: o nome do conector que você quer restringir
Para saber mais sobre as tags de rede do conector, consulte Tags de rede.
- Tag de rede universal:
VPC_NETWORK: o nome da rede VPC.
PRIORITY: um número inteiro de 1 a 999, inclusive. Por exemplo: 990.
Permitir tráfego do conector para o recurso que precisa receber tráfego do conector.
Use as sinalizações
allow
etarget-tags
para criar uma regra de firewall de entrada que segmente o recurso na rede VPC que você quer que o conector VPC acesse. Defina a prioridade para essa regra como um valor menor que a prioridade da regra criada na etapa 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:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag deallow
.VPC_CONNECTOR_NETWORK_TAG: a tag de rede universal do conector se você quiser restringir o acesso a todos os conectores (incluindo todos os conectores feitos no futuro), ou a tag de rede única se quiser restringir o acesso a um conector específico. Isso precisa corresponder à tag de rede que você especificou na etapa anterior.
- Tag de rede universal:
vpc-connector
Tag de rede única:
vpc-connector-REGION-CONNECTOR_NAME
Substitua:
- REGION: a região do conector que você quer restringir
- CONNECTOR_NAME: o nome do conector que você quer restringir
Para saber mais sobre as tags de rede do conector, consulte Tags de rede.
- Tag de rede universal:
VPC_NETWORK: o nome da rede VPC.
RESOURCE_TAG: a tag de rede do recurso da VPC que você quer que o conector da VPC acesse.
PRIORITY: um número inteiro menor que a prioridade que você definiu na etapa anterior. Por exemplo, se você definir a prioridade da regra criada na etapa anterior como 990, tente 980.
Para mais informações sobre as sinalizações obrigatórias e opcionais para criar
regras de firewall, consulte a
documentação de gcloud compute firewall-rules create
.
Intervalo CIDR
Nas etapas a seguir, mostramos como criar regras de entrada que restringem o acesso de um conector à sua rede VPC com base no intervalo CIDR do conector.
Verifique se você tem as permissões necessárias para inserir regras de firewall. Você precisa ter um dos seguintes papéis de gerenciamento de identidade e acesso (IAM):
- Papel Administrador de segurança do Compute
- Papel de IAM personalizado com a permissão
compute.firewalls.create
ativada
Nega o tráfego do conector na sua rede VPC.
Crie uma regra de firewall de entrada com prioridade menor que 1.000 na sua rede VPC para negar a entrada do intervalo CIDR do conector. Isso substitui a regra de firewall implícita que o acesso VPC sem servidor cria na rede VPC por padrã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:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
deny-vpc-connector
.PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag deallow
.Para fins de segurança e validação, também é possível configurar regras de negação para bloquear o tráfego para os seguintes protocolos sem suporte:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector em que seu acesso está restrito
VPC_NETWORK: o nome da rede VPC.
PRIORITY: um número inteiro de 1 a 999. Por exemplo: 990.
Permitir tráfego do conector para o recurso que precisa receber tráfego do conector.
Use as sinalizações
allow
etarget-tags
para criar uma regra de firewall de entrada que segmente o recurso na rede VPC que você quer que o conector VPC acesse. Defina a prioridade para essa regra como um valor menor que a prioridade da regra criada na etapa 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:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag deallow
.VPC_CONNECTOR_CIDR_RANGE: o intervalo CIDR do conector em que seu acesso está restrito
VPC_NETWORK: o nome da rede VPC.
RESOURCE_TAG: a tag de rede do recurso da VPC que você quer que o conector da VPC acesse.
PRIORITY: um número inteiro menor que a prioridade que você definiu na etapa anterior. Por exemplo, se você definir a prioridade da regra criada na etapa anterior como 990, tente 980.
Para mais informações sobre as sinalizações obrigatórias e opcionais para criar
regras de firewall, consulte a
documentação de gcloud compute firewall-rules create
.
Restringir o acesso usando regras de saída
As etapas a seguir mostram como criar regras de saída para restringir o acesso ao conector.
Verifique se você tem as permissões necessárias para inserir regras de firewall. Você precisa ter um dos seguintes papéis do Identity and Access Management (IAM):
- Papel Administrador de segurança do Compute
- Papel de IAM personalizado com a permissão
compute.firewalls.create
ativada
Negue o tráfego de saída do conector.
Crie uma regra de firewall de saída no conector de acesso VPC sem servidor a fim de impedir o envio de tráfego de saída.
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:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
deny-vpc-connector
.PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag deallow
.Para fins de segurança e validação, também é possível configurar regras de negação para bloquear o tráfego para os seguintes protocolos sem suporte:
ah
,all
,esp
,icmp
,ipip
esctp
.VPC_CONNECTOR_NETWORK_TAG: a tag de rede do conector VPC universal se você quiser que a regra se aplique a todos os conectores VPC existentes e a quaisquer conectores VPC no futuro. Ou a tag de rede do conector de VPC exclusiva, se você quiser controlar um conector específico.
VPC_NETWORK: o nome da rede VPC.
PRIORITY: um número inteiro de 1 a 999. Por exemplo: 990.
Permitir tráfego de saída quando o destino estiver no intervalo CIDR que você quer que o conector acesse.
Use as sinalizações
allow
edestination-ranges
para criar uma regra de firewall que permita o tráfego de saída do conector para um intervalo de destino específico. Defina o intervalo de destino para o intervalo CIDR do recurso na rede VPC que você quer que o conector possa acessar. Defina a prioridade dessa regra como um valor menor do que a prioridade da regra criada na etapa 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:
RULE_NAME: o nome da nova regra de firewall. Por exemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: um ou mais protocolos que você quer permitir no conector de VPC. Os protocolos compatíveis são
tcp
ouudp
. Por exemplo,tcp:80,udp
permite o tráfego TCP pela porta 80 e pelo UDP. Para mais informações, consulte a documentação da flag deallow
.RESOURCE_CIDR_RANGE: o intervalo CIDR do conector em que seu acesso está restrito
VPC_NETWORK: o nome da rede VPC.
VPC_CONNECTOR_NETWORK_TAG: a tag de rede do conector VPC universal se você quiser que a regra se aplique a todos os conectores VPC existentes e a quaisquer conectores VPC no futuro. Ou a tag de rede do conector de VPC exclusiva, se você quiser controlar um conector específico. Se você tiver usado a tag de rede exclusiva na etapa anterior, use essa tag.
PRIORITY: um número inteiro menor que a prioridade que você definiu na etapa anterior. Por exemplo, se você definir a prioridade da regra criada na etapa anterior como 990, tente 980.
Para mais informações sobre as sinalizações obrigatórias e opcionais para criar
regras de firewall, consulte a
documentação de gcloud compute firewall-rules create
.
Atualizar um conector
É possível atualizar os seguintes atributos do conector usando o console do Google Cloud, a Google Cloud CLI ou a API:
- Tipo de máquina (instância)
- Número mínimo e máximo de instâncias
Atualizar tipo de máquina
Console
Vá para a página de visão geral do acesso VPC sem servidor.
Selecione o conector que você quer editar e clique em Editar.
A página de detalhes do conector exibe gráficos relacionados à capacidade de processamento dele, ao número de instâncias e às métricas de utilização da CPU.
Na lista Tipo de instância, selecione o tipo de máquina (instância) de sua preferência. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação sobre capacidade de processamento e escalonamento.
gcloud
Para atualizar o tipo de máquina do conector, execute o seguinte comando no seu terminal:
gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
Substitua:CONNECTOR_NAME
: o nome do conectorREGION
: o nome da região do conectorMACHINE_TYPE
: o tipo de máquina de sua preferência. Para saber mais sobre os tipos de máquinas disponíveis, consulte a documentação em Capacidade e escalonamento.
Diminuir o número mínimo e máximo de instâncias
Para diminuir o número de instâncias mínima e máxima, faça o seguinte:
- Crie um novo conector com os valores da sua preferência.
- Atualize o serviço ou a função para usar o novo conector.
- Exclua o conector antigo ao mover o tráfego.
Consulte Criar conector de acesso VPC sem servidor para mais informações.
Aumentar o número mínimo e máximo de instâncias
Console
Vá para a página de visão geral do acesso VPC sem servidor.
Selecione o conector que você quer editar e clique em Editar.
No campo Instâncias mínimas, selecione o número mínimo de instâncias que você quer.
O menor valor possível para esse campo é o valor atual. O maior valor possível desse 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 será 7.
No campo Máximo de instâncias, selecione o número máximo de instâncias que você quer.
O menor valor possível para esse campo é o valor atual. O maior valor possível para esse campo é 10.
gcloud
- Para aumentar o número mínimo ou máximo de instâncias para o conector, execute o seguinte comando no terminal:
gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
Substitua:
CONNECTOR_NAME
: o nome do conectorREGION
: o nome da região do conectorMIN_INSTANCES
: o número mínimo de instâncias que você preferir.- O menor valor possível para esse campo é o valor atual de
min_instances
. Para encontrar o valor atual, consulte Encontrar os valores de atributo atuais. - O maior valor possível para esse campo é o valor atual de
max_instances
menos 1, porquemin_instances
precisa ser menor quemax_instances
. Por exemplo, semax_instances
for 8, o maior valor possível para esse campo será 7. Se o conector usar o valor padrãomax-instances
de 10, o maior valor possível desse campo será 9. Para encontrar o valor demax-instances
, consulte Encontrar os valores atuais do atributo.
- O menor valor possível para esse campo é o valor atual de
MAX_INSTANCES
:- O menor valor possível para esse campo é o valor atual de
max_instances
. Para encontrar o valor atual, consulte Encontrar os valores de atributo atuais. - O maior valor possível para esse campo é 10.
Se você quiser aumentar o número mínimo de instâncias, mas não o máximo, ainda precisará especificar o número máximo de instâncias. Por outro lado, se você quiser atualizar apenas o número máximo de instâncias, mas não o mínimo, ainda precisará especificar a quantidade mínima de instâncias. Para manter o número mínimo ou máximo de instâncias no valor atual, especifique o valor atual. Para encontrar o valor atual, consulte Encontrar os valores do atributo atual.
- O menor valor possível para esse campo é o valor atual de
Encontrar os valores atuais dos atributos
Para encontrar os valores de atributo atuais do conector, execute o seguinte no terminal:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
Substitua:CONNECTOR_NAME
: o nome do conectorREGION
: o nome da região do conectorPROJECT
: o nome do seu projeto do Google Cloud
Excluir um conector
Antes de excluir um conector, verifique se nenhum serviço ou job ainda está conectado a ele.
Para usuários de VPC compartilhada que configuram conectores no projeto host
da VPC compartilhada, use o comando
gcloud compute networks vpc-access connectors describe
para listar os projetos em que há serviços ou jobs que usam um determinado
conector.
Para excluir um conector, use o console do Google Cloud ou a Google Cloud CLI:
Console
Acesse a página de visão geral do acesso VPC sem servidor no console do Google Cloud:
Selecione o conector que você quer excluir.
Clique em Excluir.
gcloud
Use o seguinte comando gcloud
para excluir um conector:
gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Substitua:
- CONNECTOR_NAME pelo nome do conector que você quer excluir;
- REGION pela região onde o conector está localizado.
Solução de problemas
Permissões de conta de serviço
Para realizar operações no projeto do Cloud, o acesso VPC sem servidor usa a conta de serviço do Agente de serviço de acesso VPC sem servidor. O endereço de e-mail dessa conta de serviço tem o seguinte formato:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
Por padrão, essa conta de serviço tem o papel Agente de serviço de acesso VPC sem servidor (roles/vpcaccess.serviceAgent
). As operações de acesso VPC sem servidor podem falhar se você alterar as permissões dessa conta.
Erros
Erro de criação do conector
Se a criação de um conector resultar em erro, tente 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 permissão ao projeto para usar imagens de VM do Compute Engine do
projeto com o ID
serverless-vpc-access-images
. Para mais informações sobre como atualizar a política da organização adequadamente, consulte Definir restrições de acesso a imagens.
Não é possível acessar os recursos
Se você especificou um conector, mas ainda assim não consegue acessar os recursos na rede VPC, verifique se não há regras de firewall na rede VPC com prioridade inferior a 1.000 que recusem a entrada do intervalo de endereços IP do seu conector.
Erro de conexão recusada
Se você receber erros connection refused
que degradam o desempenho da rede,
as conexões podem aumentar sem limite de invocações de
aplicativo
sem servidor. Para limitar o número máximo de conexões usadas por
instância, use uma biblioteca de cliente compatível com pools de conexões. Para exemplos detalhados
de como usar pools de conexão, consulte
Gerenciar conexões de banco de dados.
Erro de recurso não encontrado
Ao excluir uma rede VPC ou uma regra de firewall, talvez seja exibida uma mensagem semelhante a esta: The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
Para informações sobre esse erro e a respectiva solução, consulte Erro de recurso não encontrado na documentação das regras de firewall da VPC.
Próximas etapas
- Monitore a atividade do administrador com o registro de auditoria de acesso VPC sem servidor.
- Proteja recursos e dados criando um perímetro de serviço com o VPC Service Controls.
- Saiba mais sobre os papéis de gerenciamento de identidade e acesso (IAM, na sigla em inglês) associados ao acesso VPC sem servidor. Consulte Papéis de acesso VPC sem servidor na documentação do IAM para uma lista de permissões associadas a cada papel.
- Saiba como se conectar ao Memorystore pelo: