Pular para o conteúdo principal

22 publicações com a etiqueta "AWS"

Ver todas as etiquetas

Criando uma VPC na AWS

· 10 min para ler
Ludmila Silva
Cloud & DevOps Engineer

Um dos grandes benefícios da nuvem é criar e gerenciar com poucos cliques (ou poucos comand0s) diversos recursos que no ambiente on premises levariam um bom tempo para serem provisionados. Isso inclui os serviços de redes, no qual recebem o nome de Amazon VPC - Virtual Private Cloud - na AWS.

A Amazon VPC possibilita criar e administrar uma rede privada na AWS. Funcionando de modo semelhante a uma infraestrutura de rede convencional, porém com as vantagens de escalabilidade oferecidas pela nuvem. Com isso, temos o controle sobre diversas configurações do ambiente de rede, incluindo definição de intervalo de IPs, grupos de segurança, sub-redes, gateways e outras configurações.

Nesse tutorial, vamos aprender a como criar uma VPC com uma arquitetura básica, entendendo o papel de cada componente da rede.

Exemplo de uma arquitetura de VPC

Portanto, vamos criar uma VPC com:

  • 2 sub-redes (uma pública e uma privada)
  • Internet Gateway
  • Tabelas de roteamento (route tables)
  • Security Groups
  • Network ACL
  • E testar as conexões com 2 instâncias

#1 Criando a VPC

Para criar a VPC, basta acessar a sua conta no console da AWS e buscar por VPC no menu de pesquisa, conforme imagem:

Em seguida, no painel da VPC, você vai clicar em "Criar VPC"

Vamos criar uma VPC com as seguintes configurações:

  • Recursos a serem criados: selecionar "Somente VPC"
  • Tag de nome: main-vpc
  • Bloco CIDR Ipv4:  selecionar "Entrada manual de IPv4"
  • CIDR IPv4: 10.0.0.0/16

Por fim, clique em "Criar VPC".

Pronto! Nossa VPC está criada.

Um ponto interessante é que ao criar a VPC, automaticamente são criados uma Tabela de rotas, um Security Group e uma Network ACL. Nós iremos configurar esses serviços logo adiante. Mas primeiro, precisamos criar as sub-redes pública e privada.

#2 Criando as sub-redes

As sub-redes ou subnets são como um "pedaço" de uma rede, no qual podemos organizar e separar por grupos ou funções. Por exemplo, no ambiente on premises é comum termos a sub-rede do RH, do Financeiro, do Comercial etc.

Quando falamos em nuvem, é nas sub-redes que os recursos, tais como uma instância EC2 ou um banco de dados RDS serão alocados. Cada sub-rede recebe um range de IP derivado da VPC.

Para criar as sub-redes na AWS, vamos seguir o caminho no painel da VPC em: VPC -> Sub-redes -> e clicar em "Criar sub-rede".

Em VPC ID, vamos selecionar a VPC criada anteriormente (no meu caso, é a main-vpc).

Vamos inserir as seguintes configurações:

  • Nome: public-subnet
  • Zona de disponibilidade:
  • Bloco CIDR IPv4 da VPC: selecione o "10.0.0.0/16"
  • Bloco CIDR IPv4 da sub-rede: 10.0.1.0/24
  • Tags: public-subnet

Pronto! Já temos a nossa sub-rede pública criada. Agora, vamos fazer o mesmo processo para a sub-rede privada. Essas são as configurações:

  • Nome: private-subnet
  • Zona de disponibilidade:
  • Bloco CIDR IPv4 da VPC: selecione o "10.0.0.0/16"
  • Bloco CIDR IPv4 da sub-rede: 10.0.2.0/24
  • Bloco CIDR da VPC IPv6: selecione o bloco de IPv6 que aparecer
  • Tags: private-subnet

No menu das Sub-redes, é possível ver as duas sub-redes que criamos:

#2.1 Criar um internet gateway

