Hospede um Site Estático com Segurança ¶
- Criador: Ricardo Mourão Rodrigues Filho
- Ano de Criação: 2023
- Email: ricardomrf@al.insper.edu.br
Introdução¶
A ideia principal dessa documentação é apresentar uma forma adequada de como hospedar um site estático no bucket S3 da AWS. Além disso, você precisa trazer segurança para o seu site, portanto, ensinamos o usuário a criar dois recursos importantes: API Gateway (Novo endpoint do seu site) e WAF(Verifica se as requisições mandadas são maliciosas). Analise a arquitetura abaixo para um melhor entendimento:
Observe cada uma das etapas abaixo:
- O usuário bate no endpoint da API Gateway. (O bucket S3 gera seu próprio endpoint, entretanto, a ideia é que o cliente não tenha contato direto por ele)
- API Gateway identifica a requisição.
- API Gateway manda a solicitação para o filtro do WAF.
- Quando chega ao filtro o WAF verifica as regras do owasp top ten, informando se a requisação é ou não é maliciosa.
- Passando pelo filtro, o usuário tem acesso ao bucket S3.
- Consequentemente, ele retorna o site hospedado com a devida segurança.
Observe que uma das ferramentas apontadas é uso do terraform, na qual ele é responsável em gerar a infraestrutura do nosso projeto. Sendo assim, tenha todos dos pré-requisitos e siga as etapas abaixo para hospedar seu site estático com segurança.
Pré-Requisitos¶
-
Conta na AWS com usuário IAM com permissões de Administrador.
-
Baixar terraform na sua máquina.
Funcionalidades¶
Esta aplicação buscou escalabilidade em todas as implementações. Logo, caso o usuário queira apenas etapas específicas, seguem as possíveis metodologias:
- Hospedagem de Site Estático (Entrega Completa C+)
- API Gateway como Proxy para Site Estático (Entrega Completa B)
- Proteção da Aplicação com WAF (Owasp Top Ten) (Entrega Completa A+)
Warning
É fundamental seguir a etapa 3 acima (Proteção da Aplicação com WAF (Owasp Top Ten)), para garantir todas as funcionalidades apresentadas na introdução.
Implementação¶
No vídeo abaixo é possível ver a implementação do projeto completo.