É muito comum a necessidade de que a comunicação com os repositórios de cloud no Veeam Backup & Replication sejam feitos via rede privada ao invés da comunicação ser diretamente pela internet. Os grandes providers possuem serviços de comunicação direta com seus data centers com links rápidos, então é ideal utilizar esse tipo de conexão para os backups.
Entretanto, isso envolve diversos passos e uma necessidade de certo conhecimento no Cloud Provider que você deseja utilizar.
Nesse post irei demonstrar como configurar um repositório na AWS utilizando VPC Endpoints para a comunicação ser toda interna.
Pré-Requisitos
- Nesse tutorial eu usarei uma VPN client-to-site para simular a comunicação privada com a AWS. Não irei cobrir os passos necessários para isso.
- No meu ambiente eu já possuo uma VPC, Subnets e Security Group para criação do VPC Endpoint.
- O tutorial foi criado utilizando a versão 12.3.1 do Veeam Backup & Replication.
- Estou me baseando no KB 4226 para os passos descritos nesse post: How to Connect to an Object Storage Repository via AWS Privatelink / Direct Connect
Criando Bucket
Primeiro devemos criar o bucket que será utilizado como repositório. No meu lab irei utilizar a região de São Paulo.
Esse processo não é diferente da criação de qualquer bucket na AWS, então primeiro devemos escolher o nome do bucket:
Mantenha a opção de bloquear o acesso externo selecionada.
Como não utilizarei imutabilidade não vou marcar a opção de habilitar o Object Lock, mas caso haja a necessidade de utilizar imutabilidade habilite a opção como abaixo:
Criando IAM User e IAM Policy
Para acessar o bucket durante a criação do repositório precisamos criar um usuário que tenhas as permissões necessárias.
Primeiro iremos criar a Política com as permissões necessárias. Nesse exemplo usarei as permissões com imutabilidade e helper appliance, é possível verificar as permissões para cada caso nesse LINK.
No Dashboard do IAM clique em “Policies”.
Escolha a opção de criar uma nova política e clique na opção de JSON.
Podemos copiar as permissões do User Guide no campo de edição do JSON conforme abaixo:
Defina um nome para política, uma descrição e clique em Create.
Com a Política criada, já podemos criar o usuário que utilizaremos. Voltando ao Dashboard clique em Users e Create User.
Defina um nome para o usuário e deixe desmarcado a opção de acesso a console.
Em Permissions, escolha a opção de adicionar uma política diretamente ao usuário e selecione a política criada anteriormente.
Na próxima tela clique em Create User.
Após a criação clique no usuário para abrir as propriedades desse novo usuário. Precisamos criar uma Access Key para esse usuáro que será utilizada durante a criação do repositório.
Vá até a aba “Security Credentials” e em “Access Key” clique para criar uma nova access key.
Escolha a opção de Command Line Interface.
Escolha uma descrição e clique em Create.
Anote a Access Key e Secret Key para uso posterior no repositório. Esses valores não serão mostrados novamente, então tenha certeza que foi anotado corretamente.
Criando VPC Endpoint
Agora que temos o bucket e o usuário criado podemos preparar a parte mais importante para acesso ao bucket via rede interna.
A AWS possui o serviço de VPC Endpoint que permite o acesso aos serviços da AWS em rede privada via AWS Private Link. Na documentação da AWS é explicado melhor o conceito e como funciona: Access AWS services through AWS PrivateLink.
No meu lab eu criei uma VPN entre meu VBR e uma VPC na AWS. Nessa VPC iremos criar o VPC Endpoint necessário para acesso ao S3 e ao EC2 na rede privada, assim poderemos criar nosso repositório no VBR e toda a comunicação do backup para a AWS será feita privada pela VPN criada.
Esse é um exemplo simples que criei para demonstrar, em um ambiente de produção talvez você possua diversas VPC e esteja utilizando o serviço de Direct Connect da AWS para ter um link de acesso rápido a AWS, mas o conceito do VPC Endpoint é o mesmo.
Sem mais delongas, iremos criar o VPC Endpoint indo até a seção de VPC -> Private Link -> Endpoints.
Clique em Create Endpoint e escolha um nome para o endpoint e escolha a opção de AWS Service.
Procure pelo nome do serviço e selecione a opção de Interface.
Selecione a VPC que será utilizada para criação do Endpoint. Um IP da VPC/Subnet será associado ao Endpoint.
Marque também a opção de associar um DNS para o endpoint.
Selecione uma subnet onde será criado o endpoint.
E também um Security Group.
O Security Group pode ter aberto apenas as portas que são utilizadas, no caso do repositório é apenas 443.
Clique em create e aguarde. O processo demora um pouco e o endpoint só estará disponível quando estiver como “Available”.
Agora repita o mesmo processo para o serviço de EC2.
Para a criação do Endpoint para EC2 escolha o serviço abaixo:
O Seucirty Group associado ao Endpoint do EC2 precisa ter as portas 443 e 22 abertas.
No final do processo ambos os Endpoints deverão estar disponíveis como abaixo:
Clique em ambos os Endpoints e copie o DNS name. Você verá diversos nomes diferentes, copie apenas o primeiro. Usaremos esses nomes no VBR no próximo passo.
Preparando o VBR
Agora que criamos tudo que é necessário no lado da AWS já podemos prepara o VBR. É necessário alguams configurações adicionais antes da criação do repositório.
Primeiro precisamos desabilitar o update automático do arquivo XML “AmazonS3Regions”. Esse arquivo contém os endereços para acesso as regiões e serviços da AWS e vamos alterá-lo, mas ele não pode ser sobreposto automaticamente pelos serviços do VBR, então precisamos criar uma chave de registro para desabilitar esse comportamento.
O comando Powershell abaixo cria a chave de registro necessária:
New-ItemProperty -Path "HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication\" -Name "CloudRegionsDisableUpdate" -Value "1" -PropertyType "DWORD"
Precisamos também desabilitar a chacege de revogação de certificados no gateway que fará acesso ao repositório na AWS. No meu caso eu possuo apenas o VBR, mas verifique em seu ambiente quem é o Gateway do repositório.
New-ItemProperty -Path "HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication\" -Name "ObjectStorageTlsRevocationCheck" -Value "0" -PropertyType "DWORD"
Caso o Gateway seja um servidor Linux, adicione a linha a seguir no arquivo /etc/VeeamAgentConfig: ObjectStorageTlsRevocationCheck=0
Se for utilizar o Helper Appliance para verificar os backups no repositório na AWS, então precisamos criar a chave de registro abaixo para garantir que o Helper Appliance irá utilizar apenas IPs privados:
New-ItemProperty -Path "HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication\" -Name "ArchiveUsePrivateIpForAmazonHelperAppliance" -Value "1" -PropertyType "DWORD"
Se for utilizar o Archive Tier no Scale-Out Backup Repository, então precisamos também criar mais duas chaves de registros.
A primeira para garantir que o Helper Appliance responsável pelo Archive irá utilizar apenas IPs privados:
New-ItemProperty -Path "HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication\" -Name "ArchiveFreezingUsePrivateIpForAmazonAppliance" -Value "1" -PropertyType "DWORD"
E uma segunda para evitar a validação do prxy do Helper Appliance:
New-ItemProperty -Path "HKLM:\SOFTWARE\Veeam\Veeam Backup and Replication\" -Name "ArchiveFreezingSkipProxyValidation" -Value "1" -PropertyType "DWORD"
Agora precisamos atualizar o arquivo AmazonS3Regions.xml com os nomes DNS que copiamos dos Endpoints da AWS. Vá até o caminho: C:\Program Files\Veeam\Backup and Replication\Backup\AmazonS3Regions.xml e faça uma cópia desse arquivo como backup.
Abrindo o arquivo iremos alterar as linhas dos serviço S3 e EC2 para a região que estamos utilizando (nesse caso São Paulo). O arquivo original é igual a imagem abaixo:
O arquivo deve ser alterado com os nomes que copiamos para os serviços S3 e EC2. Abaixo um exemplo de como deve ficar:
EC2: vpce-0fef22112345678-123456.ec2.sa-east-1.vpce.amazonaws.com
S3: bucket.vpce-0fef22112345678-123456.s3.sa-east-1.vpce.amazonaws.com
Repare que a palavra “bucket” foi adicionada ao DNS do Endpoint do S3. Isso é padrão para todos os casos, deve ser adicionada a palavra bucket como o exemplo acima. Esse passo é muito importante, não coleque o nome do bucket que você criou para o seu repositório.
Abaixo um exemplo do arquivo já modificado, apenas com esses endereços para o S3 e EC2:
Salve o arquivo e reinicie todos os serviços do Veeam Backup & Replication ou apenas reinicie o servidor.
Teste também a resolução de nome e conexão, devemos ser capazes de comunicar com ambos os endereços na porta 443 e o DNS precisa ser resolvido para o um IP privado.
Criando Repositório
Depois de validar a conexão podemos finalmente criar o repositório.
Esse passo não tem muito segredo porque já está tudo configurado, então vamos seguir com a criação de um repositório para AWS.
No meu exemplo irei criar apenas o repositório S3 normal.
Em Account adicione a conta que criamos na AWS com o Access Key e Secret Key.
Em Connection Mode, selecione o Gateway que fará a conexão com a AWS. No meu caso tenho apenas o servidor do VBR, então vou deixar o padrão.
Em Bucket selecione o Data Center (São Paulo), o bucket criado e crie uma Folder.
As outras opções podem ser configuradas conforme necessário, se a imutabilidade for utilizada marque a opção “Make recent backups immutable” e selecione a quantidade de dias.
Na opção de Mount Server, clicando em Configure na parte do Helper Appliance podemos definir o tipo de EC2 que o Helper Appliance usará e também as configurações de rede. Tenha certeza que a VPC escolhida possua acesso ao VPC Endpoint que estamos utilizando.
O restante das opções podem deixar como padrão.
Testando repositório e conexão
Para validar o repositório e a conexão com a AWS eu criei um job simples criando o backup diretamente na AWS.
Com a transferência de dados iniciada eu posso ver que minha conexão VPN com a AWS está sendo utilizada no momento do backup, então isso garante que a conexão está sendo feita utilizando o VPC Endpoint e toda a conexão está sendo privada.
Simulei também uma execução do Health Check para iniciar a criação do Helper Appliance.
Podemos ver que o Helper Appliance foi criado na AWS apenas com IP privado, garantindo que a conexão com o bucket seja apenas via VPC Endpoint.
Compartilhe!