Apesar de termos criado as nossas sub-redes, os recursos que forem provisionados nelas não terão acesso à internet. Isso quer dizer que caso você precise atualizar os pacotes de uma instância Linux, por exemplo, você não vai conseguir.

Na AWS, o componente que vai permitir o acesso externo é o Internet Gateway. Para criar, você vai seguir o caminho: VPC -> Gateways da Internet -> Criar gateway da Internet

Como tag de nome, optei por usar "public-internet-gateway". Você só precisa nomear o seu gateway e clicar em "Criar".

Agora, vamos associar o gateway com a nossa VPC. Para isso, selecione gateway -> clique em Ações -> clique em Associar a VPC -> e selecione a nossa VPC criada no primeiro passo.

#3 Criando as tabelas de rotas

A tabela de rotas (route table) possui um conjunto de regras que direcionam o tráfego de uma sub-rede ou gateway. Dentro da tabela de rotas, há um conjunto de regras chamado rotas, que vai determinar esse tráfego em termos de IP de destino.

Para criar a nossa tabela de rotas, vá em VPC -> Tabela de rotas -> Criar tabela de rotas. Vamos criar uma tabela de rotas para a sub-rede pública e outra para a privada.

Os nomes das tabelas criadas foram: public-route-table e private-route-table.

#3.1. Criar as rotas

Mesmo criando as tabelas, ainda não temos nenhuma rota efetivamente criada. É através da tabela de rotas que a sub-rede pode ter acesso externo à internet por meio do Internet Gateway, então é isso que vamos fazer agora.

Selecione a tabela de rotas pública, clique no botão "Ações" e em "Editar rotas".

Em seguida, clique em: Adicionar rota -> selecione o Destino como: 0.0.0.0./0 -> e em "Alvo", escolha "Gateway da internet" e selecione o gateway criado anteriormente.

Feito isso, basta salvar as alterações.

Por fim, precisamos associar a tabela de rotas com a sub-rede pública. Selecione a tabela pública -> Editar associações de sub-rede

Escolha a sub-rede pública e clique em "Salvar associações".

Faça o mesmo para a tabela privada, associando-a com a sub-rede privada.

#4 Criando os grupos de segurança

Na AWS, os Grupos de Segurança (Security Groups, ou SGs) atuam como um firewall em nível de instâncias, controlando o tráfego de entrada e saída de uma EC2, por exemplo.

Para criar os Grupos de segurança, vá em VPC -> Segurança -> Grupos de segurança -> Criar grupo de segurança

Na imagem abaixo, estamos criando o SG para os recursos da sub-rede pública:

#4.1 Regras de entrada

Ainda na criação do Grupo de segurança, na mesma página, precisamos inserir as regras de entrada. Ou seja, as portas que iremos utilizar para a comunicação com a instância EC2.

No grupo público, vamos abrir as portas 22,80,443 (SSH, HTTP e HTTPS), conforme imagem:

Salve as configurações. Em seguida, crie o Grupo de segurança para o privado, abrindo somente as portas 22 e 3306 (SSH e MySQL).

#5 Criando as NACLs

Enquanto os Grupos de segurança atuam como firewall para instâncias, as Network Access Control Lists (NACLs) controlam o tráfego de entrada e saída de uma sub-rede. Ou seja, atuam como um firewall a nível de sub-rede, permitindo ou negando acesso à determinados recursos naquela sub-rede.

Para criar a NACL, vá em VPC -> Segurança -> ACLs da rede -> Criar Network ACL. Crie a NACL escolhendo um nome, selecionando a VPC e criando uma tag.

Depois de criar a NACL, precisamos configurar as regras de entrada e saída. Isto porque por padrão, quando criamos uma NACL, o tráfego de entrada e saída está bloqueado (deny).

Então, selecione a NACL pública -> clique em Ações -> Editar regras de entrada

