Ligue-se a uma rede de VPC
Recomendamos que use a saída da VPC direta para enviar tráfego para uma rede VPC, sem necessidade de conector.
No entanto, se a saída da VPC direta não for uma opção para si, pode configurar um conetor de acesso a VPC sem servidor. Esta página mostra como ligar um serviço ou uma tarefa do Cloud Run à sua rede VPC com um conetor, o que permite o tráfego de saída do Cloud Run para 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 a documentação que aborda especificamente a configuração do Acesso a VPC sem servidor para o seu produto.
- Cloud Run: ligar a uma rede VPC partilhada
- Funções do Cloud Run: ligar a uma rede VPC partilhada
- App Engine: ligar a uma rede VPC partilhada
Se tiver uma restrição de política organizacional que impeça a utilização do Cloud Deployment Manager, não pode criar nem eliminar conectores de acesso VPC sem servidor. A criação ou a eliminação de um conector requer a funcionalidade do Deployment Manager.
Se tiver uma política de imagem segura configurada para o seu projeto, certifique-se de que permite o projeto na política da organização
constraints/compute.trustedimageProjects
.serverless-vpc-access-images
Requisitos da sub-rede do conetor
Cada conector requer a sua própria sub-rede dedicada de
PRIVATE
finalidade específica com um intervalo de endereços IPv4 principal de/28
. Esta sub-rede não pode ser usada por outros recursos, como VMs, o Private Service Connect ou equilibradores de carga. Depois de criar o conector, não é possível expandir a sub-rede. Tem de permanecer como/28
.Para criar um conector num projeto de serviço que use uma rede de VPC partilhada num projeto anfitrião, um administrador de rede da rede de VPC partilhada tem de criar manualmente a sub-rede do conector antes de poder criar o conector.
Para determinar se um conector pode usar uma sub-rede criada manualmente existente, descreva a sub-rede:
gcloud compute networks subnets describe SUBNET --region=REGION
Substitua SUBNET pelo nome da sub-rede e REGION pela região que contém a sub-rede.
No resultado, verifique o seguinte:
- A sub-rede é uma sub-rede normal. Na CLI do Google Cloud, isto significa que o valor de purpose é
PRIVATE
. - O intervalo de endereços IPv4 principal da sub-rede,
ipCidrRange
, é um/28
.
- A sub-rede é uma sub-rede normal. Na CLI do Google Cloud, isto significa que o valor de purpose é
Se precisar de criar um conetor do Acesso a VPC sem servidor no mesmo projeto que contém a rede VPC usada pelo conetor, pode criar manualmente a sub-rede do conetor antes de criar o conetor ou Google Cloud criar automaticamente a sub-rede para o conetor.
Quando Google Cloud cria uma sub-rede para um conector, tenha em atenção o seguinte:
As sub-redes criadas automaticamente para conectores não são visíveis quando lista sub-redes, independentemente de usar a Google Cloud consola, a CLI Google Cloud ou a API Compute Engine.
Não é possível descrever as sub-redes criadas automaticamente para conectores.
As sub-redes criadas automaticamente estão incluídas na lista de sub-redes apresentada quando descreve uma rede VPC.
Para mais informações sobre sub-redes, incluindo como listar as existentes para determinar que intervalos de endereços IP já são usados, consulte o artigo Trabalhe com sub-redes.
Limitações
O tráfego IPv6 não é suportado.
Crie um conetor
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 ambiente sem servidor para usar um conetor
Depois de criar um conetor do Acesso a VPC sem servidor, configure o ambiente sem servidor para usar o conetor seguindo as instruções para o seu ambiente sem servidor:
Configure o Cloud Run para usar um conetor
Quando cria um novo serviço ou implementa uma nova revisão, pode configurar o serviço para usar um conetor através da Google Cloud consola, da CLI do Google Cloud, de um ficheiro YAML ou de um recurso do Terraform.
Consola
Na Google Cloud consola, aceda ao Cloud Run:
Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Ligações.
- No campo Conector de VPC, selecione um conector a usar ou selecione Nenhum para desassociar o seu serviço de uma rede de VPC.
Clique em Criar ou Implementar.
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 especificar um conetor durante a implementação, use a flag
--vpc-connector
:gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
- Substitua
SERVICE
pelo nome do seu serviço. - Substituir
IMAGE_URL
. - Substitua
CONNECTOR_NAME
pelo nome do seu conetor. Se o seu conetor estiver no projeto anfitrião de uma VPC partilhada, este tem de ser o nome totalmente especificado, por exemplo: onde HOST_PROJECT_ID é o ID do projeto anfitrião, CONNECTOR_REGION é a região do seu conetor e CONNECTOR_NAME é o nome que atribuiu ao conetor.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
Para anexar, atualizar ou remover um conector para um serviço existente, use o comando
gcloud run services update
com qualquer uma das seguintes flags, conforme necessário:Por exemplo, para anexar ou atualizar um conetor:
gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
- Substitua
SERVICE
pelo nome do seu serviço. - Substitua
CONNECTOR_NAME
pelo nome do seu conetor.
- Substitua
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
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 seu serviço do Cloud Run. - Substitua
CONNECTOR_NAME
pelo nome do seu conetor. Se o seu conetor estiver no projeto anfitrião de uma VPC partilhada, este tem de ser o nome totalmente especificado, por exemplo: onde HOST_PROJECT_ID é o ID do projeto anfitrião, CONNECTOR_REGION é a região do seu conetor e CONNECTOR_NAME é o nome que atribuiu ao conetor.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
- Substitua
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud beta run services replace service.yaml
YAML
Terraform
Pode usar um recurso do Terraform para criar um serviço e configurá-lo para usar o seu conector.
Configure funções do Cloud Run para usar um conetor
Pode configurar uma função para usar um conetor a partir da Google Cloud consola ou da CLI do Google Cloud:
Consola
Aceda à página de vista geral das funções do Cloud Run na Google Cloud consola:
Clique em Criar função. Em alternativa, clique numa função existente para aceder à respetiva página de detalhes e clique em Editar.
Expanda as definições avançadas clicando em DEFINIÇÕES DE TEMPO DE EXECUÇÃO, COMPILAÇÃO E LIGAÇÕES.
No separador Ligações, em Definições de saída, introduza o nome do conetor no campo Conetor de VPC.
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 comando
gcloud functions deploy
para implementar a função e especifique a flag--vpc-connector
:gcloud functions deploy FUNCTION_NAME \ --vpc-connector CONNECTOR_NAME \ FLAGS...
where:
FUNCTION_NAME
é o nome da sua função.CONNECTOR_NAME
é o nome do seu conetor. Se o seu conetor estiver no projeto anfitrião de uma VPC partilhada, este tem de ser o nome totalmente especificado, por exemplo: onde HOST_PROJECT_ID é o ID do projeto anfitrião, CONNECTOR_REGION é a região do seu conetor e CONNECTOR_NAME é o nome que atribuiu ao conetor.projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
FLAGS...
refere-se a outras flags que transmite durante a implementação de funções.
Para ter mais controlo sobre os pedidos encaminhados através do conector, consulte as definições de saída.
Configure o App Engine para usar um conetor
Python 2
Descontinue a utilização do serviço URL Fetch do App Engine.
Por predefinição, todos os pedidos são encaminhados através do serviço URL Fetch. Isto faz com que os pedidos à sua rede VPC falhem. Para desativar esta predefinição, consulte o artigo Desativar a obtenção de URLs do tratamento de todos os pedidos de saída.
Ainda pode usar a biblioteca
urlfetch
diretamente para pedidos individuais, se necessário. No entanto, isto não é recomendado.Adicione o campo de acesso a VPC sem servidor ao seu ficheiro
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Substitua o seguinte:
PROJECT_ID
com o ID do seu Google Cloud projeto. Se o conector estiver no projeto anfitrião de uma VPC partilhada, este tem de ser o ID do projeto anfitrião.REGION
com a região em que o conetor se encontra.CONNECTOR_NAME
com o nome do 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.
Java 8
Descontinue a utilização do serviço de obtenção de URL do App Engine
URLFetchService
.Adicione o elemento de acesso a VPC sem servidor ao ficheiro
appengine-web.xml
do seu serviço:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> </vpc-access-connector>
Substitua o seguinte:
PROJECT_ID
com o ID do seu Google Cloud projeto. Se o conector estiver no projeto anfitrião de uma VPC partilhada, este tem de ser o ID do projeto anfitrião.REGION
com a região em que o conetor se encontra.CONNECTOR_NAME
com o nome do conetor.
Implemente o serviço:
gcloud app deploy WEB-INF/appengine-web.xml
Depois de implementar o serviço, este pode enviar pedidos para endereços IP internos para aceder a recursos na sua rede VPC.
Go 1.11
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 de acesso a VPC sem servidor ao seu ficheiro
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Substitua o seguinte:
PROJECT_ID
com o seu Google Cloud ID do projetoREGION
com a região em que o conetor se encontraCONNECTOR_NAME
com o nome do 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.
Todos os outros tempos de execução
Adicione o campo de acesso a VPC sem servidor ao seu ficheiro
app.yaml
:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
Substitua o seguinte:
PROJECT_ID
com o ID do seu Google Cloud projeto. Se o conector estiver no projeto anfitrião de uma VPC partilhada, este tem de ser o ID do projeto anfitrião.REGION
com a região em que o conetor se encontra.CONNECTOR_NAME
com o nome do 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.
Configure regras de firewall para conectores
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
.
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
Faça a gestão das restrições personalizadas para projetos
Esta secção descreve como criar restrições personalizadas para conetores do Acesso a VPC sem servidor e aplicá-las ao nível do projeto. Para obter informações sobre políticas de organização personalizadas, consulte o artigo Criar e gerir políticas de organização personalizadas.
Google Cloud A política da organização dá-lhe um controlo centralizado e programático sobre os recursos da sua organização. Enquanto administrador de políticas da organização, pode definir uma política da organização, que é um conjunto de restrições denominadas restrições que se aplicam aGoogle Cloud recursos e descendentes desses recursos na Google Cloud hierarquia de recursos. Pode aplicar políticas da organização ao nível da organização, da pasta ou do projeto.
A política da organização oferece restrições predefinidas para vários Google Cloud serviços. No entanto, se quiser um controlo mais detalhado e personalizável sobre os campos específicos que estão restritos nas políticas da sua organização, também pode criar políticas da organização personalizadas.
Vantagens
O Acesso a VPC sem servidor permite-lhe escrever qualquer número de restrições personalizadas usando a maioria dos campos configurados pelo utilizador na API Serverless VPC Access. Por exemplo, pode criar uma restrição personalizada que especifique as sub-redes que um conetor do Acesso a VPC sem servidor pode usar.
Depois de aplicadas, os pedidos que violem uma política que aplique uma restrição personalizada mostram uma mensagem de erro na CLI gcloud e nos registos de acesso VPC sem servidor. A mensagem de erro contém o ID da restrição e a descrição da restrição personalizada violada.
Herança de políticas
Por predefinição, as políticas organizacionais são herdadas pelos descendentes dos recursos nos quais aplica a política. Por exemplo, se aplicar uma política a uma pasta, Google Cloud aplica a política a todos os projetos na pasta. Para saber mais acerca deste comportamento e como o alterar, consulte as regras de avaliação da hierarquia.
Limitações
A especificação do tipo de máquina, do número mínimo de instâncias ou do número máximo de instâncias não é suportada.
Antes de começar
Certifique-se de que sabe o seu ID da organização.
Funções necessárias
Para receber as autorizações de que
precisa para gerir políticas da organização,
peça ao seu administrador para lhe conceder a função de IAM de
administrador de políticas da organização (roles/orgpolicy.policyAdmin
)
no recurso da organização.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Crie uma restrição personalizada
Uma restrição personalizada é definida num ficheiro YAML pelos recursos, métodos, condições e ações suportados pelo serviço no qual está a aplicar a política da organização. As condições para as restrições personalizadas são definidas através do Idioma de expressão comum (IEC). Para mais informações sobre como criar condições em restrições personalizadas através da CEL, consulte a secção CEL do artigo Criar e gerir restrições personalizadas.
Para criar um ficheiro YAML para uma restrição personalizada do Acesso a VPC sem servidor, consulte o seguinte 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 o seguinte:
ORGANIZATION_ID
: o ID da sua organização, como123456789
.CONSTRAINT_NAME
: o nome que quer para a nova restrição personalizada. Uma restrição personalizada tem de começar comcustom.
e só pode incluir letras maiúsculas, letras minúsculas ou números, por exemplo, custom.defaultNetworkConstraint. O comprimento máximo deste campo é de 70 carateres, sem contar com o prefixo.CONDITION
: uma condição CEL escrita em função de uma representação de um recurso de serviço suportado. Este campo tem um comprimento máximo de 1000 carateres. Por exemplo,"resource.network == default"
.ACTION
: a ação a tomar se a condiçãocondition
for cumprida. Pode serALLOW
ouDENY
.DISPLAY_NAME
: um nome simples para a restrição. Este campo tem um comprimento máximo de 200 carateres.DESCRIPTION
: uma descrição acessível da restrição a apresentar como uma mensagem de erro quando a política é violada, por exemplo,"Require network to not be set to default."
Este campo tem um comprimento máximo de 2000 carateres.
Para mais informações sobre como criar uma restrição personalizada, consulte o artigo Definir restrições personalizadas.
Configure uma restrição personalizada
Depois de criar o ficheiro YAML para uma nova restrição personalizada, tem de o configurar para o disponibilizar para as políticas da organização na sua 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 para o seu ficheiro de restrições personalizado. Por exemplo, /home/user/customconstraint.yaml
.
Após a conclusão, as restrições personalizadas ficam disponíveis como políticas da organização na sua lista de Google Cloud políticas da organização.
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 sua organização.
Para mais informações, consulte o artigo
Ver políticas da organização.
Aplique uma restrição personalizada
Pode aplicar uma restrição criando uma política da organização que a referencie e, em seguida, aplicando essa política da organização a um Google Cloud recurso.Consola
- Na Google Cloud consola, aceda à página Políticas de organização.
- No seletor de projetos, selecione o projeto para o qual quer definir a política de organização.
- Na lista da página Políticas da organização, selecione a restrição para ver a página Detalhes da política dessa restrição.
- Para configurar a política da organização para este recurso, clique em Gerir política.
- Na página Editar política, selecione Substituir política do elemento principal.
- Clique em Adicionar regra.
- Na secção Aplicação, selecione se a aplicação desta política organizacional está ativada ou desativada.
- Opcional: para tornar a política de organização condicional a uma etiqueta, clique em Adicionar condição. Tenha em atenção que, se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional. Caso contrário, não é possível guardar a política. Para mais informações, consulte o artigo Definir uma política de organização com etiquetas.
- Clique em Testar alterações para simular o efeito da política da organização. A simulação de políticas não está disponível para restrições geridas antigas. Para mais informações, consulte o artigo Teste as alterações à política da organização com o simulador de políticas.
- Para concluir e aplicar a política da organização, clique em Definir política. A política demora até 15 minutos a entrar em vigor.
gcloud
Para criar uma política da organização com regras booleanas, crie um ficheiro YAML de política que faça referência à restrição:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Substitua o seguinte:
-
PROJECT_ID
: o projeto no qual quer aplicar a restrição. -
CONSTRAINT_NAME
: o nome que definiu 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 para o ficheiro YAML
da política da organização. A política demora até 15 minutos a entrar em vigor.
Teste a restrição personalizada
Para testar o exemplo que restringe as definições de entrada, implemente 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
O resultado é o seguinte:
Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]
Exemplos de políticas da organização personalizadas para exemplos de utilização comuns
A tabela seguinte fornece exemplos de restrições personalizadas que podem ser úteis com conetores do Acesso a VPC sem servidor:
Descrição | Sintaxe de restrição |
---|---|
Exigir que os conetores do Acesso a VPC sem servidor só possam usar 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 |
Exigir que os conetores do Acesso a 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". |
Configure o seu ambiente do Cloud Run para usar a VPC direta em vez de um conetor
Pode ativar o seu serviço do Cloud Run para enviar tráfego de saída diretamente para uma rede VPC, permitindo o acesso a instâncias de VM do Compute Engine, instâncias do Memorystore e quaisquer outros recursos com um endereço IP interno.
Configure o seu serviço para usar a VPC direta
A saída da VPC direta permite que o seu serviço do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Os custos de rede são reduzidos a zero, tal como o próprio serviço. Também pode adicionar etiquetas de rede diretamente às revisões do serviço do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras de firewall da VPC.
Pode configurar a saída direta da VPC com um serviço através da Google Cloud consola, da CLI do Google Cloud, de YAML ou do Terraform.
Consola
Clique em Criar serviço se estiver a configurar um novo serviço para o qual está a implementar. Se estiver a configurar e implementar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.
Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço conforme necessário e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.
Clique no separador Rede.
Clique em Ligar a uma VPC para tráfego de saída.
Clique em Enviar tráfego diretamente para uma VPC.
No campo Rede, selecione a rede VPC para a qual quer enviar tráfego.
No campo Sub-rede, selecione a sub-rede a partir da qual o seu serviço recebe endereços IP. Pode implementar vários serviços na mesma sub-rede.
Opcional: introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou serviços. As etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como
network-tag-2
.Para Encaminhamento de tráfego, selecione uma das seguintes opções:
- Encaminhe apenas pedidos para IPs privados para a VPC para enviar apenas tráfego para endereços internos através da rede VPC.
- Encaminhe todo o tráfego para a VPC para enviar todo o tráfego de saída através da rede de VPC.
Clique em Criar ou Implementar.
Para verificar se o seu serviço está na rede VPC, clique no serviço e, de seguida, clique no separador Redes. A rede e a sub-rede estão listadas no cartão VPC.
Já pode enviar pedidos do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.
gcloud
Para implementar um serviço do Cloud Run sem um conetor a partir da CLI do Google Cloud:
Atualize os componentes do
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API Compute Engine está ativada para o seu projeto:
gcloud services enable compute.googleapis.com
Implemente o seu serviço do Cloud Run com o seguinte comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Substituição:
- SERVICE_NAME com o nome do seu serviço do Cloud Run.
- IMAGE_URL: uma referência à imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional:
SUBNET com o nome da sua sub-rede. A sub-rede tem de ser
/26
ou maior. A saída direta da VPC suporta intervalos IPv4 RFC 1918, RFC 6598 e Classe E. Pode implementar ou executar vários serviços ou tarefas na mesma sub-rede, mas a sub-rede não pode ser partilhada por nenhum conector existente. - Opcional: NETWORK_TAG_NAMES com os nomes separados por vírgulas
das etiquetas de rede
que quer associar a um serviço. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter
etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- REGION com uma região para o seu serviço.
Para verificar se o seu serviço está na rede VPC, execute o seguinte comando:
gcloud run services describe SERVICE_NAME \ --region=REGION
Substituição:
SERVICE_NAME
com o nome do seu serviço.REGION
com a região do seu serviço que especificou no passo anterior.
O resultado deve conter o nome da sua rede, sub-rede e definição de saída, por exemplo:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Já pode enviar pedidos do seu serviço do Cloud Run para qualquer recurso na rede VPC, conforme permitido pelas regras da firewall.
YAML
Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:
gcloud run services describe SERVICE --format export > service.yaml
Atualize os seguintes atributos:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Substituição:
- SERVICE_NAME com o nome do seu serviço do Cloud Run. Os nomes dos serviços têm de ter 49 carateres ou menos e têm de ser únicos por região e projeto.
- REGION com a região do seu serviço do Cloud Run, que tem de corresponder à região da sua sub-rede.
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional:
SUBNET com o nome da sua sub-rede. A sub-rede tem de ser
/26
ou maior. A saída direta da VPC suporta intervalos IPv4 RFC 1918, RFC 6598 e Classe E. Pode implementar ou executar vários serviços ou tarefas na mesma sub-rede, mas a sub-rede não pode ser partilhada por nenhum conector existente. - Opcional: NETWORK_TAG_NAMES com os nomes das
etiquetas de rede
que quer associar a um serviço. Para serviços, as etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter
etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- IMAGE com o URL da imagem do contentor de serviços.
Também pode especificar mais configurações, como variáveis de ambiente ou limites de memória.
Crie ou atualize o serviço com o seguinte comando:
gcloud run services replace service.yaml
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Adicione o seguinte ao ficheiro
main.tf
:
Opcionalmente, torne o seu serviço público se quiser permitir o acesso não autenticado ao serviço.
Configure a tarefa para usar a VPC direta
A saída da VPC direta permite que a tarefa do Cloud Run envie tráfego para uma rede VPC sem um conetor do Acesso a VPC sem servidor. Também pode adicionar etiquetas de rede diretamente em tarefas do Cloud Run para uma segurança de rede mais detalhada, como a aplicação de regras da firewall da VPC.
Pode configurar a saída da VPC direta com uma tarefa através da Google Cloud consola, da CLI do Google Cloud ou do YAML.
Consola
Se estiver a configurar uma nova tarefa, clique no separador Tarefas e preencha a página de definições iniciais da tarefa conforme necessário. Se estiver a configurar uma tarefa existente, clique na tarefa e, de seguida, em Editar.
Clique em Recipiente, variáveis e segredos, ligações, segurança para expandir a página de propriedades da tarefa.
Clique no separador Ligações.
Clique em Ligar a uma VPC para tráfego de saída.
Clique em Enviar tráfego diretamente para uma VPC.
No campo Rede, selecione a rede de VPC para a qual quer enviar tráfego.
No campo Sub-rede, selecione a sub-rede a partir da qual a tarefa recebe endereços IP. Pode executar várias tarefas na mesma sub-rede.
Para Encaminhamento de tráfego, selecione uma das seguintes opções:
- Encaminhe apenas pedidos para IPs privados para a VPC para enviar apenas tráfego para endereços internos através da rede VPC.
- Encaminhe todo o tráfego para a VPC para enviar todo o tráfego de saída através da rede de VPC.
Opcional: introduza os nomes das etiquetas de rede que quer associar ao seu serviço ou serviços. As etiquetas de rede são especificadas ao nível da revisão. Cada revisão do serviço pode ter etiquetas de rede diferentes, como
network-tag-2
.Opcional: introduza os nomes das etiquetas de rede que quer associar à sua tarefa ou tarefas. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como
network-tag-2
.Clique em Criar ou Atualizar.
Para verificar se a tarefa está na sua rede VPC, clique na tarefa e, de seguida, clique no separador Configuração. A rede e a sub-rede estão indicadas no cartão VPC.
Já pode executar a tarefa do Cloud Run e enviar pedidos da tarefa para qualquer recurso na rede da VPC, conforme permitido pelas regras de firewall.
gcloud
Para criar uma tarefa do Cloud Run sem um conector a partir da CLI do Google Cloud:
Atualize os componentes do
gcloud
para a versão mais recente:gcloud components update
Certifique-se de que a API Compute Engine está ativada para o seu projeto:
gcloud services enable compute.googleapis.com
Crie uma tarefa do Cloud Run com o seguinte comando:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Substituição:
- JOB_NAME com o nome da tarefa do Cloud Run.
- IMAGE_URL: uma referência à
imagem do contentor, por exemplo,
us-docker.pkg.dev/cloudrun/container/job:latest
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional:
SUBNET com o nome da sua sub-rede. A sub-rede tem de ser
/26
ou maior. A saída direta da VPC suporta intervalos IPv4 RFC 1918, RFC 6598 e Classe E. Pode implementar ou executar vários serviços ou tarefas na mesma sub-rede, mas a sub-rede não pode ser partilhada por nenhum conector existente. - Opcional: NETWORK_TAG_NAMES com os nomes das
etiquetas de rede
que quer associar a uma tarefa. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- REGION com uma região para o seu trabalho.
Para verificar se a tarefa está na sua rede VPC, execute o seguinte comando:
gcloud run jobs describe JOB_NAME \ --region=REGION
Substituição:
JOB_NAME
com o nome do seu trabalho.REGION
com a região do seu trabalho que especificou no passo anterior.
A saída deve conter o nome da sua rede e sub-rede, por exemplo:
VPC network: Network: default Subnet: default
Já pode executar a tarefa do Cloud Run e enviar pedidos da tarefa para qualquer recurso na rede da VPC, conforme permitido pelas regras de firewall.
YAML
Se estiver a criar uma nova tarefa, ignore este passo. Se estiver a atualizar uma tarefa existente, transfira a respetiva configuração YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Atualize os seguintes atributos:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Substituição:
- JOB_NAME com o nome da tarefa do Cloud Run. Os nomes das tarefas têm de ter 49 carateres ou menos e têm de ser exclusivos por região e projeto.
- REGION com a região da sua tarefa do Cloud Run, que tem de corresponder à região da sua sub-rede.
- Opcional: NETWORK com o nome da sua rede de VPC. Especifique uma rede de VPC ou uma sub-rede, ou ambas. Se especificar apenas uma rede, a sub-rede usa o mesmo nome que a rede.
- Opcional:
SUBNET com o nome da sua sub-rede. A sub-rede tem de ser
/26
ou maior. A saída direta da VPC suporta intervalos IPv4 RFC 1918, RFC 6598 e Classe E. Pode implementar ou executar vários serviços ou tarefas na mesma sub-rede, mas a sub-rede não pode ser partilhada por nenhum conector existente. - Opcional: NETWORK_TAG_NAMES com os nomes das
etiquetas de rede
que quer associar a uma tarefa. Para trabalhos, as etiquetas de rede são especificadas ao nível da execução. Cada execução de tarefa pode ter etiquetas de rede diferentes, como
network-tag-2
. - EGRESS_SETTING com um
valor de definição de saída:
all-traffic
: envia todo o tráfego de saída através da rede VPC.private-ranges-only
: envia apenas tráfego para endereços internos através da rede VPC.
- IMAGE com o URL da imagem do contentor do seu trabalho.
Crie ou atualize a tarefa através do seguinte comando:
gcloud run jobs replace job.yaml
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 de: