TERRAFORM SERIES: LAB … Working on AWS: (redes) VPCs e SECURITY-GROUPS

Aviso de SPOILER: Caso apresente dores de cabeça e uma forte sensação de Déjà Vu, durante a leitura deste POST, significa que és um veterano e portanto me acompanha há algum tempo … Quando o BLOG ainda era intitulado de automatesmachines.org … E com toda certeza, também é de seu conhecimento que fizemos uma série “introdutória” a nuvem da AWS. Pois bem, do contrário, ou na ausência desses sintomas, implica dizer que você é novo por aqui e sendo assim, uma visita ao presente link abaixo talvez não seja uma má ideia:

https://vicrlda.com.br/index.php/aws/

Recados dados, fique comigo para mais um artigo sobre esta incrível ferramenta chamada TERRAFORM ❤️

>_ VPC : ATRIBUINDO UMA REDE

Uma vez imerso na AWS, a nomenclatura correta para rede de computador é simplesmente VPC. E sim, aqueles mais adiantados no tema sabem muito bem que esse tópico resultaria perfeitamente numa série à parte. Na verdade, diversos serviços da AWS dariam excelentes séries aqui no BLOG. E sim, sim, tudo isso está em meus planos 🙃 Mas voltando, sempre que criamos uma máquina EC2 a mesma será relacionada automaticamente a uma regra de acesso, sendo esta última apresentada na forma de grupo, e que na prática trata-se de uma VPC. Ou rede de computador, como é o caso da AWS. A cada nova VPC que criamos, um grupo padrão já é vinculado a mesma nativamente, e ainda assim, bem antes a própria AWS disponibiliza uma rede padrão pré-configurada no momento em que iniciamos nossa conta na web console

Para consultar, modificar e até mesmo criar novas redes, acesse o menu correspondente via barra de pesquisas, digitando ‘vpc’ (sem as aspas), “favoritando-o” em seguida (para salvá-lo e fixá-lo na HOME), e por fim, clicando na opção VIRTUAL PRIVATE CLOUD > YOUR VPCs localizada na barra lateral esquerda:

Figura 01.

Ou se preferir, use a opção REDE E SEGURANÇA no menu EC2 para instâncias:

PAINEL EC2 > REDE E SEGURANÇA > SECURITY GROUPS

Figura 02.

Supondo que sejam máquinas para três desenvolvedores diferentes, a ideia é logicamente permitir o acesso SSH de cada um e garantir um nível mínimo de comunicação entre elas. Para isso precisamos recorrer a documentação oficial vista no próprio site Procure pelos provedores (em inglês, providers), depois AWS, em seguida recursos (eu sei, são muitos!), e finalmente VPC resources, na seção aws_security_group O caminho percorrido encontra-se aqui Feito isso, abra sua IDE/editor com o código dos textos anteriores. Copie o exemplo da página e cole o mesmo no VSCode. Lembrando: você não irá apagar nada do fonte passado e sim acrescentar tais linhas ao final dele.

resource "aws_security_group" "allow_tls" {
  name        = "allow_tls"
  description = "Allow TLS inbound traffic"
  vpc_id      = aws_vpc.main.id

  ingress {
    description      = "TLS from VPC"
    from_port        = 443
    to_port          = 443
    protocol         = "tcp"
    cidr_blocks      = [aws_vpc.main.cidr_block]
    ipv6_cidr_blocks = [aws_vpc.main.ipv6_cidr_block]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
    ipv6_cidr_blocks = ["::/0"]
  }

  tags = {
    Name = "allow_tls"
  }
}

A seguir, editando e explicando parte por parte desta nova seção. Trechos destacados em negrito são as alterações propostas por mim:

resource "aws_security_group" "ssh-access" {
  name        = "ssh-access"
  description = "Allow SSH inbound traffic"

Nada de extraordinário aqui, apenas nomeando o recurso (neste caso, grupo) de acesso-ssh com uma breve descrição.

ingress {
    description      = "SSH from VPC"
    from_port        = 22
    to_port          = 22
    protocol         = "tcp"

Modificando a porta atual para 22 por se tratar de tráfego SSH que, assim como o TLS, também é um protocolo TCP, permanecendo esse último item inalterado.

cidr_blocks      = ["187.19.208.26/32"]

Pausa para aquele momento “boas práticas de segurança” 😁 dado é informação, informação é poder, e poder é dinheiro, então nada mais justo do que restringir o acesso a essa máquina. Em outras palavras, a gestão aqui é muito importante pois o roubo, furto ou quebra do mesmo além de ocasionar perdas de capital, também gera ruídos na relação (empresa/fornecedor) <> (cliente/usuário), apresentando-se quase sempre na forma de perda de confiança. Defina aqui somente os IPs autorizados a acessar determinada máquina. Para descobrir qual é o seu, visite https://www.whatismyip.com/

Figura 03.

Encerrando, agora identificamos todo esse bloco de configurações com a TAG acesso-ssh

tags = {
    Name = "ssh-access"

Salve o conteúdo, dê o COMMIT no repositório, e vá para a console do VSCode

Figura 04.

TERMINAL > NEW TERMINAL

Última volta, a poucos metros da bandeira final, comece a executar os comandos do TERRAFORM propriamente dito:

terraform plan

Aqui ele apenas mostrará as modificações propostas, sem aplicar nada no ambiente. Isso é ótimo, principalmente em meios tão críticos e sensíveis como é PRODUÇÃO, por exemplo.

Figura 05.
Figura 06.
terraform apply

Imediatamente após o plan, mova-se para o apply

Figura 07.

E veja a confirmação na web console:

Figura 08.

É ISSO AÍ 😏 VOCÊ CONSEGUIU

1 Comment

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.