Saiba usar o acesso VPC sem servidor para conectar seus serviços do App Engine no ambiente padrão diretamente à sua rede VPC, permitindo acesso a instâncias de VM do Compute Engine, instâncias do Memorystore e 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 Como se conectar a uma rede VPC compartilhada.
No Console do Google Cloud, verifique se a API de acesso VPC sem servidor está ativada no projeto.
Criar um conector de acesso VPC sem servidor
Para enviar solicitações à sua rede VPC e receber as respostas correspondentes sem usar a Internet pública, use um conector de acesso VPC sem servidor.
Se o conector estiver localizado no mesmo projeto que a VPC é possível criar um conector usando uma sub-rede existente um conector e uma nova sub-rede.
Se o conector estiver localizado em um projeto de serviço e usar uma VPC compartilhada rede, o conector e a rede VPC associada estão no projetos diferentes. Quando um conector e a respectiva rede VPC estão no projetos diferentes, o administrador da rede VPC compartilhada precisa criar sub-rede do conector na rede VPC compartilhada antes de criar a e é necessário criar o conector usando uma sub-rede existente.
Para saber mais sobre os requisitos da sub-rede, consulte sub-rede do conector. requisitos.
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.
É possível criar um conector usando o console do Google Cloud, a Google Cloud CLI ou o Terraform.
Console
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, o que corresponde Nomenclatura do Compute Engine tradicionais, com os requisitos adicionais de que o nome deve ser menor que 21 caracteres, e que hifens (-) são contados 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.
No campo Sub-rede, selecione uma das seguintes opções:
Criar um conector usando uma sub-rede existente: selecione o conector sub-rede no campo Sub-rede.
Crie um conector e uma nova sub-rede: selecione Intervalo de IP personalizado no no campo Sub-rede. Em seguida, insira o primeiro endereço em um
/28
não usado CIDR (por exemplo,10.8.0.0/28
) a ser usado como o endereço IPv4 principal intervalo de uma nova sub-rede criada pelo Google Cloud no rede VPC. Verifique se o intervalo de IP não está em conflito a rotas existentes na rede VPC do conector. O nome da nova sub-rede começa com "aet-". .
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
-
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
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
Crie o conector usando uma destas opções:
Para mais detalhes e argumentos opcionais, consulte a página de referência da
gcloud
.Criar um conector usando 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:
CONNECTOR_NAME
: um nome para o conector correspondente às convenções de nomenclatura do Compute Engine, com os requisitos adicionais de que o nome deve ter menos de 21 caracteres, e que os hifens (-) contam como dois caracteres.REGION
: uma região para seu conector, correspondente ao do serviço ou job sem servidor. Se seu serviço ou trabalho é nous-central
oueurope-west
, useus-central1
oueurope-west1
.SUBNET_NAME
: o nome da sub-rede atual.HOST_PROJECT_ID
: o ID do projeto host da VPC compartilhada Se o conector e a sub-rede existente estiverem localizados o mesmo projeto, omita a sinalização--subnet-project
.MIN
: é o número mínimo de instâncias a serem usadas no conector. Use um número inteiro entre2
(padrão) e9
.MAX
: o número máximo de instâncias a serem usadas para o conector. Use um número inteiro entre3
e10
(padrão). Se o conector for escalonado até o número máximo de instâncias, ele não reduz a escala vertical.MACHINE_TYPE
precisa ser um dos seguintes:f1-micro
,e2-micro
oue2-standard-4
.
Crie um conector 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:
CONNECTOR_NAME
: um nome para o conector correspondente às convenções de nomenclatura do Compute Engine, com os requisitos adicionais de que o nome deve ter menos de 21 caracteres, e que os hifens (-) contam como dois caracteres.REGION
: uma região para seu conector, correspondente ao do serviço ou job sem servidor. Se seu serviço ou trabalho é nous-central
oueurope-west
, useus-central1
oueurope-west1
.VPC_NETWORK
: o nome da VPC rede para se conectar ao conector. O conector e o A rede VPC precisa estar localizada no mesmo projeto.IP_RANGE
: forneça um CIDR/28
não utilizado (por exemplo10.8.0.0/28
) para usar como o intervalo de endereços IPv4 principal de uma nova sub-rede criada pelo Google Cloud no rede VPC. Certifique-se de que o intervalo de IP não entrar em conflito com rotas existentes no contêiner rede VPC. O nome da nova sub-rede começa com o termo "aet-" .MIN
: é o número mínimo de instâncias a serem usadas no conector. Use um número inteiro entre2
(padrão) e9
.MAX
: o número máximo de instâncias a serem usadas para o conector. Use um número inteiro entre3
e10
(padrão). Se o conector for escalonado até o número máximo de instâncias, ele não reduz a escala vertical.MACHINE_TYPE
precisa ser um dos seguintes:f1-micro
,e2-micro
oue2-standard-4
.
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.
Como configurar o serviço para usar um conector
Depois de criar um conector de acesso VPC sem servidor, configure cada serviço do aplicativo do App Engine que você quer conectar à rede VPC.
Para especificar um conector para um serviço no aplicativo, siga estas etapas:
Adicione o campo
vpc_access_connector
ao arquivoapp.yaml
do serviço:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
PROJECT_ID
é o ID do projeto do Google Cloud,REGION
é a região em que o conector está eCONNECTOR_NAME
é o 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.
Acesso a recursos da VPC
Regras de firewall necessárias para conectores em projetos de serviço
Se você criar um conector em uma rede VPC independente ou no projeto host de uma rede VPC compartilhada, o Google Cloud criará as regras de firewall necessárias para a operação do conector. Para mais informações, consulte Regras de firewall para conectores em redes VPC independentes ou projetos de host da VPC compartilhada.
No entanto, se você criar um conector em um projeto de serviço e o conector segmentar uma rede VPC compartilhada no projeto host, será necessário adicionar regras de firewall para permitir o tráfego necessário para a operação do conector nos seguintes intervalos:
- Intervalo de IP da infraestrutura sem servidor:
35.199.224.0/19
- Intervalos de IP da sondagem de verificação de integridade:
35.191.0.0/16
,35.191.192.0/18
e130.211.0.0/22
Esses intervalos são usados pela infraestrutura do Google, que serve como base para o Cloud Run, as funções do Cloud Run e o ambiente padrão do App Engine. Todas as solicitações desses endereços IP são originadas na infraestrutura do Google para garantir que cada recurso sem servidor se comunique apenas com o conector ao qual está conectado.
Você também precisa permitir o tráfego da sub-rede do conector para os recursos na sua rede VPC.
Para executar essas etapas, você precisa ter um dos seguintes papéis no projeto host:
- Papel de proprietário(
roles/owner
) - Papel Administrador de segurança do Compute (
roles/compute.securityAdmin
) - Papel personalizado de gerenciamento de identidade e acesso (IAM, na sigla em inglês) com
a permissão
compute.firewalls.create
ativada
Para uma configuração simples, aplique as regras para permitir que os recursos sem servidor em qualquer projeto de serviço conectado à rede VPC compartilhada enviem solicitações para qualquer recurso da rede.
Para aplicar essas regras, execute os seguintes comandos no projeto host:
Crie regras de firewall que permitam que as solicitações da infraestrutura sem servidor e das sondagens de verificação de integridade do Google alcancem todos os conectores na rede. Nesses comandos, as portas UDP e TCP são usadas como proxies e para verificações de integridade HTTP, respectivamente. 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 a que você quer anexar o conector.Crie uma regra de firewall de entrada na sua rede VPC para permitir solicitações de conectores que segmentam essa rede:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
Essa regra concede ao conector acesso a todos os recursos da rede. Para limitar os recursos que seu ambiente sem servidor pode alcançar usando "acesso VPC sem servidor", consulte Restringir o acesso da VM do conector aos recursos de rede VPC.
Criar regras de firewall para conectores específicos
Seguir o procedimento descrito em Regras de firewall obrigatórias para conectores em projetos de serviço resulta em regras de firewall que se aplicam a todos os conectores, tanto os atuais quanto os criados no futuro. Se você não quiser fazer isso, mas quiser criar regras somente para conectores específicos, poderá definir o escopo das regras para que elas se apliquem apenas a esses conectores.
Para limitar o escopo das regras a conectores específicos, use um destes mecanismos:
- Tags de rede: cada conector tem duas tags de rede:
vpc-connector
evpc-connector-REGION-CONNECTOR_NAME
. Use o último formato para limitar o escopo das suas regras de firewall a um conector específico. - Intervalos de IP: use esse método apenas para regras de saída, porque ele não funciona para regras de entrada. É possível usar o intervalo de IP da sub-rede do conector para limitar o escopo das regras de firewall a um único conector de VPC.
Restringir recursos de rede VPC de acesso à VM do conector
É possível restringir o acesso do conector a recursos na rede VPC de destino usando regras de firewall da VPC ou regras em políticas de firewall. Você pode realizar essas restrições usando uma das seguintes estratégias:
- Crie regras de entrada com destinos que representem os recursos a que você quer limitar o acesso da VM do conector e com origens que representem as VMs do conector.
- Crie regras de saída que tenham destinos que representem as VMs do conector e que os destinos representem os recursos a que você quer limitar o acesso da VM do conector.
Os exemplos a seguir ilustram cada estratégia.
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 entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.
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 entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.
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 para impedir que ele envie tráfego de saída, exceto para 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:
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 entre 0 e 65535. Por exemplo, 0 define a prioridade mais alta.
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
.
Gerenciar o conector
Como controlar o tráfego de saída de um serviço
Por padrão, somente solicitações para endereços IP internos e nomes DNS internos são roteadas por meio de um conector de acesso VPC sem servidor. É possível
especificar a configuração de saída para o serviço no arquivo app.yaml
.
As configurações de saída não são compatíveis com o serviço de busca de URL.
O uso da biblioteca urlfetch
ignora as configurações de saída, e as solicitações não serão
roteadas por um conector de acesso VPC sem servidor.
Para configurar o comportamento de saída do serviço do App Engine:
Adicione o atributo
egress_setting
ao campovpc_access_connector
do arquivoapp.yaml
do serviço:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
Substitua:
PROJECT_ID
pelo ID do projeto do Google CloudREGION
pela região em que o conector está;CONNECTOR_NAME
pelo nome do conector;EGRESS_SETTING
por um destes procedimentos:private-ranges-only
Padrão. Somente solicitações para intervalos de endereços IP RFC 1918 e RFC 6598 ou nomes de DNS internos são roteadas para a rede VPC. Todas as outras solicitações são roteadas diretamente para a Internet.all-traffic
Todas as solicitações de saída do serviço são encaminhadas para a rede VPC. As solicitações estão sujeitas às regras de firewall, DNS e roteamento da rede VPC. O roteamento de todas as solicitações de saída para a rede VPC aumenta a quantidade de saída processada pelo conector de acesso VPC sem servidor e pode gerar cobranças.
Implante o serviço:
gcloud app deploy
Desconectar um serviço de uma rede VPC
Para desconectar um serviço de uma rede VPC, remova o
campo vpc_access_connector
do arquivo app.yaml
e reimplante o serviço.
Os conectores continuam gerando cobranças, mesmo se estiverem sem tráfego e desconectados. Para mais detalhes, consulte preços. Se você não precisar mais do conector, exclua-o para evitar o faturamento contínuo.
Atualizar um conector
É possível atualizar e monitorar os seguintes atributos do conector usando o console do Google Cloud, a CLI do Google Cloud ou a API:
- Tipo de máquina (instância)
- Número mínimo e máximo de instâncias
- Capacidade de processamento recente, número de instâncias e uso da CPU
Atualizar tipo de máquina
Console
Acesse a página de visão geral do acesso VPC sem servidor.
Selecione o conector que você quer editar e clique em Editar.
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
-
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 conector, execute o seguinte comando no seu terminal:
Substitua:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
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
Acesse 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
-
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 para o conector, execute o seguinte comando no terminal:
Substitua: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 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
CONNECTOR_NAME
: o nome do conectorREGION
: o nome da região do conectorPROJECT
: o nome do seu projeto do Google Cloud
Monitorar o uso do conector
O monitoramento ao longo do tempo ajuda a determinar quando ajustar as configurações de um conector. Por exemplo, se o uso da CPU aumentar, tente aumentar o número máximo de instâncias para conseguir resultados melhores. Ou, se você estiver maximizando a capacidade de processamento, pense em trocar para um tipo de máquina maior.
Para exibir gráficos da capacidade de processamento, do número de instâncias e das métricas de uso da CPU do conector ao longo do tempo usando o console do Google Cloud:
Acesse a página de visão geral do acesso VPC sem servidor.
Clique no nome do conector que você quer monitorar.
Selecione o número de dias que você quer mostrar entre 1 e 90 dias.
No gráfico de Capacidade de processamento, passe o cursor sobre o gráfico para ver a capacidade de processamento recente do conector.
No gráfico Número de instâncias, passe o cursor sobre ele para ver o número de instâncias usadas recentemente pelo conector.
No gráfico Uso da CPU, passe o cursor sobre ele para ver o uso recente da CPU do conector. O gráfico exibe o uso da CPU distribuído entre as instâncias para o 50º, 95º e 99º percentis.
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
-
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 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.
Gerenciar restrições personalizadas para projetos
Esta seção descreve como criar restrições personalizadas para conectores de acesso VPC sem servidor e aplicá-las no nível do projeto. Para informações sobre políticas personalizadas da organização, consulte Como criar e gerenciar políticas personalizadas da organização.
A política da organização do Google Cloud oferece controle centralizado e programático sobre os recursos da sua organização. Como administrador de políticas da organização, é possível definir uma política da organização, que é um conjunto de limites chamado restrições que se aplicam aos recursos do Google Cloud e aos descendentes desses recursos na Hierarquia de recursos do Google Cloud. É possível aplicar políticas da organização no nível da organização, da pasta ou para envolvidos no projeto.
A política da organização fornece restrições predefinidas para vários serviços do Google Cloud. No entanto, se você quiser um controle mais granular e personalizável sobre os campos específicos restritos nas suas políticas da organização, crie também políticas da organização personalizadas.
Vantagens
O acesso VPC sem servidor permite gravar qualquer número de restrições personalizadas usando a maioria dos campos configurados pelo usuário na API Serverless VPC Access. Por exemplo, é possível criar uma restrição personalizada especificando quais sub-redes um conector de acesso VPC sem servidor pode usar.
Depois de aplicadas, as solicitações que violam uma política que impõe uma restrição personalizada mostram uma mensagem de erro na CLI gcloud e nos registros do acesso VPC sem servidor. A mensagem de erro contém o ID e a descrição da restrição personalizada violada.
Herança de políticas
Por padrão, as políticas da organização são herdadas pelos descendentes dos recursos em que a política é aplicada. Por exemplo, se você aplicar uma política em uma pasta, o Google Cloud aplicará a política a todos os projetos da pasta. Para saber mais sobre esse comportamento e como alterá-lo, consulte Regras de avaliação de hierarquia.
Limitações
Não é possível especificar o tipo de máquina, as instâncias mínimas ou máximas.
Antes de começar
Certifique-se de conhecer o ID da organização.
Funções exigidas
Para receber as permissões necessárias a fim de gerenciar as políticas da organização,
peça ao administrador para conceder a você o
papel do IAM de Administrador de políticas da organização (roles/orgpolicy.policyAdmin
) no recurso da organização.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar uma restrição personalizada
Uma restrição personalizada é definida em um arquivo YAML pelos recursos, métodos, condições e ações compatíveis com o serviço em que você está aplicando a política da organização. As condições das restrições personalizadas são definidas usando a Common Expression Language (CEL). Para mais informações sobre como criar condições em restrições personalizadas usando a CEL, consulte a seção CEL de Como criar e gerenciar restrições personalizadas.
Para criar um arquivo YAML para uma restrição personalizada do acesso VPC sem servidor, consulte este exemplo:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Substitua:
ORGANIZATION_ID
: o ID da organização, como123456789
.CONSTRAINT_NAME
: o nome da sua nova restrição personalizada. Uma restrição personalizada precisa começar comcustom.
e só pode incluir letras maiúsculas, minúsculas ou números, por exemplo, custom.defaultNetworkConstraint. O tamanho máximo desse campo é de 70 caracteres, sem contar o prefixo.CONDITION
: uma condição de CEL gravada em uma representação de um recurso de serviço compatível. Esse campo tem um comprimento máximo de 1000 caracteres. Por exemplo,"resource.network == default"
.ACTION
: a ação a ser realizada se ocondition
for atendido. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome legível para a restrição. Esse campo tem um comprimento máximo de 200 caracteres.DESCRIPTION
: uma descrição legível da restrição a ser exibida como uma mensagem de erro quando a política for violada, por exemplo,"Require network to not be set to default."
. Esse campo tem um comprimento máximo de 2.000 caracteres.
Para mais informações sobre como criar uma restrição personalizada, consulte Como definir restrições personalizadas.
Configurar uma restrição personalizada
Depois de criar o arquivo YAML para uma nova restrição personalizada, configure-a para disponibilizá-la para as políticas da organização. Para configurar uma restrição personalizada, use o comandogcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
pelo caminho completo
do arquivo da restrição personalizada. Por exemplo, /home/user/customconstraint.yaml
.
Após a conclusão, as restrições personalizadas vão estar disponíveis como políticas da organização
na sua lista de políticas da organização do Google Cloud.
Para verificar se a restrição personalizada existe, use o
comando gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
pelo ID do recurso da organização.
Para mais informações, consulte
Como visualizar as políticas da organização.
Aplicar uma restrição personalizada
Para aplicar uma restrição booleana, crie uma política da organização com referência a ela e depois aplique essa política da organização a um recurso do Google Cloud.Console
- No console do Google Cloud, acesse a página Políticas da organização.
- No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
- Na lista da página Políticas da organização, selecione a restrição para acessar a página Detalhes da política dela.
- Para personalizar a política da organização nesse recurso, clique em Gerenciar política.
- Na página Editar política, selecione Substituir a política do editor principal.
- Clique em Adicionar uma regra.
- Na seção Aplicação, selecione se a aplicação dessa política da organização está ativada ou desativada.
- Opcional: para tornar a política da organização condicional em uma tag, clique em Adicionar condição. Se você adicionar uma regra condicional a uma política da organização, inclua pelo menos uma regra não condicional. Caso contrário, não será possível salvar a política. Para mais informações, consulte Como configurar uma política da organização com tags.
- Se essa for uma restrição personalizada, clique em Testar alterações para simular o efeito da política da organização. Para mais informações, consulte Testar alterações na política da organização com o Simulador de política.
- Para concluir e aplicar a política da organização, clique em Definir política. A política levará até 15 minutos para entrar em vigor.
gcloud
Para criar uma política da organização que aplica uma restrição booleana, crie um arquivo YAML da política com referência à restrição:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Substitua:
-
PROJECT_ID
: o projeto em que você quer aplicar a restrição. -
CONSTRAINT_NAME
: o nome definido para a restrição personalizada. Por exemplo,custom.defaultNetworkConstraint
.
Para aplicar a política da organização que contém a restrição, execute o seguinte comando:
gcloud org-policies set-policy POLICY_PATH
Substitua POLICY_PATH
pelo caminho completo do arquivo YAML da política da organização. A política leva até 15 minutos para entrar em vigor.
Testar a restrição personalizada
Para testar o exemplo que restringe as configurações de entrada, implante um
conector no projeto com a rede definida como default
:
gcloud compute networks vpc-access connectors create org-policy-test \
--project=PROJECT_ID \
--region=REGION_ID \
--network=default
A saída é esta:
Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]
Exemplos de políticas personalizadas da organização para casos de uso comuns
A tabela a seguir mostra exemplos de restrições personalizadas que podem ser úteis com os conectores de acesso VPC sem servidor:
Descrição | Sintaxe de restrição |
---|---|
Exija que os conectores de acesso VPC sem servidor possam usar apenas uma rede específica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.network == 'allowlisted-network'" actionType: ALLOW displayName: allowlistNetworks description: Require connectors to use a specific network. |
Descrição | Sintaxe de restrição |
Exija que os conectores de acesso VPC sem servidor tenham acesso apenas a uma sub-rede específica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.subnet.name == 'allocated-subnet'" actionType: ALLOW displayName: restrictSubnetForProject description: This project is only allowed to use the subnet "allocated-subnet". |
Solução de problemas
Permissões da conta de serviço
Para realizar operações no projeto do Google Cloud, o acesso VPC sem servidor usa a conta de serviço do agente de serviço do 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.
Desempenho ruim da rede ou alta utilização da CPU em modo inativo
O uso de um único conector para milhares de instâncias pode causar degradação de desempenho e aumento da utilização da CPU ociosa. Para corrigir isso, divida seus serviços entre vários conectores.
Erros
A conta de serviço precisa de um erro no papel do agente de serviço
Se você usar o Restringir o uso do serviço de recursos
restrição da política da organização
para bloquear o Cloud Deployment Manager (deploymentmanager.googleapis.com
), você poderá 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 bloqueio ou adicioná-lo à lista de permissões.
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.
Se você configurar um conector em um projeto de serviço de VPC compartilhada, verifique se as regras de firewall permitem a entrada da infraestrutura sem servidor no conector.
Erro de conexão recusada
Se você receber erros connection refused
ou connection timeout
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 a partir do ambiente padrão do App Engine.