alguém pode invadir meu s3 com "AWS-cognito-identity-poolID" que é codificado?

8

Primeiro, codifiquei meus aws "accessKey" e "securityKey" no arquivo JS do lado do cliente, mas era muito inseguro, então li sobre "aws-cognito" e implementei o novo JS da seguinte maneira:

Ainda estou confuso com uma coisa que alguém pode invadir no meu s3 com "AWS-cognito-identity-poolID" que é codificado? Ou quaisquer outras etapas de segurança que devo tomar ?

Obrigado
Jaikey

Jaikey Sarraf
fonte
Parece que você está usando acesso sem autenticação, o que significa que qualquer pessoa com esse ID de identidade pode fazer upload.
Ninad Gaikwad 12/11/19
E como alguém pode fazer upload com o ID de identidade?
Jaikey Sarraf 12/11/19
Se você o configurou para permitir acesso não autêntico, qualquer pessoa pode usá-lo. Esse é o ponto do não-verdade.
Ninad Gaikwad 12/11/19

Respostas:

3

Definição de Hack

Não sei ao certo o que significa pirataria no contexto da sua pergunta.
Suponho que você realmente queira dizer "que alguém pode fazer algo diferente do que fazer upload de um arquivo", que inclui excluir ou acessar objetos dentro do seu bucket.

Sua solução

Como o Ninad já mencionado acima, você pode usar sua abordagem atual ativando "Habilitar acesso a identidades não autenticadas" [1]. Você precisará criar duas funções, uma delas para "usuários não autenticados". Você pode conceder permissões PutObject a essa função no bucket S3. Isso permitiria que todos os que visitam sua página carregassem objetos no bloco S3. Eu acho que é isso que você pretende e é bom do ponto de vista da segurança, já que o IdentityPoolId é um valor público (ou seja, não é confidencial).

Outra solução

Eu acho que você não precisa usar o Amazon Cognito para conseguir o que deseja. Provavelmente é suficiente adicionar uma política de bucket ao S3 que conceda permissão para PutObject a todos.

Isso é seguro?

No entanto, eu não recomendaria habilitar o acesso direto de gravação pública ao seu bucket S3.
Se alguém abusar do seu site enviando spam para o seu formulário de upload, você incorrerá em cobranças S3 para operações de venda e armazenamento de dados.

Seria uma abordagem melhor enviar os dados pelo Amazon CloudFront e aplicar um WAF com regras baseadas em taxa [2] ou implementar um serviço de limitação de taxa personalizado antes do upload do S3. Isso garantiria que você possa reagir adequadamente a atividades maliciosas.

Referências

[1] https://docs.aws.amazon.com/cognito/latest/developerguide/identity-pools.html
[2] https://aws.amazon.com/about-aws/whats-new/2019/08 / regras com base no limite mais baixo para aws-waf-waf /

Martin Löper
fonte
Olá, obrigado, como eu já desabilitei o acesso público direto de leitura / gravação ao bucket do S3. Também estamos usando WAF. mas quero permitir que qualquer usuário faça o upload do seu currículo, também exclua ou mude para o S3, mas sem o registro no meu site. Agora, crio uma função do IAM e criei uma credencial de acesso visível no JS do cliente, o que era inseguro porque qualquer hacker pode usar essa credencial na AWS-CLI e execute todas as ações: ler, escrever, excluir. Então, usando o AWS-cognito, também ativamos o CORS no s3, que é específico apenas para o meu domínio, e aqui começa minha pergunta: estou seguro agora?
Jaikey Sarraf
2

Sim, o bucket s3 é seguro se você estiver usando o "AWS-Cognito-Identity-Pool" no lado do cliente, também habilite o CORS que permite ações somente de um domínio específico que garante que, se alguém tentar fazer upload direto ou listar bucket, obterá "access- negado ".

Jaikey Sarraf
fonte
Sim, é verdade, a segurança é apenas uma satisfação real, fizemos o melhor que podemos. Eu também tentei pessoalmente colocando credencial em outras AWS script, mas só funcionou quando eu carregado-los ao domínio permitido senão ele não funciona
Jaikey Sarraf
0

Verifique também se você definiu as credenciais de r / w do arquivo do acesso codificado para que ele possa ser lido apenas pelo nó local e por mais ninguém. By the way, a resposta é sempre um sim, é apenas uma questão de quanto alguém está disposto a se envolver em "hackear". Siga o que as pessoas disseram aqui e você estará seguro.

Damir Olejar
fonte