Uma boa prática é numerar as regras, seguindo uma ordem de menor para maior e deixado "espaços" entre estas regras. Ou seja, é preferencial numerá-las como 100, 200, 300 do que 101, 102, 103. Isso torna mais fácil adicionar uma nova regra quando for necessário e sem precisar renumerar tudo.

Vamos criar as seguintes regras:

  • Regra 100 - porta 80 - Origem 0.0.0.0/0 - Permitir
  • Regra 200 - porta 443 -  Origem 0.0.0.0/0 - Permitir
  • Regra 300 - porta 22 - Origem 0.0.0.0/0 - Permitir

E salve as alterações.

Para o tráfego de saída:

  • Regra 100 - porta 80 - Origem 0.0.0.0/0 - Permitir
  • Regra 200 - porta 443 -  Origem 0.0.0.0/0 - Permitir
  • Regra 300 - porta 22 - Origem 0.0.0.0/0 - Permitir

Por fim, associe a NACL com a sub-rede pública.

Associar com as sub-redes

#6 Provisionando as instâncias

A fim de simular um ambiente real, vamos criar 2 instâncias. Uma será provisionada dentro da sub-rede pública e a outra na privada. Esse tipo de configuração é comum em arquiteturas onde temos um webserver "aberto" externamente e um banco de dados na rede privada, o qual somente tem acesso pela aplicação.

#6.1 Criando as instâncias

Vá em Ec2 -> Instâncias -> Executar instâncias

Coloque as seguintes configurações para a nossa primeira instância:

  • Nome: webserver
  • AMI: Ubuntu Server 22.04 LTS
  • Tipo de Instância: t2.micro
  • Par de chaves: Criar novo par de chaves - baixe e salve o par de chaves
  • Configurações de rede - clicar em "Editar"
  • VPC: main-vpc
  • Sub-rede: public-subnet
  • Atribuir IP público automaticamente: Desabilitar
  • Atribuir IP IPv6 automaticamente: Habilitar
  • Grupo de segurança: PublicSecGroup
  • Rolar até o fim da página e clicar em "Executar instância"

Crie a segunda instância:

  • Nome: database
  • AMI: Ubuntu Server 22.04 LTS
  • Tipo de Instância: t2.micro
  • Par de chaves: prosseguir sem par de chaves
  • Configurações de rede - clicar em "Editar"
  • VPC: main-vpc
  • Sub-rede: private-subnet
  • Grupo de segurança: PrivateSecGroup
  • Rolar até o fim da página e clicar em "Executar instância"

#6.2 Conectando na instância pública

No resumo da instância webserver, clique em "Conectar".

Selecione a aba "Conexão de instância do EC2" -> "Conectar-se usando o endpoint do EC2 Instance Connect" -> "Criar endpoint"

Nas configurações, insira um nome e escolha a opção para criar um "Endpoint do EC2 Instance Connect"

Além disso, na mesma página você deve selecionar a VPC criada, o grupo de segurança público e a sub-rede pública. Clique em "Criar endpoint".

Retorne para a instância e clique em "Conectar" -> "Conexão de instância do EC2" -> "Conectar-se usando o endpoint do EC2 Instance Connect" -> e selecione o endpoint criado. Por fim, clique no botão conectar.

Se tudo der certo, uma nova aba será aberta no seu navegador e você vai receber essa mensagem aqui:

Dentro da instância pública podemos testar a conexão com a instância privada (o database). Pegue o IP privado da segunda instância e use o comando telnet para verificar a conexão na porta 22 da instância pública para a privada, conforme imagem:

💡

OBS: Nesse tutorial, optou-se por não criar o NAT Gateway, que é um componente que permite acesso externo a uma instância que está dentro de uma sub-rede privada. Dessa forma, a instância conseguem se conectar à serviços externos para atualizar pacotes, por exemplo, mas os serviços externos não conseguem iniciar uma conexão com a instância.

⚠️

