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 browser has been opened at https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login --use-device-code`.[{"cloudName": "AzureCloud","homeTenantId": "897b2d61-f537-4fde-bc07-520be26839d8","id": "2192c0ac-2205-4be3-86bf-619230e53f35","isDefault": true,"managedByTenants": [],"name": "240 - SE EMEA","state": "Enabled","tenantId": "897b2d61-f537-4fde-bc07-520be26839d8","user": {"name": "nishant.bhatia@couchbase.com","type": "user"}},{"cloudName": "AzureCloud","homeTenantId": "4848c000-7611-4f22-84a4-165f8b43c829","id": "c7416817-fbcc-44bc-aaba-95e733cef88d","isDefault": false,"managedByTenants": [],"name": "240 - SE Test Subscription","state": "Enabled","tenantId": "4848c000-7611-4f22-84a4-165f8b43c829","user": {"name": "nishant.bhatia@couchbase.com","type": "user"}}]
- 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 group create --name privatelinkazure --location eastus{"id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure","location": "eastus","managedBy": null,"name": "privatelinkazure","properties": {"provisioningState": "Succeeded"},"tags": null,"type": "Microsoft.Resources/resourceGroups"}
-
- Verifique se o grupo foi criado:
-
az group list --output table
123456789101112131415161718192021222324(base) nishant.bhatia@JGWXHT4VFM ~ % az group list --output tableName Location Status----------------------------------------- ------------------ ---------DefaultResourceGroup-SUK uksouth SucceededAaronsResources eastus SucceededRoisResourceGroup eastus SucceededMC_RoisResourceGroup_roiAKSCluster_eastus eastus SucceededPythonBenchmark_group eastus SucceededNetworkWatcherRG eastus Succeededcloud-shell-storage-eastus eastus SucceededmyResourceGroup eastus Succeededse-ceur-sennheiser-1_group eastus Succeedednishantsgroup eastus Succeededcloud-shell-storage-westus westus SucceededHirschGroup germanywestcentral SucceededDefaultResourceGroup-DEWC germanywestcentral Succeededprivatelinkazure eastus Succeededadamclevy switzerlandnorth SucceededAIshaqRG uksouth SucceededKarthiksrgp uksouth SucceededRichardDouglas uksouth SucceededAerospikeBioCatch_group northeurope Succeededcloud-shell-storage-westeurope westeurope Succeeded
-
- 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 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{"newVNet": {"addressSpace": {"addressPrefixes": ["10.0.0.0/16"]},"enableDdosProtection": false,"etag": "W/\"41972493-3e9e-4dd1-88ac-6bab0fe2e9e6\"","id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK","location": "eastus","name": "PLVIRTUALNETWORK","provisioningState": "Succeeded","resourceGroup": "privatelinkazure","resourceGuid": "89b24aec-cd5a-4ca7-a92e-912b8a9c10f8","subnets": [{"addressPrefix": "10.0.0.0/24","delegations": [],"etag": "W/\"41972493-3e9e-4dd1-88ac-6bab0fe2e9e6\"","id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK/subnets/default","name": "default","privateEndpointNetworkPolicies": "Disabled","privateLinkServiceNetworkPolicies": "Enabled","provisioningState": "Succeeded","resourceGroup": "privatelinkazure","type": "Microsoft.Network/virtualNetworks/subnets"}],"type": "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 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 { "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": [], "location": "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": "pl-7330b162-12a1-4695-9317-2ecae322690b", "privateLinkServiceConnectionState": { "actionsRequired": "None", "description": "Awaiting Approval", "status": "Pending" }, "privateLinkServiceId": "pl-4e207316-42c5-4561-920e-d044dd57f771.e520e4d0-fd92-440e-9a82-eabd3562761c.eastus.azure.privatelinkservice", "provisioningState": "Succeeded", "resourceGroup": "privatelinkazure", "type": "Microsoft.Network/privateEndpoints/manualPrivateLinkServiceConnections" } ], "name": "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": "privatelinkazure" } ], "privateLinkServiceConnections": [], "provisioningState": "Succeeded", "resourceGroup": "privatelinkazure", "subnet": { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK/subnets/default", "resourceGroup": "privatelinkazure" }, "type": "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 network private-dns zone create -g privatelinkazure -n private-endpoint.wqdxhcxm9lcue9g.cloud.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", "location": "global", "maxNumberOfRecordSets": 25000, "maxNumberOfVirtualNetworkLinks": 1000, "maxNumberOfVirtualNetworkLinksWithRegistration": 100, "name": "private-endpoint.wqdxhcxm9lcue9g.cloud.couchbase.com", "numberOfRecordSets": 1, "numberOfVirtualNetworkLinks": 0, "numberOfVirtualNetworkLinksWithRegistration": 0, "provisioningState": "Succeeded", "resourceGroup": "privatelinkazure", "type": "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 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 { "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", "location": "global", "name": "dnslink-4e207316-42c5-4561-920e-d044dd57f771", "provisioningState": "Succeeded", "registrationEnabled": false, "resourceGroup": "privatelinkazure", "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks", "virtualNetwork": { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK", "resourceGroup": "privatelinkazure" }, "virtualNetworkLinkState": "Completed" } |
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 network private-endpoint show --name pl-7330b162-12a1-4695-9317-2ecae322690b --resource-group privatelinkazure { "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": [], "location": "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": "pl-7330b162-12a1-4695-9317-2ecae322690b", "privateLinkServiceConnectionState": { "actionsRequired": "", "description": "", "status": "Approved" }, "privateLinkServiceId": "pl-4e207316-42c5-4561-920e-d044dd57f771.e520e4d0-fd92-440e-9a82-eabd3562761c.eastus.azure.privatelinkservice", "provisioningState": "Succeeded", "resourceGroup": "privatelinkazure", "type": "Microsoft.Network/privateEndpoints/manualPrivateLinkServiceConnections" } ], "name": "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": "privatelinkazure" } ], "privateLinkServiceConnections": [], "provisioningState": "Succeeded", "resourceGroup": "privatelinkazure", "subnet": { "id": "/subscriptions/2192c0ac-2205-4be3-86bf-619230e53f35/resourceGroups/privatelinkazure/providers/Microsoft.Network/virtualNetworks/PLVIRTUALNETWORK/subnets/default", "resourceGroup": "privatelinkazure" }, "type": "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






