Pode usar o intercâmbio da rede da VPC para permitir que o Datastream comunique de forma privada com os recursos na sua rede da nuvem virtual privada (VPC).
A interligação de redes VPC é uma ligação entre a sua rede VPC e a rede privada do Datastream, o que permite ao Datastream comunicar com recursos internos através de endereços IP internos. A utilização da conetividade privada estabelece uma ligação dedicada na rede Datastream, o que significa que nenhum outro cliente a pode partilhar.
A ligação de intercâmbio da rede da VPC entre a sua rede da VPC e a rede da VPC do Datastream permite que o Datastream se ligue a:
- Recursos como máquinas virtuais (VMs) e balanceadores de carga internos na sua rede VPC.
- Recursos noutras redes ligadas à sua rede VPC através de: Túneis do Cloud VPN, Anexos de VLAN do Dedicated Interconnect, Anexos de VLAN do Partner Interconnect, e routers do Cloud do Network Connectivity Center.
A ligação de intercâmbio da rede da VPC entre a sua rede da VPC e a rede da VPC do Datastream não permite que o Datastream se ligue a:
- Pontos finais do Private Service Connect localizados na sua rede VPC.
- Recursos localizados noutra rede VPC, com intercâmbio com a sua rede VPC, mas sem intercâmbio com a rede VPC do Datastream. (Isto deve-se ao facto de o intercâmbio das redes da VPC não fornecer encaminhamento transitivo.)
Para estabelecer a conetividade entre o Datastream e um recurso que só está acessível a partir da sua rede VPC, pode usar uma VM de tradução de endereços de rede (NAT) na sua rede VPC. Um exemplo de utilização comum de uma VM NAT é quando o Datastream precisa de se ligar a uma instância do Cloud SQL.
Esta página descreve um exemplo de configuração de VM NAT que permite ao Datastream ligar-se de forma privada a uma instância do Cloud SQL.
Pré-requisitos do intercâmbio de VPCs
Antes de criar uma configuração de conetividade privada, tem de seguir os passos abaixo para que o Datastream possa criar a ligação de peering de VPC ao seu projeto:
- Ter uma rede VPC que possa estabelecer intercâmbio com a rede privada do Datastream e que cumpra os requisitos descritos na página Intercâmbio da rede VPC. Para mais informações sobre como criar esta rede, consulte o artigo Usar o peering de redes VPC.
- Identifique um intervalo de IPs disponível (com um bloco CIDR de /29) na rede VPC. Não pode ser um intervalo de IPs que já exista como uma sub-rede, um intervalo de IPs pré-atribuído de acesso privado a serviços ou qualquer rota (exceto a rota 0.0.0.0 predefinida) que inclua o intervalo de IPs. O Datastream usa este intervalo de IP para criar uma sub-rede, de modo a poder comunicar com a base de dados de origem. A tabela seguinte descreve os intervalos de IP válidos.
Intervalo | Descrição |
---|---|
10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
|
Endereços IP privados RFC 1918 |
100.64.0.0/10 |
Espaço de endereços partilhado RFC 6598 |
192.0.0.0/24 |
Atribuições de protocolos da IETF RFC 6890 |
192.0.2.0/24 (TEST-NET-1)198.51.100.0/24 (TEST-NET-2)203.0.113.0/24 (TEST-NET-3) |
Documentação RFC 5737 |
192.88.99.0/24 |
Relatório de IPv6 para IPv4 (obsoleto) RFC 7526 |
198.18.0.0/15 |
Testes de referência RFC 2544 |
Verifique se Google Cloud e a firewall no local permitem tráfego do intervalo de IPs selecionado. Se não o fizer, crie uma regra de firewall de entrada que permita o tráfego na porta da base de dados de origem e certifique-se de que o intervalo de endereços IPv4 na regra de firewall é o mesmo que o intervalo de endereços IP atribuído quando criar o recurso de conetividade privada:
gcloud compute firewall-rules create FIREWALL-RULE-NAME \ --direction=INGRESS \ --priority=PRIORITY \ --network=PRIVATE_CONNECTIVITY_VPC \ --project=VPC_PROJECT \ --action=ALLOW \ --rules=FIREWALL_RULES \ --source-ranges=IP-RANGE
Substitua o seguinte:
- FIREWALL-RULE-NAME: o nome da regra de firewall a criar.
- PRIORITY: a prioridade da regra, expressa como um número inteiro entre 0 e 65535, inclusive. O valor tem de ser inferior ao valor definido para a regra de tráfego de bloqueio, se existir. Os valores de prioridade mais baixos implicam uma precedência mais elevada.
- PRIVATE_CONNECTIVITY_VPC: a rede da VPC que pode estabelecer intercâmbio com a rede privada do Datastream e que cumpre os requisitos descritos na página Intercâmbio da rede da VPC. Esta é a VPC que especifica quando cria a sua configuração de conetividade privada.
- VPC_PROJECT: o projeto da rede VPC.
- FIREWALL_RULES: a lista de protocolos e portas aos quais a regra de firewall se aplica, por exemplo,
tcp:80
. A regra tem de permitir o tráfego TCP para o endereço IP e a porta da base de dados de origem ou do proxy. Uma vez que a conetividade privada pode suportar várias bases de dados, a regra tem de considerar a utilização real da sua configuração. IP-RANGE: o intervalo de endereços IP que o Datastream usa para comunicar com a base de dados de origem. Este é o mesmo intervalo que indica no campo Atribuir um intervalo de IP quando cria a sua configuração de conetividade privada.
Também pode ter de criar uma regra de firewall de saída idêntica para permitir o tráfego de volta para o Datastream.
Estão atribuídos a uma função que contém a autorização
compute.networks.list
. Esta autorização concede-lhe as autorizações de IAM necessárias para indicar redes de VPC no seu projeto. Pode ver as funções que contêm esta autorização consultando a referência de autorizações de IAM.
Pré-requisitos da VPC partilhada
Se estiver a usar a VPC partilhada, tem de concluir as seguintes ações, além dos passos descritos na secção Pré-requisitos da VPC:
No projeto de serviço:
- Ative a API Datastream.
Obtenha o endereço de email usado para a conta de serviço do fluxo de dados. As contas de serviço da stream de dados são criadas quando realiza uma das seguintes ações:
- Cria um recurso Datastream, como um perfil de associação ou uma stream.
- Crie uma configuração de conetividade privada, selecione a sua VPC partilhada e clique em Criar conta de serviço da stream de dados. A conta de serviço é criada no projeto anfitrião.
Para obter o endereço de email usado para a conta de serviço do Datastream, encontre o número do projeto na Google Cloud página inicial da consola. O endereço de email da conta de serviço é
service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com
.
No projeto anfitrião:
Conceda a autorização da função de
compute.networkAdmin
gestão de identidade e de acesso (IAM) à conta de serviço do Datastream. Esta função só é necessária quando cria o peering de VPC. Depois de estabelecer a interligação, já não precisa da função.Se a sua organização não permitir a concessão da autorização, crie uma função personalizada com as seguintes autorizações mínimas para criar e eliminar recursos de ligação privada:
Para mais informações sobre funções personalizadas, consulte o artigo Crie e faça a gestão de funções personalizadas.
Configure uma VM de NAT
Identifique o endereço IP da instância do Cloud SQL à qual o Datastream tem de se ligar.
Identifique a sua rede de VPC. Esta é a rede da VPC que está ligada à rede da VPC do Datastream através do intercâmbio da rede da VPC.
Se ainda não o fez, crie uma configuração de conectividade privada no Datastream. Isto cria a ligação de intercâmbio da rede da VPC que liga a sua rede da VPC e a rede da VPC do Datastream. Tome nota do intervalo de endereços IP usado pela configuração de conetividade privada do fluxo de dados.
Escolha um tipo de máquina para usar na VM de NAT que criar no passo seguinte. Google Cloud aplica um limite máximo de largura de banda de saída por instância, para pacotes encaminhados por saltos seguintes numa rede de VPC, de acordo com o tipo de máquina da instância da VM. Para mais informações, consulte os artigos Saída para destinos encaminháveis numa rede VPC e Largura de banda de saída máxima por instância.
Crie a VM de NAT na sua rede VPC. Se a sua rede VPC for uma rede VPC partilhada, pode criar a VM de NAT no projeto anfitrião ou em qualquer projeto de serviço, desde que a interface de rede da VM de NAT esteja na rede VPC partilhada.
- Para minimizar o tempo de percurso de rede, crie a VM de NAT na mesma região que o Datastream.
- Este exemplo pressupõe que a VM NAT tem uma única interface de rede.
- Execute o script numa distribuição Linux, por exemplo, Debian 12.
- Use o seguinte script de arranque. O script de arranque é executado pelo utilizador root sempre que a VM é iniciada. Este script inclui comentários que explicam o que cada linha do script faz. No script, substitua CLOUD_SQL_INSTANCE_IP pelo endereço IP da instância do Cloud SQL e DATABASE_PORT pela porta de destino usada pelo software de base de dados.
#! /bin/bash export DB_ADDR=CLOUD_SQL_INSTANCE_IP export DB_PORT=DATABASE_PORT # Enable the VM to receive packets whose destinations do # not match any running process local to the VM echo 1 > /proc/sys/net/ipv4/ip_forward # Ask the Metadata server for the IP address of the VM nic0 # network interface: md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance" vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)" # Clear any existing iptables NAT table entries (all chains): iptables -t nat -F # Create a NAT table entry in the prerouting chain, matching # any packets with destination database port, changing the destination # IP address of the packet to the SQL instance IP address: iptables -t nat -A PREROUTING \ -p tcp --dport $DB_PORT \ -j DNAT \ --to-destination $DB_ADDR # Create a NAT table entry in the postrouting chain, matching # any packets with destination database port, changing the source IP # address of the packet to the NAT VM's primary internal IPv4 address: iptables -t nat -A POSTROUTING \ -p tcp --dport $DB_PORT \ -j SNAT \ --to-source $vm_nic_ip # Save iptables configuration: iptables-save
Crie uma regra de firewall de autorização de entrada (ou uma regra numa política de firewall de rede global, numa política de firewall de rede regional ou numa política de firewall hierárquica) com as seguintes características:
- Direção: entrada
- Ação: permitir
- Parâmetro de destino: pelo menos a VM NAT
- Parâmetro de origem: o intervalo de endereços IP usado pela configuração de conetividade privada do fluxo de dados
- Protocolo: TCP
- Porta: tem de incluir, pelo menos, o DATABASE_PORT
A regra de firewall de saída permitida implícita permite que a VM NAT envie pacotes para qualquer destino. Se a sua rede VPC usar regras de firewall de negação de saída, pode ter de criar uma regra de firewall de permissão de saída para permitir que a VM NAT envie pacotes para a instância do Cloud SQL. Se for necessária uma regra de autorização de saída, use estes parâmetros:
- Direção: saída
- Ação: permitir
- Parâmetro de destino: pelo menos a VM NAT
- Parâmetro de destino: o endereço IP da instância do Cloud SQL
- Protocolo: TCP
- Porta: tem de incluir, pelo menos, o DATABASE_PORT
Certifique-se de que configurou a sua instância do Cloud SQL para aceitar ligações a partir do endereço IPv4 interno principal usado pela interface de rede da sua VM NAT. Para ver instruções, consulte o artigo Autorize com redes autorizadas na documentação do Cloud SQL.
Crie um perfil de associação no Datastream. Nos detalhes da ligação do perfil, especifique o endereço IPv4 interno principal da VM NAT que criou. Introduza a porta da base de dados de origem no campo da porta do perfil de ligação.
Configure um par de VMs de NAT e um Network Load Balancer de passagem interno
Para melhorar a fiabilidade de uma solução de VM NAT, considere a seguinte arquitetura, que usa um par de VMs NAT e um balanceador de carga de rede de passagem interno:
Crie duas VMs de NAT em zonas diferentes da mesma região. Siga as instruções de Configurar uma VM de NAT para criar cada VM e coloque cada VM no seu próprio grupo de instâncias não gerido zonal.
Em alternativa, pode criar um grupo de instâncias geridas regional. No modelo do grupo de instâncias gerido, inclua um script de arranque, como o script de arranque de exemplo nas instruções Configure uma VM de NAT.
Crie um Network Load Balancer de encaminhamento interno cujo serviço de back-end use o grupo de instâncias ou grupos do passo anterior como back-ends. Para ver um exemplo de um balanceador de carga de rede de encaminhamento direto interno, consulte o artigo Configure um balanceador de carga de rede de encaminhamento direto interno com back-ends de grupo de instâncias de VM.
Quando configurar a verificação de funcionamento do balanceador de carga, pode usar uma verificação de funcionamento TCP que use uma porta TCP de destino correspondente à DATABASE_PORT. Os pacotes de verificação de funcionamento são encaminhados para o CLOUD_SQL_INSTANCE_IP de acordo com a configuração da VM NAT. Em alternativa, pode executar um processo local na VM NAT que responda a uma verificação de estado de TCP ou HTTP numa porta personalizada.
Crie regras de firewall e configure redes autorizadas do Cloud SQL, conforme descrito nas instruções Configure uma VM NAT. Certifique-se de que as redes autorizadas do Cloud SQL incluem o endereço IPv4 interno principal de ambas as VMs de NAT.
Quando cria um perfil de ligação de stream de dados, especifique o endereço IP da regra de encaminhamento do Network Load Balancer de encaminhamento interno nos detalhes da ligação do perfil.
O que se segue?
- Saiba como criar uma configuração de conetividade privada.
- Saiba como ver a configuração de conectividade privada.
- Saiba como eliminar uma configuração de conetividade privada.