OBS²: Originalmente, este tutorial foi pensado e escrito usando o IPv4 público com acesso via SSH. No entanto, com as novas políticas de cobrança da AWS, optou-se por usar o EC2 Instance Connect ao invés do SSH padrão.

[ATUALIZAÇÃO] Maaaaas... Até o momento foi liberado o uso de IPs públicos para a EC2 dentro do Free Tier, durante 12 meses.

Ufa! Agora sim terminamos. Espero que esse tutorial possa te ajudar nos seus estudos. Ah, e não se esqueça de limpar o seu ambiente.

Ler artigo

Criando um Bucket S3 na AWS

· 7 min para ler
Ludmila Silva
Cloud & DevOps Engineer

O que é o Amazon S3?

O Amazon Simple Storage Service, conhecido popularmente como "Amazon S3", é um serviço de armazenamento de objetos (ou blobs) da AWS que atua com alta disponibilidade, escalabilidade e baixa latência - segundo a AWS, o S3 possui 99,9999999% de resiliência de dados!

Mas o que seriam esses "objetos"? Os objetos no Amazon S3 podem ser diversos tipos de arquivos: imagens, pdfs, vídeos, áudios, entre outros. Ele também possibilita hospedar um website estático.

No AWS S3, os objetos são armazenados em buckets ("baldes"), que funcionam como se fossem containers. Dentro de um bucket S3, cada objeto é identificado por uma chave e ID de versão.

Portanto, o S3 pode ser usado para uma diversidade de fins: backup e restauração, arquivamento, data lakes, sites, e-commerces, e por aí vai.

No S3, você também pode escolher a região a fim de otimizar a latência, economizar ou por questões de conformidade.

Ideia do tutorial

Este tutorial tem o intuito de apresentar o S3 e desenvolver algumas habilidades básicas em relação ao seu uso, com os seguintes objetivos:

  • Criar um Bucket S3 e se familiarizar com a interface do serviço de armazenamento de objetos;
  • Subir o conteúdo (upload) e administrar o acesso através de policies.

Passo a Passo

Criando o Bucket S3

  1. Você deve acessar a console AWS e fazer o login - caso não tenha uma conta, é o momento de criar uma e fazer uso dos serviços free tier.

  2. Após logar na console, pesquise pelo "S3" na barra de pesquisa:

  1. Clique em S3 e em seguida, clique em "Criar bucket":

  1. Agora é o momento de configurar os dados do Bucket S3, então siga os seguintes passos:

Configuração geral

  • Nome

 -  Aqui você deve escolher um nome único e global, ou seja, não pode existir na AWS um Bucket com o mesmo nome que o seu. Com 3 a 63 caracteres, podendo ter letras minúsculas, números, ponto (.) e hífen (-).

  • Região da AWS: eu escolhi "Leste dos EUA (Norte da Virgínia) us-east-1"

Propriedade de objeto

  • ACLs desabilitadas (recomendado)

Configurações de bloqueio do acesso público deste bucket

  • Manter a caixa selecionada "Bloquear todo o acesso público"

Versionamento de bucket

  • Manter em "Desativar"

Criptografia padrão

  • Criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (SSE-S3)

Chave do bucket

  • "Ativar"

Em Configurações Avançadas, não é necessário configurarmos nada no momento. Então, somente desça até a parte inferior da página e clique em "Criar bucket". E pronto! Seu Bucket S3 está criado.

Fazendo o upload de objetos no Bucket

  1. Com o bucket criado, clique nele para acessá-lo. Em seguida, clique em "Carregar" para enviar uma imagem simples (pode ser qualquer imagem que você tiver disponível):

  1. Clique em "Adicionar arquivos" e selecione a imagem desejada. E em seguida clique em "Carregar".

Se tudo estiver ocorrido bem, você vai receber uma mensagem de upload bem-sucedido, conforme imagem:

Se o upload deu certo, então clique em "Fechar".

