Olá, você precisaria configurar os acessos apenas pelas maquinas exemplo:
Criando EC2 AWS
- Após criar sua maquina EC2 crie uma chave para acesso ssh no seu servidor
- Você precisara criar um grupo de segurança e vincula-lo a maquina (eu geralmente coloco o nome de 'remote-access')
- Libere o acesso a porta 22 apenas e selecione na coluna source 'My IP'
- Lembre-se de criar um grupo de segurança default que permite acesso de qualquer pessoa pelas portas de acesso web tipo a 80 e 443 esse você pode definir como acesso publico
Isso irá fazer com que apenas o acesso a essa maquina possa ser feito da sua maquina com aquela chave ssh.
obs: Se precisa de mais performace crie uma AmazonLinux2, são um pouco mais chatas de configurar porem são melhores que as ubunto pois vem mais limpa.
Se precisar ter acesso a um banco de dados teria que autorizar seu IP na porta da base de dados tambem.
Configurando bases de dados
Caso precise configurar um RDS vincule tambem o grupo de segurança 'remote-access'. Porem irá ter que criar um grupo de acesso a base de dados tambem com o IP publico e privado das EC2 que irão ter acesso direto a base. Ai basta vincular esse outro grupo ao RDS tambem.
(Eu recomendo que configure o banco de dados direto em um ec2 caso saiba fazer, é melhor e mais barato. Tive que fazer isso recentemente porque o meu RDS deu uns bugs sabe Deus por que. E lembre-se sempre dos servidores de backup usando rsync em caso de dar algum pepino)
Criando S3
- Para criar o S3 é bem simples basta seguir o passo a passo e NÃO LIBERE O ACESSO PUBLICO
- Para fazer o acesso do S3 você deve criar uma conta IAM com as permissões predefinidas da aws apenas para S3.
- Use essa conta para acessar o S3 diretamente da aplicação
Configure as chaves no .env pelo amor de Deus não suba para o git kkkkkkkkkkkk
A partir dai é só usar a lib aws-sdk
Dica extra
Se a conta da aws for de um cliente crie uma sub-conta IAM com acesso total a conta da aws e não fale para ninguem. Se algo acontecer com a conta da AWS você consegue recupera-lá muito facil, porque as vezes o cliente pode tentar te sacanear. Então é bom previnir.
Porque configurar os grupos de segurança
Você provavelmente já entendeu mas em base é que os unicos acessos que irão circular pelas maquinas são aqueles que você permitir, ou seja isso vai dificultar bastante a vida de invasores, só é chato trocar o IP quando cai a conexão de internet.
E o melhor é que você irá servir os arquivos seguindo S3 -> aplicação -> cliente e não S3 -> cliente. Fazendo que os documentos fiquem mais seguros e não vazando os dados como algumas empresas fizeram tipo a Nubank kkkkk