Este guia mostra como usar o Azure Private Link para fornecer conectividade privada por meio de uma rede virtual entre o Azure (incluindo serviços de propriedade do cliente e de parceiros da Microsoft) e o ClickHouse Cloud. O Azure Private Link simplifica a arquitetura de rede e protege a conexão entre endpoints no Azure ao eliminar a exposição de dados à internet pública.
O Azure Private Link oferece suporte apenas a conexões iniciadas da sua VNet do Azure para o ClickHouse Cloud. Ele não pode ser usado para conexões iniciadas do ClickHouse Cloud para serviços na sua VNet, como um banco de dados privado.
O Azure oferece suporte à conectividade entre regiões por meio do Private Link. Isso permite estabelecer conexões entre VNets localizadas em diferentes regiões onde você tem serviços do ClickHouse implantados.
Cobranças adicionais podem ser aplicadas ao tráfego entre regiões. Consulte a documentação mais recente do Azure.
Conclua as etapas a seguir para habilitar o Azure Private Link:
- Obtenha o alias de conexão do Azure para o Private Link
- Crie um Private Endpoint no Azure
- Adicione o Resource ID do Private Endpoint à sua organização do ClickHouse Cloud
- Adicione o Resource ID do Private Endpoint à lista de permissões dos seus serviços
- Acesse seu serviço do ClickHouse Cloud usando o Private Link
O Azure PrivateLink do ClickHouse Cloud deixou de usar filtros por resourceGUID e passou a usar filtros por Resource ID. Você ainda pode usar resourceGUID, pois ele é compatível com versões anteriores, mas recomendamos migrar para filtros por Resource ID. Para migrar, basta criar um novo endpoint usando o Resource ID, associá-lo ao serviço e remover o antigo baseado em resourceGUID.
O ClickHouse tenta agrupar seus serviços para reutilizar o mesmo serviço de Private Link publicado na região do Azure. No entanto, esse agrupamento não é garantido, especialmente se você distribuir seus serviços entre várias organizações do ClickHouse.
Se você já tiver o Private Link configurado para outros serviços na sua organização do ClickHouse, muitas vezes poderá pular a maior parte das etapas devido a esse agrupamento e seguir diretamente para a etapa final: Adicionar o Private Endpoint Resource ID à lista de permissões dos seus serviços.
Encontre exemplos de Terraform no repositório do Terraform provider do ClickHouse.
Obtenha o alias de conexão do Azure para o Private Link
Opção 1: console do ClickHouse Cloud
No console do ClickHouse Cloud, abra o serviço ao qual você deseja se conectar via PrivateLink e, em seguida, abra o menu Settings. Clique no botão Set up private endpoint. Anote o Service name e o DNS name, que serão usados para configurar o Private Link.
Anote o Service name e o DNS name; eles serão necessários nas próximas etapas.
Antes de começar, você precisará de uma API key do ClickHouse Cloud. Você pode criar uma nova chave ou usar uma existente.
Depois de obter sua API key, defina as seguintes variáveis de ambiente antes de executar qualquer comando:
Obtenha o INSTANCE_ID da sua instância do ClickHouse filtrando por região, provedor e nome do serviço:
Obtenha o alias de conexão do Azure e o hostname do DNS privado para o Private Link:
Anote o endpointServiceId. Você vai usá-lo na próxima etapa.
Criar um Private Endpoint no Azure
Esta seção aborda detalhes específicos do ClickHouse para configurar o ClickHouse por meio do Azure Private Link. As etapas específicas do Azure são fornecidas como referência para orientar você sobre onde procurar, mas podem mudar ao longo do tempo sem aviso prévio do provedor de Cloud Azure. Considere a configuração do Azure com base no seu caso de uso específico.Observe que o ClickHouse não é responsável por configurar os Private Endpoints e registros DNS necessários no Azure.Para qualquer problema relacionado a tarefas de configuração no Azure, entre em contato diretamente com o Suporte do Azure.
Nesta seção, vamos criar um Private Endpoint no Azure. Você pode usar o Azure Portal ou o Terraform.
Opção 1: usar o Azure Portal para criar um endpoint privado no Azure
No Azure Portal, abra Private Link Center → Private Endpoints.
Abra a caixa de diálogo de criação do Private Endpoint clicando no botão Create.
Na tela a seguir, especifique as opções abaixo:
- Subscription / Resource Group: escolha a assinatura do Azure e o grupo de recursos do Private Endpoint.
- Name: defina um nome para o Private Endpoint.
- Region: escolha a região em que está a VNet implantada que será conectada ao ClickHouse Cloud via Private Link.
Depois de concluir as etapas acima, clique no botão Next: Resource.
Selecione a opção Connect to an Azure resource by resource ID or alias.
Em Resource ID or alias, use o endpointServiceId obtido na etapa Obtain Azure connection alias for Private Link.
Clique no botão Next: Virtual Network.
- Virtual network: escolha a VNet que você quer conectar ao ClickHouse Cloud usando Private Link
- Subnet: escolha a sub-rede em que o Private Endpoint será criado
Opcional:
- Application security group: você pode anexar um ASG ao Private Endpoint e usá-lo em Network Security Groups para filtrar o tráfego de rede de/para o Private Endpoint.
Clique no botão Next: DNS.
Clique no botão Next: Tags.
Opcionalmente, você pode adicionar tags ao Private Endpoint.
Clique no botão Next: Review + create.
Por fim, clique no botão Create.
O Connection status do Private Endpoint criado ficará no estado Pending. Ele mudará para Approved assim que você adicionar esse Private Endpoint à lista de permissões do serviço.
Abra a interface de rede associada ao Private Endpoint e copie o Private IPv4 address (10.0.0.4 neste exemplo); você precisará dessa informação nas próximas etapas.
Use o modelo abaixo para criar um Private Endpoint com o Terraform:
Obtendo o Private Endpoint Resource ID
Para usar o Private Link, você precisa adicionar o Resource ID da conexão do Private Endpoint à lista de permissões do seu serviço.
O Private Endpoint Resource ID é exibido no Azure Portal. Abra o Private Endpoint criado na etapa anterior e clique em JSON View:
Em properties, localize o campo id e copie esse valor:
Método preferido: usando o Resource ID
Método legado: usando resourceGUID
Você ainda pode usar o resourceGUID por compatibilidade com versões anteriores. Localize o campo resourceGuid e copie esse valor:
Configurando o DNS para o Private Link
Você precisará criar uma zona DNS privada (${location_code}.privatelink.azure.clickhouse.cloud) e vinculá-la à sua VNet para acessar os recursos via Private Link.
Criar uma zona DNS privada
Opção 1: Usando o Azure Portal
Siga este guia para criar uma zona DNS privada no Azure usando o Azure Portal.
Opção 2: Usando o Terraform
Use o template do Terraform a seguir para criar uma zona DNS privada:
Crie um registro DNS curinga
Crie um registro curinga apontando para o seu Private Endpoint:
Opção 1: Usando Azure Portal
- Abra o grupo de recursos
MyAzureResourceGroup e selecione a zona privada ${region_code}.privatelink.azure.clickhouse.cloud.
- Selecione + Conjunto de registros.
- Em Name, digite
*.
- Em IP Address, digite o endereço IP exibido para o Private Endpoint.
- Selecione OK.
Opção 2: Usando Terraform
Use o seguinte modelo do Terraform para criar um registro DNS curinga:
Criar um link de rede virtual
Para vincular a zona DNS privada a uma rede virtual, você precisará criar um link de rede virtual.
Opção 1: Usando o Azure Portal
Siga este guia para vincular a rede virtual à sua zona DNS privada.
Opção 2: Usando Terraform
Há várias formas de configurar o DNS. Configure-o de acordo com seu caso de uso específico.
Você precisa apontar o “DNS name”, obtido na etapa Obter o connection alias do Azure para Private Link, para o endereço IP do Private Endpoint. Isso garante que os serviços/componentes dentro da sua VPC/rede consigam resolvê-lo corretamente.
Verifique a configuração do DNS
O domínio xxxxxxxxxx.westus3.privatelink.azure.clickhouse.cloud deve apontar para o IP do Private Endpoint (10.0.0.4 neste exemplo).
Adicione o Private Endpoint Resource ID à sua organização no ClickHouse Cloud
Opção 1: console do ClickHouse Cloud
Para adicionar um endpoint à organização, prossiga para a etapa Adicionar o Private Endpoint Resource ID à lista de permissões dos seus serviços. Ao adicionar o Private Endpoint Resource ID à lista de permissões dos serviços pelo console do ClickHouse Cloud, ele é automaticamente adicionado à organização.
Para remover um endpoint, abra Organization details -> Private Endpoints e clique no botão de excluir para remover o endpoint.
Defina as seguintes variáveis de ambiente antes de executar qualquer comando:
Defina a variável de ambiente ENDPOINT_ID usando os dados da etapa Como obter o ID do recurso do Private Endpoint.
Execute o comando a seguir para adicionar o Private Endpoint:
Você também pode executar o comando a seguir para remover um Private Endpoint:
Após adicionar ou remover um Private Endpoint, execute o comando a seguir para aplicar a alteração à sua organização:
Adicione o Private Endpoint Resource ID à lista de permissões dos seus serviços
Por padrão, um serviço do ClickHouse Cloud não fica disponível por meio de uma conexão Private Link, mesmo que essa conexão esteja aprovada e estabelecida. Você precisa adicionar explicitamente o Private Endpoint Resource ID de cada serviço que deve ficar disponível usando o Private Link.
Opção 1: console do ClickHouse Cloud
No console do ClickHouse Cloud, abra o serviço ao qual deseja se conectar via PrivateLink e, em seguida, vá para Settings. Insira o Resource ID obtido na etapa anterior.
Se quiser permitir o acesso por uma conexão PrivateLink existente, use o menu suspenso do endpoint existente.
Defina estas variáveis de ambiente antes de executar qualquer comando:
Faça isso para cada serviço que deve estar disponível por meio do Private Link.
Execute o comando a seguir para adicionar o Private Endpoint à lista de permissões dos serviços:
Você também pode executar o comando a seguir para remover um Private Endpoint da lista de permissões dos serviços:
Após adicionar ou remover um Private Endpoint da lista de permissões de serviços, execute o comando a seguir para aplicar essa alteração à sua organização:
Acesse seu serviço ClickHouse Cloud usando Private Link
Cada serviço com Private Link habilitado tem um endpoint público e outro privado. Para se conectar usando Private Link, você precisa usar o endpoint privado, que será privateDnsHostnameAPI ou DNS nameconsole, obtido em Obter o alias de conexão do Azure para Private Link.
Como obter o hostname DNS privado
Opção 1: console do ClickHouse Cloud
No console do ClickHouse Cloud, vá para Settings. Clique no botão Set up private endpoint. No painel lateral aberto, copie o DNS Name.
Defina as seguintes variáveis de ambiente antes de executar os comandos:
Execute o seguinte comando:
Você deve receber uma resposta semelhante à seguinte:
Neste exemplo, a conexão com o hostname xxxxxxx.region_code.privatelink.azure.clickhouse.cloud será encaminhada via Private Link. Enquanto isso, xxxxxxx.region_code.azure.clickhouse.cloud será encaminhado pela internet.
Use o privateDnsHostname para se conectar ao seu serviço do ClickHouse Cloud usando Private Link.
Teste a configuração de DNS
Execute o seguinte comando:
em que “DNS name” é o privateDnsHostnameAPI ou DNS nameconsole em Obter alias de conexão do Azure para Private Link
Você deverá receber a seguinte resposta:
Conexão redefinida pelo host remoto
É bem provável que o Private Endpoint Resource ID não tenha sido adicionado à lista de permissões do serviço. Revise a etapa Adicionar o Private Endpoint Resource ID à lista de permissões dos seus serviços.
Private Endpoint está em estado pendente
Muito provavelmente, o Private Endpoint Resource ID não foi adicionado à lista de permissões do service. Revise a etapa Adicionar o Private Endpoint Resource ID à lista de permissões dos seus services.
Se você tiver problemas para se conectar usando o Private Link, verifique a conectividade com openssl. Certifique-se de que o status do endpoint do Private Link esteja como Accepted.
O OpenSSL deve conseguir se conectar (veja CONNECTED na saída). errno=104 é o esperado.
Verificando os filtros do Private Endpoint
Defina as seguintes variáveis de ambiente antes de executar qualquer comando:
Execute o seguinte comando para verificar os filtros do Private Endpoint:
Para obter mais informações sobre o Azure Private Link, visite azure.microsoft.com/en-us/products/private-link.