Acessando a imagem

  1. Agora, selecione a imagem e clique em "Abrir":

A imagem vai carregar no seu navegador (a minha foi essa aqui):

Tudo certo, não? Então, vamos para mais um teste.

Acessar com a URL de objeto

  1. Selecione novamente a imagem e clique no botão "copiar url". Em seguida, abra uma nova aba no seu navegador e cole a URL

E..... Voilá! Não conseguimos acessar a imagem dessa vez. Nossa permissão foi negada:

Isso ocorre pois há um impedimento aqui: por questões de segurança padrão, não podemos acessar o arquivo sem estarmos logados na conta da AWS. Caso fosse um arquivo que por algum motivo necessitasse de acesso externo público, é necessário então liberar esse acesso.

Habilitar o acesso público para a imagem

  1. O primeiro passo para liberarmos o acesso público da nossa imagem é ir em "Permissões" no Bucket:

  1. Em Bloquear acesso público, clique em "Editar":

  1.  E desmarque a caixa "Bloquear todo o acesso público" e depois clique em "Salvar alterações":

A AWS vai pedir para confirmar essa modificação - já que por não ser uma boa prática de segurança, não é recomendável liberar o acesso público para o seu Bucket. Mas estamos fazendo isso apenas para fins didáticos:

Ótimo! Agora você vai conseguir acessar a imagem pela URL, certo? Não. Ainda não. Falta um passo: criar uma política que permita o acesso.

Criar política de acesso

  1. Ainda na aba "Permissões", desça até a opção "Editar política de bucket" e clique em "Editar":

  1. Primeiro, copie a ARN do bucket (que é o identificador único do recurso). Em seguida, clique no botão "Gerenciador de políticas":

  1. Se o seu navegador te direcionou para uma página estranha com a logo da AWS, não se assuste! Trata-se do AWS Policy Generator, um gerador de políticas que permite que criar as nossas políticas de acesso aos recursos provisionados na AWS.

Então, vamos lá:

  • Em Step 1, selecione a opção "S3 Bucket Policy"

Em Step 2, use as seguintes configurações:

  • Effect: marque "Allow"
  • Principal: coloque apenas o símbolo do asterisco "*" (sem aspas)
  • Actions: procure pela opção "GetObject" e selecione-a
  • Amazon Resource name (ARN): cole a ARN do bucket (se não lembra onde conseguir, volte no passo 14 deste tutorial) e no final da ARN acrescente /*

Clique em "Add Statement"

  1. No Step 3, clique em "Generate Policy" e copie o JSON criado. Cuidado para não copiar caracteres de espaço em branco sem querer.

  1. Volte na AWS, na aba "Política do bucket", e cole o JSON

  1. Role até abaixo e clique em "Salvar alterações"

Acessando a imagem pela URL

  1. Clique na aba "Objetos" e selecione a imagem. Em seguida, copie a URL

  1. Cole o link em uma nova aba no navegador e... Pronto! Se tudo deu certo, você e qualquer outra pessoa conseguem acessar a imagem. Que beleza!

Excluindo o Bucket

  1. Depois desse sucesso, é hora de limpar o ambiente. Então, selecione a sua imagem e clique no botão "Excluir". A console perguntará se você quer excluir permanentemente o objeto, por isso confirme a exclusão.

  2. Volte para a opção Buckets na console. Selecione o seu bucket e clique em "Excluir". Confirme a exclusão.

E pronto! Você acaba de criar, gerenciar e excluir o seu bucket S3. Além disso, você aprendeu como gerenciar o acesso ao bucket e aos objetos armazenados nele.

Documentação

Por se tratar de um tutorial introdutório, não entramos em assuntos como encriptação, versionamento, classes de armazenamento, ciclo de vida, entre outros.

Para ir se habituando e conhecendo mais sobre o Amazon S3, deixo alguns links de recomendação e documentação abaixo.

Bons estudos! 👋

Ler artigo