Frontend público e back-end privado em uma Virtual Private Cloud
Este tutorial pode incorrer em custos. Use o Estimador de custos para gerar uma estimativa do custo baseada em seu uso projetado.
Este tutorial guia você na criação de sua própria IBM Cloud® Virtual Private Cloud (VPC) com múltiplas sub-redes e uma instância de servidor virtual (VSI) em cada sub-rede. Uma VPC é a sua própria nuvem particular na infraestrutura de nuvem compartilhada com isolamento lógico de outras redes virtuais.
Uma sub-rede é um intervalo de endereço IP. Ela é ligada a uma única zona e não pode abranger múltiplas zonas ou regiões. Para os propósitos de VPC, a característica importante de uma sub-rede é o fato de que as sub-redes podem ser isoladas umas das outras, bem como estar interconectadas da maneira usual. O isolamento de sub-rede pode ser realizado por Grupos de segurança que agem como firewalls para controlar o tráfego de entrada e de saída para uma ou mais instâncias de servidor virtual.
Uma boa prática é ter uma sub-rede usada para recursos que devem ser expostos para o mundo externo. Os recursos com acesso restrito que nunca devem ser acessados diretamente do mundo externo são colocados dentro de uma sub-rede diferente. As instâncias em tal sub-rede podem ser seu banco de dados de back-end ou algum armazenamento secreto que você não deseja que seja publicamente acessível. Você definirá Grupos de segurança para permitir ou negar o tráfego para as VSIs.
Em resumo, usando VPC, é possível:
- criar um software-defined network (SDN),
- isolar cargas de trabalho,
- ter bom controle de tráfego de entrada e de saída.
Objetivos
- Entender os objetos de infraestrutura disponíveis para nuvens particulares virtuais
- Aprender como criar uma nuvem particular virtual, sub-redes e instâncias do servidor
- Saber como aplicar grupos de segurança para proteger o acesso aos servidores
- O administrador (DevOps) configura a infraestrutura necessária (VPC, sub-redes, grupos de segurança com regras, VSIs) na nuvem.
- O usuário da Internet faz uma solicitação de HTTP/HTTPS para o servidor da web no front-end.
- O front-end solicita recursos privados do back-end seguro e entrega resultados para o usuário.
Antes de Iniciar
- Verifique as permissões do usuário. Certifique-se de que sua conta do usuário tenha permissões suficientes para criar e gerenciar recursos VPC. Consulte a lista de permissões necessárias para a VPC.
- Você precisa de uma chave SSH para se conectar aos servidores virtuais. Se você não tiver uma chave SSH, consulte as instruções para criar uma chave para a VPC.
Crie uma Nuvem Privada Virtual e sub-redes
Para ajustar a segurança de seus servidores, é recomendado permitir somente conexões com as portas requeridas pelos aplicativos implementados nos servidores. Neste tutorial, o aplicativo será um servidor da web, portanto, ele precisará somente permitir conexões de entrada na porta 80.
Para executar tarefas de manutenção nesses servidores, como instalar software, executar upgrades do sistema operacional, você passará por um host bastion. Um host bastion é uma instância que é provisionada com um endereço IP público e pode ser acessada por meio de SSH. Depois de configurado, o host bastion age como um servidor de salto permitindo uma conexão segura com as instâncias provisionadas no VPC.
Nesta seção, você criará o VPC e o host bastion.
Este tutorial também vem com shell scripts associados e um modelo do Terraform, que podem ser usados para gerar os recursos que você criará usando a IU abaixo. Elas estão disponíveis neste repositório do Github.
- Navegue até a página Virtual Private Clouds e clique em Create (Criar ).
- Na seção Nova Virtual Private Cloud:
- Insira vpc-pubpriv como nome para seu VPC.
- Selecione um Grupo de recursos.
- Opcionalmente, inclua Tags para organizar seus recursos.
- Desmarque Permitir SSH e Permitir ping no Grupo de segurança padrão. O acesso de SSH será posteriormente incluído no grupo de segurança de manutenção. O grupo de segurança de manutenção deve ser incluído em uma instância para permitir o acesso de SSH por meio do servidor bastion. O acesso ao ping não é necessário para este tutorial.
- Em Sub-redes, mude o nome da sub-rede da Zona 1. Clique no ícone do lápis:
- Insira vpc-secure-bastion-sub-net como o nome exclusivo da sua sub-rede.
- Selecione o mesmo Grupo de recursos como o grupo de recursos do VPC.
- Deixe os padrões nos outros valores.
- Clique em Salvar
- Em Sub-redes, mude o nome da sub-rede da Zona 2. Clique no ícone do lápis:
- Insira vpc-pubpriv-backend-sub-net como o nome exclusivo da sua sub-rede.
- Selecione o mesmo Grupo de recursos como o grupo de recursos do VPC.
- Deixe os padrões nos outros valores.
- Clique em Salvar
- Em Sub-redes, mude o nome da sub-rede da Zona 3. Clique no ícone do lápis:
- Insira vpc-pubpriv-frontend-sub-net como o nome exclusivo da sua sub-rede.
- Selecione o mesmo Grupo de recursos como o grupo de recursos do VPC.
- Deixe os padrões nos outros valores.
- Clique em Salvar
- Clique em Criar nuvem particular virtual.
Para confirmar a criação da sub-rede, vá para a página Subnets e aguarde até que o status mude para Available (Disponível ).
Criar e configurar o grupo de segurança de bastion
Siga as etapas descritas nesta seção do tutorial de bastion para criar um grupo de segurança e configurar regras de entrada para a instância de servidor virtual de bastion.
Criar uma instância de bastion
Siga as etapas descritas nesta seção do tutorial de bastion para criar a instância de servidor virtual de bastion.
Configurar um grupo de segurança com regras de acesso de manutenção
Siga as etapas descritas nesta seção do tutorial de bastion para criar o grupo de segurança vpc-secure-maintenance-sg. Esse grupo de segurança será usado ao executar tarefas de manutenção em instâncias de servidor virtual, como instalar software ou atualizar o sistema operacional.
Criar um grupo de segurança e uma VSI de back-end
Nesta seção, você criará um grupo de segurança e uma instância de servidor virtual para o back-end.
Criar um grupo de segurança de back-end
O grupo de segurança de back-end controla as conexões de entrada e saída para os servidores de back-end.
Para criar um novo grupo de segurança para o back-end:
- Selecione Grupos de segurança em Rede e clique em Criar.
- Insira vpc-pubpriv-backend-sg como nome e selecione a VPC que você criou anteriormente.
- Selecione um grupo de recursos igual ao de sua VPC.
- Clique em Criar grupo de segurança.
Posteriormente, você editará o grupo de segurança para incluir as regras de entrada e saída.
Criar uma instância de servidor virtual de back-end
Para criar uma instância de servidor virtual na sub-rede recém-criada:
- Clique na sub-rede de backend em Subnets.
- Clique em Recursos anexados. Em Instâncias anexadas, clique em Criar.
- Para configurar a instância:
- Escolha um local e certifique-se de usar o mesmo local novamente mais tarde.
- Configure o nome para vpc-pubpriv-backend-vsi.
- Selecione o grupo de recursos como anteriormente.
- Em Imagem clique em Alterar imagem. Use o campo de procura para selecionar Ubuntu Linux como seu Sistema operacional. É possível selecionar qualquer versão da imagem.
- Clique em Alterar perfil, selecione Cálculo como categoria e selecione cx2-2x4 (2 vCPUs e 4 GB de RAM) como seu perfil.
- Configure Chaves SSH para a chave SSH criada anteriormente.
- Em Opções avançadas, configure Dados do usuário para
Isso instalará um servidor da web simples na instância.#!/bin/bash apt-get update apt-get install -y nginx echo "I'm the backend server" > /var/www/html/index.html service nginx start
- Em Rede, selecione a VPC criada.
- Certifique-se de que Interface de rede virtual esteja selecionada e vpc-pubpriv-backend-subnet esteja listado como sub-rede. Clique no ícone de edição para essa sub-rede
- Primeiro, em Conexão de rede e detalhes da interface de rede virtual, verifique se vpc-pubpriv-backend-subnet está selecionado. Clique em Avançar.
- Desmarque o grupo de segurança padrão e marque vpc-pubpriv-backend-sg e vpc-secure-maintenance-sg.
- No diálogo Configuração de IP, deixe tudo como está e clique em Avançar.
- Por último, revise tudo e conclua clicando em Salvar..
- Clique em ** Criar instância de servidor virtual**.
Crie um grupo de segurança de front-end e uma instância de servidor virtual
Semelhante ao back-end, você criará uma instância de servidor virtual de front-end e um grupo de segurança.
Criar um grupo de segurança de front-end
Para criar um novo grupo de segurança para o front-end:
- Clique em Grupos de segurança em Rede e, em seguida, clique em Criar.
- Insira vpc-pubpriv-frontend-sg como o nome e selecione a VPC que você criou anteriormente.
- Selecione um grupo de recursos igual ao de sua VPC.
- Clique em Criar grupo de segurança.
Criar uma instância de servidor virtual de front-end
Para criar uma instância de servidor virtual na sub-rede recém-criada:
- Clique na sub-rede do frontend em Subnets.
- Clique em Recursos anexados. Em Instâncias anexadas, clique em Criar.
- Para configurar a instância:
- Escolha um local e certifique-se de usar o mesmo local novamente mais tarde.
- Configure o nome para vpc-pubpriv-frontend-vsi.
- Selecione o grupo de recursos como anteriormente.
- Em Imagem clique em Alterar imagem. Use o campo de procura para selecionar Ubuntu Linux como seu Sistema operacional. É possível selecionar qualquer versão da imagem.
- Clique em Alterar perfil, selecione Cálculo como categoria e selecione cx2-2x4 (2 vCPUs e 4 GB de RAM) como seu perfil.
- Configure Chaves SSH para a chave SSH que você criou anteriormente.
- Em Opções avançadas, configure Dados do usuário para
Isso instalará um servidor da web simples na instância.#!/bin/bash apt-get update apt-get install -y nginx echo "I'm the frontend server" > /var/www/html/index.html service nginx start
- Em Rede, selecione a VPC criada.
- Certifique-se de que Interface de rede virtual esteja selecionada e vpc-pubpriv-frontend-subnet esteja listado como sub-rede. Clique no ícone de edição para essa sub-rede
- Primeiro, em Detalhes da conexão de rede e da interface de rede virtual, verifique se vpc-pubpriv-frontend-subnet está selecionado. Clique em Avançar.
- Desmarque o grupo de segurança padrão e marque vpc-pubpriv-frontend-sg e vpc-secure-maintenance-sg.
- No diálogo Configuração de IP, deixe tudo como está e clique em Avançar.
- Por último, revise tudo e conclua clicando em Salvar..
- Clique em ** Criar instância de servidor virtual**.
Quando a instância estiver ativa e em execução, selecione a VSI de frontend vpc-pubpriv-frontend-vsi, role para Conexões de rede com interface de rede virtual e selecione Editar IPs flutuantes no menu de três pontos para eth0. Clique em Anexar, em seguida, em Reserve novo IP flutuante e use vpc-pubpriv-frontend-vsi-ip como nome. Após concluir com Reserva, pode ser necessário atualizar a página para ver o IP recém-anexado.
Configurar a conectividade entre o front-end e o back-end
Com todos os servidores em execução, nesta seção, você configurará a conectividade para permitir operações regulares entre os servidores de front-end e back-end.
Configure o grupo de segurança de front-end
A instância frontend tem seu software instalado, mas ainda não pode ser atingido devido à configuração.
-
Para confirmar que o servidor web ainda não pode ser acessado, abra o navegador da web que aponta para
http://<floating-ip-address-of-the-frontend-vsi>
ou use:curl -v -m 30 http://<floating-ip-address-of-the-frontend-vsi>
A conexão deve atingir o tempo limite finalmente.
-
Para ativar a conexão de entrada com o servidor da web instalado na instância de front-end, é necessário abrir a porta na qual o servidor da web está atendendo.
-
Navegue para Grupos de segurança na seção Rede, em seguida, clique em vpc-pubpriv-frontend-sg.
-
Clique na guia Regras e sob as Regras de entrada clique em Criar. Adicione as regras da tabela abaixo, elas permitem solicitações HTTP de entrada e Ping (ICMP). .
Regras de entrada Protocolo Tipo de origem Origem Valor Descrição TCP Qualquer 0.0.0.0/0 Portas 80-80 Essa regra permite conexões de qualquer endereço IP para o servidor da web de front-end. ICMP Qualquer 0.0.0.0/0 Tipo: 8, Código: Deixar vazio Essa regra permite que o servidor de front-end seja submetido a ping por qualquer host. -
Em seguida, inclua a regra de saída. A porta do back-end depende do software que você está instalando no servidor virtual. Este tutorial usa um servidor da web atendendo na porta 80. Consulte a tabela Regras de saída abaixo para obter os valores.
Regras de saída Protocolo Tipo de destino Destino Valor Descrição TCP Grupo de segurança vpc-pubpriv-backend-sg Portas 80-80 Essa regra permite que o servidor de front-end se comunique com o servidor de back-end. -
Acesse a instância de front-end novamente em
http://<floating-ip-address-of-the-frontend-vsi>
para visualizar a página de boas-vindas do servidor da web.
Testar a conectividade entre o front-end e o back-end
O servidor de back-end está executando o mesmo software do servidor da web que o servidor de frontend. Ele pode ser considerado como um microsserviço expondo uma interface HTTP que o front-end estaria chamando. Nesta seção, você tentará se conectar ao back-end por meio da instância do servidor de front-end.
-
Na lista Virtual Server Instances(Instâncias de servidor virtual ), recupere o endereço IP flutuante do host do servidor bastion (vpc-secure-bastion ) e os endereços IP privados das instâncias de servidor frontend (vpc-pubpriv-frontend-vsi ) e backend (vpc-pubpriv-backend-vsi ).
-
Use
ssh
para se conectar ao servidor virtual de front-end:ssh -J root@<floating-ip-address-of-the-bastion-vsi> root@<private-ip-address-of-the-frontend-vsi>
O SSH para o front-end somente será possível por meio do bastion e quando o vpc-secure-maintenance-sg tiver sido anexado à instância de front-end.
-
Chame o servidor da web de back-end:
curl -v -m 30 http://<private-ip-address-of-the-backend-vsi>
Após 30 segundos, a chamada deve ter o tempo limite. De fato, o grupo de segurança para o servidor de back-end ainda não foi configurado e não está permitindo nenhuma conexão de entrada.
Configure o grupo de segurança de back-end
Para permitir conexões de entrada com o servidor de back-end, é necessário configurar o grupo de segurança associado.
-
Navegue para Grupos de segurança na seção Rede, em seguida, clique em vpc-pubpriv-backend-sg.
-
Clique na guia Regras e sob as Regras de entrada clique em Criar. Inclua a regra a seguir.
Regras de entrada Protocolo Tipo de origem Origem Valor Descrição TCP Grupo de segurança vpc-pubpriv-frontend-sg Portas 80-80 Esta regra permite conexões recebidas na porta 80 do servidor de front-end até o servidor de back-end.
Confirmar a conectividade
- Chame o servidor da web de back-end por meio do servidor de front-end novamente:
curl -v -m 30 http://<private-ip-address-of-the-backend-vsi>
- A solicitação retorna rapidamente e gera a mensagem
I'm the backend server
do servidor da web de back-end. Isso conclui a configuração da conectividade entre os servidores.
Concluir a manutenção
Com o software do servidor de front-end e back-end instalado e funcionando adequadamente, os servidores podem ser removidos do grupo de segurança de manutenção.
- Navegue para Grupos de segurança na seção Rede, em seguida, clique em vpc-secure-maintenance-sg.
- Selecione Recursos anexos.
- Clique em Editar interfaces, expanda e desmarque as interfaces vpc-pubpriv-frontend-vsi e vpc-pubpriv-backend-vsi.
- Salve a configuração.
- Acesse a instância de front-end novamente em
http://<floating-ip-address-of-the-frontend-vsi>
para confirmar se ele ainda está funcionando como esperado.
Depois que os servidores são removidos do grupo de manutenção, eles não podem mais ser acessados com ssh
. Eles somente permitirão o tráfego para seus servidores da web.
Neste tutorial, você implementou duas camadas de um aplicativo, um servidor de front-end visível da Internet pública e um servidor de back-end acessível somente dentro da VPC pelo servidor de front-end. Você configurou regras do grupo de segurança para assegurar que o tráfego seja permitido somente nas portas específicas requeridas pelo aplicativo.
Remover recursos
- No console de Infraestrutura de VPC, clique em IPs flutuantes em Rede, depois no endereço IP dos seus VSIs e, no menu de ação, selecione Liberar. Confirme se você deseja liberar o endereço IP.
- Em seguida, alterne para Instâncias de servidor virtual e clique no respectivo menu de ação de Parar e Excluir para suas instâncias.
- Quando os VSIs forem desligados, alterne para Sub-redes. Se a sub-rede tiver um gateway público conectado, clique no nome da sub-rede. Nos detalhes da sub-rede, desconecte o gateway público. As sub-redes sem o gateway público podem ser excluídas da página de visão geral. Exclua suas sub-redes.
- Depois que as sub-redes tiverem sido excluídas, alterne para a guia VPCs e exclua sua VPC.
Ao usar o console, pode ser necessário atualizar seu navegador para ver informações de status atualizadas depois de excluir um recurso.