lucassouzamatos / thor-demo

:zap: implementation for network classes
0 stars 0 forks source link

Considerações iniciais

Amazon

IAM Policies

ubuntu-free-tier-iam-policy

Motivação

Pelo ponto de vista da segurança e gerenciamento da conta na amazon, devemos atribuir contas diferentes, para propósitos diferentes. Assim temos:

Deployer

Este usuário tem permissão para criar instâncias. Ainda é possível definirmos que configurações a instância criada tem permissão para usar. As mais interessantes/importantes, por mim destacadas são:

Considerações

Montar o conjunto de regras de algumas linhas parece uma tarefa fácil, mas não foi para mim. Inicialmente fiz vários testes usando um simulador dessas regras, que a princípio parece bem mais rápido e eficiente do que ficar tentando executar as ações e ajustando a policy de acordo. Porém mesmo olhando todos os exemplos que encontrava na net, parecia que não funcionava certo, e o pior era que não tinha nenhum tipo de log ou mensagem do que estava bloqueando a ação, era um simples sim ou não. Então depois de horas errando acabei indo testar direto usando o programa da amazon, awscli que tenho uma breve experiência. Com ele quando um erro acontecia, uma mensagem criptografada aparecia como a mensagem de erro, e com as permissões certas, bastava decriptografa-la para acessar a mensagem de autorização negada. Com isso fui me guiando partindo sempre do princípio básico, fazer funcionar e testar o que bloqueia, demorei alguns minutos para encontrar o ponto certo, mas depois rapidamente as coisas se encaixaram e tudo funcionou perfeitamente. Amazon rocks!!

Coisas que não funcionaram bem comigo:

Instâncias

Ansible - Inicializando

Nesta fase serão criadas as permissões para a criação das intâncias, com segurança. Devido ao ótimo mecanismo de gerenciamento de permissões de acesso (IAM) é possível limitar a responsabilidade de cada usuário, minimizando os danos no caso de um incidente de invasão.

Após essa fase dois usuário serão criados. O primeiro usuário, criado pelo console da amazon (navegador), responsável por criar o outro usuário e configurar as suas permissões. Este último usuário terá a responsabilidade de criar instâncias free-tiers na amazon.

O primeiro será chamado de setup-manager, mas não é necessário usar o mesmo nome; e o último está sendo chamado de ubuntu-sim-deployer, este está hard-coded nos arquivos, sendo que para alterá-lo terá que alterar também nas dependências. Você foi avisado!.

setup-manager

Todos os passos serão executados no console da amazon.

Com o usuário criado e permissões setadas, podemos dar início a configuração inicial.

Docker

Não entrarei em detalhes sobre configuração/instalação do docker em diferentes plataformas, logo assumirei que este já esteja em perfeito funcionamento.

Ambiente de Deploy

AWS_ACCESS_KEY_ID=6bb1f81d42c1cd7ad1ee3536029e AWS_ACCESS_SECRET_KEY=n40Rk8gUHjDchQ70ncHpMMST97c7NiN6w21U9YiirPjR3TwDKhik9Qk+Ho AWS_DEFAULT_REGION=sa-east-1


- para nosso propósito, precisaremos de dois volumes sendo:
    - um volume `somente-leitura` tendo os arquivos do ansible
    - um volume para transferirmos as chaves da vpn para o host
o nome dos volumes criados na imagem docker é irrelevante, porém é aconselhado seguir o padrão:

**OBS**: adaptar `/caminho-diretório/instances` para o seu ambiente, tomando o cuidade de que seja um caminho absoluto. No windows deve ser algo como `C:\...`

```bash
$ docker run --rm -it --env-file aws.env -v /caminho-diretório/instances/ansible:/instances:ro -v /caminho-diretório/instances/vpnkeys:/vpnkeys ${IMAGE_ID}
bash-5.0# echo Alpine rocks!!!

Ao final do comando docker run ... devemos cair direto no bash da imagem.

Testando o ambiente

Com o bash aberto no container, você deve estar apto a usar tanto o ansible quanto awscli. Para ter certeza, execute estes testes:

Ao final deve mostrar a rede do endereço IP público.

Deve listar todos os usuários pertencentes a conta.