O que são PrivateLinks?
O PrivateLinks é um serviço de rede que permite a conexão privada entre um serviço de nuvem e sua rede virtual. Essa conexão é feita sem expor seus dados à Internet pública, aumentando a segurança ao manter o tráfego de rede dentro da rede do provedor de nuvem. Ao utilizar o PrivateLinks, você pode garantir um acesso mais seguro e confiável aos recursos da nuvem, minimizando o risco de ameaças externas e reduzindo a latência ao manter o tráfego interno à rede do provedor de nuvem.
Os PrivateLinks facilitam a comunicação unidirecional, aumentando a segurança das conexões de rede ao garantir que o tráfego possa fluir apenas em uma única direção. Esse design ajuda a impedir o acesso não autorizado e a exfiltração de dados, solidificando ainda mais os benefícios de segurança do uso do PrivateLinks para redes em nuvem.
Observação: No momento, o XDCR não é compatível com o PrivateLinks.
Parte 1 - Instalação da CLI do Azure
-
- Abra um terminal e instalar a CLI do Azure usando os comandos neste link para Mac e Windows:
brew update && brew install azure-cli # comando para MacOS
- Abra um terminal e instalar a CLI do Azure usando os comandos neste link para Mac e Windows:
Parte 2 - Criando um grupo de recursos, uma rede virtual e uma sub-rede na nuvem do Azure
-
- Vá para sua Página inicial do Azure
- Faça login na sua conta do Azure usando o código abaixo por meio do terminal:
login az
123456789101112131415161718192021222324252627282930313233(base) nishant.bhatia@JGWXHT4VFM ~ % az loginA web navegador tem foram aberto em https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Continue o login no navegador da Web. Se nenhum navegador da Web estiver disponível ou se o navegador não abrir, use o fluxo de código do dispositivo com `az login --use-device-code`.[{"cloudName": "AzureCloud","homeTenantId": "897b2d61-f537-4fde-bc07-520be26839d8","id": "2192c0ac-2205-4be3-86bf-619230e53f35","isDefault": verdadeiro,"managedByTenants": [],"name" (nome): "240 - SE EMEA","estado": "Ativado","tenantId": "897b2d61-f537-4fde-bc07-520be26839d8","usuário": {"name" (nome): "nishant.bhatia@couchbase.com","tipo": "usuário"}},{"cloudName": "AzureCloud","homeTenantId": "4848c000-7611-4f22-84a4-165f8b43c829","id": "c7416817-fbcc-44bc-aaba-95e733cef88d","isDefault": falso,"managedByTenants": [],"name" (nome): "240 - Assinatura de teste SE","estado": "Ativado","tenantId": "4848c000-7611-4f22-84a4-165f8b43c829","usuário": {"name" (nome): "nishant.bhatia@couchbase.com","tipo": "usuário"}}]
- Crie um novo grupo de recursos no Azure. Substitua o nome conexão privada e localização leste conforme desejado.
Observação: isso pode ser feito por meio da interface do usuário do Azure; no entanto, é muito mais simples criar um com a CLI do Azure:-
az group create --name privatelinkazure --location eastus
12345678910111213(base) nishant.bhatia@JGWXHT4VFM ~ % az grupo criar --nome conexão privada --localização leste{"id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure","localização": "eastus","managedBy": nulo,"name" (nome): "privatelinkazure","propriedades": {"provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido)},"tags": nulo,"tipo": "Microsoft.Resources/resourceGroups"}
-
- Verifique se o grupo foi criado:
-
az group list --output table
123456789101112131415161718192021222324(base) nishant.bhatia@JGWXHT4VFM ~ % az grupo lista --saída tabelaNome Localização Status----------------------------------------- ------------------ ---------DefaultResourceGroup-SUK uksouth Bem-sucedidoAaronsResources leste Bem-sucedidoRoisResourceGroup leste Bem-sucedidoMC_RoisResourceGroup_roiAKSCluster_leste leste Bem-sucedidoPythonBenchmark_grupo leste Bem-sucedidoObservador de redeRG leste Bem-sucedidonuvem-casca-armazenamento-leste leste Bem-sucedidomyResourceGroup leste Bem-sucedidose-ceur-sennheiser-1_grupo leste Bem-sucedidogrupo nishants leste Bem-sucedidonuvem-casca-armazenamento-westus westus Bem-sucedidoHirschGroup germanywestcentral Bem-sucedidoDefaultResourceGroup-DEWC germanywestcentral Bem-sucedidoconexão privada leste Bem-sucedidoadamclevy suíça do norte Bem-sucedidoAIshaqRG uksouth Bem-sucedidoKarthiksrgp uksouth Bem-sucedidoRichardDouglas uksouth Bem-sucedidoAerospikeBioCatch_grupo nordeste da Europa Bem-sucedidonuvem-casca-armazenamento-westeurope westeurope Bem-sucedido
-
- A próxima etapa é criar um rede virtual e sub-rede no grupo de recursos que acabamos de criar.
Substituir REDE VIRTUAL, Padrão com o nome desejado. Você pode manter o endereço para 10.0.0.0/16 e 10.0.0.0/24:-
az network vnet create --name PLVIRTUALNETWORK --resource-group privatelinkazure --location eastus --address-prefixes 10.0.0.0/16 --subnet-name default --subnet-prefix 10.0.0.0/24
1234567891011121314151617181920212223242526272829303132333435(base) nishant.bhatia@JGWXHT4VFM ~ % az rede vnet criar --nome REDE VIRTUAL --recurso-grupo conexão privada --localização leste --endereço-prefixos 10.0.0.0/16 --sub-rede-nome padrão --sub-rede-prefixo 10.0.0.0/24{"newVNet": {"addressSpace": {"addressPrefixes": ["10.0.0.0/16"]},"enableDdosProtection": falso,"etag": "W/\"41972493-3e9e-4dd1-88ac-6bab0fe2e9e6\"","id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK","localização": "eastus","name" (nome): "PLVIRTUALNETWORK","provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido),"resourceGroup" (grupo de recursos): "privatelinkazure","resourceGuid": "89b24aec-cd5a-4ca7-a92e-912b8a9c10f8","subnets": [{"addressPrefix": "10.0.0.0/24","delegações": [],"etag": "W/\"41972493-3e9e-4dd1-88ac-6bab0fe2e9e6\"","id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK/subnets/default","name" (nome): "default","privateEndpointNetworkPolicies": "Desativado","privateLinkServiceNetworkPolicies": "Ativado","provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido),"resourceGroup" (grupo de recursos): "privatelinkazure","tipo": "Microsoft.Network/virtualNetworks/subnets"}],"tipo": "Microsoft.Network/virtualNetworks","virtualNetworkPeerings": []}}
-
Parte 3: Configuração do Capella
-
- Faça login na Capella com seu e-mail corporativo e credenciais.
- Em seu projeto, crie um banco de dados com a seguinte configuração:
- Quando o banco de dados estiver Saudável, implantar o amostra de viagem balde:
Parte 4: Ativar o ponto de extremidade privado
-
- Em seu banco de dados Capella, abra a página Settings (Configurações), navegue até Ponto de extremidade privado e clique em Ativar ponto de extremidade privado.

- Essa ação geralmente leva cerca de 10 minutos para ativar o Private Endpoint.

- Quando estiver pronto, você verá que o DNS do Ponto de extremidade privado agora está disponível na interface do usuário do Capella. Observe também que os pontos de extremidade privados são cobrados por hora pelos pontos de extremidade privados do Azure para esse banco de dados até que você desative essa opção.

- Clique em Adicionar ponto de extremidade privado. Adicione o nome do grupo de recursos e o nome da sub-rede que criamos anteriormente. Nesse caso, o grupo de recursos será conexão privadaA rede virtual será REDE VIRTUAL e o nome da sub-rede será padrão. Consulte a Parte 2 acima.


- Faça o download do script e abra-o no Notepad++ ou no Sublime Text.


- Abra o Terminal do Azure novamente, onde criamos o grupo de recursos, a rede virtual e a sub-rede.
- No script de shell que baixamos, execute os três primeiros comandos a partir de:
- Crie um ponto de extremidade privado:
az network private-endpoint create -g privatelinkazure -n pl-7330b162-12a1-4695-9317-2ecae322690b --vnet-name PLVIRTUALNETWORK --subnet default --private-connection-resource-id 'pl-4e207316-42c5-4561-920e-d044dd57f771.e520e4d0-fd92-440e-9a82-eabd3562761c.eastus.azure.privatelinkservice' --connection-name pl-7330b162-12a1-4695-9317-2ecae322690b -l eastus --manual-request true
- Crie um ponto de extremidade privado:
- Em seu banco de dados Capella, abra a página Settings (Configurações), navegue até Ponto de extremidade privado e clique em Ativar ponto de extremidade privado.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
(base) nishant.bhatia@JGWXHT4VFM ~ % az rede privado-ponto final criar -g conexão privada -n pl-7330b162-12a1-4695-9317-2ecae322690b --vnet-nome REDE VIRTUAL --sub-rede padrão --privado-conexão-recurso-id 'pl-4e207316-42c5-4561-920e-d044dd57f771.e520e4d0-fd92-440e-9a82-eabd3562761c.eastus.azure.privatelinkservice' --conexão-nome pl-7330b162-12a1-4695-9317-2ecae322690b -l leste --manual-solicitação verdadeiro { "customDnsConfigs": [], "customNetworkInterfaceName": "", "etag": "W/\"465e5e06-5340-4aa9-a5c6-c3fa51c4a51a\"", "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/privateEndpoints/pl-7330b162-12a1-4695-9317-2ecae322690b", "ipConfigurations": [], "localização": "eastus", "manualPrivateLinkServiceConnections": [ { "etag": "W/\"465e5e06-5340-4aa9-a5c6-c3fa51c4a51a\"", "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/privateEndpoints/pl-7330b162-12a1-4695-9317-2ecae322690b/manualPrivateLinkServiceConnections/pl-7330b162-12a1-4695-9317-2ecae322690b", "name" (nome): "pl-7330b162-12a1-4695-9317-2ecae322690b", "privateLinkServiceConnectionState": { "actionsRequired": "Nenhum", "description" (descrição): "Aguardando aprovação", "status": "Pendente" }, "privateLinkServiceId": "pl-4e207316-42c5-4561-920e-d044dd57f771.e520e4d0-fd92-440e-9a82-eabd3562761c.eastus.azure.privatelinkservice", "provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido), "resourceGroup" (grupo de recursos): "privatelinkazure", "tipo": "Microsoft.Network/privateEndpoints/manualPrivateLinkServiceConnections" } ], "name" (nome): "pl-7330b162-12a1-4695-9317-2ecae322690b", "networkInterfaces": [ { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/networkInterfaces/pl-7330b162-12a1-4695-9317-2ecae322690b.nic.9cdf1d1d-ad92-4a2a-8391-1396c4f4701a", "resourceGroup" (grupo de recursos): "privatelinkazure" } ], "privateLinkServiceConnections": [], "provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido), "resourceGroup" (grupo de recursos): "privatelinkazure", "subnet": { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK/subnets/default", "resourceGroup" (grupo de recursos): "privatelinkazure" }, "tipo": "Microsoft.Network/privateEndpoints" } |
-
- Criar zona DNS:
az network private-dns zone create -g privatelinkazure -n private-endpoint.wqdxhcxm9lcue9g.cloud.couchbase.com
- Criar zona DNS:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
(base) nishant.bhatia@JGWXHT4VFM ~ % az rede privado-dns zona criar -g conexão privada -n privado-ponto final.wqdxhcxm9lcue9g.nuvem.couchbase.com { "etag": "8af683b0-e5a6-4abe-a6bf-94ee0261c33b", "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/privateDnsZones/private-endpoint.wqdxhcxm9lcue9g.cloud.couchbase.com", "localização": "global", "maxNumberOfRecordSets": 25000, "maxNumberOfVirtualNetworkLinks": 1000, "maxNumberOfVirtualNetworkLinksWithRegistration": 100, "name" (nome): "private-endpoint.wqdxhcxm9lcue9g.cloud.couchbase.com", "numberOfRecordSets": 1, "numberOfVirtualNetworkLinks": 0, "numberOfVirtualNetworkLinksWithRegistration": 0, "provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido), "resourceGroup" (grupo de recursos): "privatelinkazure", "tipo": "Microsoft.Network/privateDnsZones" } |
-
- Link da zona DNS:
az network private-dns link vnet create -g privatelinkazure -n dnslink-4e207316-42c5-4561-920e-d044dd57f771 -z private-endpoint.wqdxhcxm9lcue9g.cloud.couchbase.com -v PLVIRTUALNETWORK -e False
- Link da zona DNS:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
(base) nishant.bhatia@JGWXHT4VFM ~ % az rede privado-dns link vnet criar -g conexão privada -n dnslink-4e207316-42c5-4561-920e-d044dd57f771 -z privado-ponto final.wqdxhcxm9lcue9g.nuvem.couchbase.com -v REDE VIRTUAL -e Falso { "etag": "\"540b14b1-0000-0100-0000-65983fc10000\"", "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/privateDnsZones/private-endpoint.wqdxhcxm9lcue9g.cloud.couchbase.com/virtualNetworkLinks/dnslink-4e207316-42c5-4561-920e-d044dd57f771", "localização": "global", "name" (nome): "dnslink-4e207316-42c5-4561-920e-d044dd57f771", "provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido), "registrationEnabled": falso, "resourceGroup" (grupo de recursos): "privatelinkazure", "tipo": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", "virtualNetwork": { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK", "resourceGroup" (grupo de recursos): "privatelinkazure" }, "virtualNetworkLinkState": "Concluído" } |
Parte 4: Aceitar conexão pendente e verificar o ponto de extremidade
-
- Vá para a interface do usuário do Capella novamente e aceite a conexão pendente. Depois que a conexão for estabelecida, você verá uma mensagem Vinculado status.


- Copie e cole o endpoint da interface da Capella UI em um bloco de notas. Nesse caso:
pl-7330b162-12a1-4695-9317-2ecae322690b.ef04ba0b-7b81-4404-8db2-01b3f116dfa3 - No código abaixo, substitua o endpoint da interface pelo seu endpoint até o ponto "." Nesse caso:
pl-7330b162-12a1-4695-9317-2ecae322690baz network private-endpoint show --name pl-7330b162-12a1-4695-9317-2ecae322690b --resource-group privatelinkazure
- Vá para a interface do usuário do Capella novamente e aceite a conexão pendente. Depois que a conexão for estabelecida, você verá uma mensagem Vinculado status.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
(base) nishant.bhatia@JGWXHT4VFM ~ % az rede privado-ponto final show --nome pl-7330b162-12a1-4695-9317-2ecae322690b --recurso-grupo conexão privada { "customDnsConfigs": [], "customNetworkInterfaceName": "", "etag": "W/\"0b317ee7-e04e-4255-aa0c-b58ccd8fc5ff\"", "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/privateEndpoints/pl-7330b162-12a1-4695-9317-2ecae322690b", "ipConfigurations": [], "localização": "eastus", "manualPrivateLinkServiceConnections": [ { "etag": "W/\"0b317ee7-e04e-4255-aa0c-b58ccd8fc5ff\"", "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/privateEndpoints/pl-7330b162-12a1-4695-9317-2ecae322690b/manualPrivateLinkServiceConnections/pl-7330b162-12a1-4695-9317-2ecae322690b", "name" (nome): "pl-7330b162-12a1-4695-9317-2ecae322690b", "privateLinkServiceConnectionState": { "actionsRequired": "", "description" (descrição): "", "status": "Aprovado" }, "privateLinkServiceId": "pl-4e207316-42c5-4561-920e-d044dd57f771.e520e4d0-fd92-440e-9a82-eabd3562761c.eastus.azure.privatelinkservice", "provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido), "resourceGroup" (grupo de recursos): "privatelinkazure", "tipo": "Microsoft.Network/privateEndpoints/manualPrivateLinkServiceConnections" } ], "name" (nome): "pl-7330b162-12a1-4695-9317-2ecae322690b", "networkInterfaces": [ { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/networkInterfaces/pl-7330b162-12a1-4695-9317-2ecae322690b.nic.9cdf1d1d-ad92-4a2a-8391-1396c4f4701a", "resourceGroup" (grupo de recursos): "privatelinkazure" } ], "privateLinkServiceConnections": [], "provisioningState" (estado de provisionamento): "Succeeded" (bem-sucedido), "resourceGroup" (grupo de recursos): "privatelinkazure", "subnet": { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK/subnets/default", "resourceGroup" (grupo de recursos): "privatelinkazure" }, "tipo": "Microsoft.Network/privateEndpoints" } |
Agora você estabeleceu uma conexão privada entre o Azure VPC e o Couchbase Capella usando um link privado!
Conclusão
O Azure Private Link oferece um método seguro e eficiente de conexão com o Couchbase Capella, garantindo que seus dados permaneçam protegidos contra ameaças externas ao manter o tráfego dentro da rede privada da Microsoft. Essa configuração elimina a exposição à Internet pública, reduzindo significativamente a superfície de ataque. O Azure Private Link fornece apenas comunicação unidirecional, garantindo que os dados fluam com segurança de seus recursos para o Couchbase Capella sem nenhum caminho reverso. Além disso, o Azure Private Link oferece desempenho de rede consistente, aproveitando a rede de backbone global da Microsoft para fornecer conectividade confiável e de baixa latência. Isso torna o Azure Private Link um componente essencial para operações de banco de dados seguras e de alto desempenho na nuvem.
Documentação






