Pergunta

Eu tenho uma rota na minha configuração que diz isso para uma página, digamos /secure, é necessário fazer login (feito via authlogic).Um before_filter no meu controlador cuida disso.Funciona bem, a página e seus recursos têm acesso restrito - por meio do aplicativo.

O problema é que estamos usando o Amazon S3 para armazenamento neste aplicativo (baseado em refinerycms) implantado no heroku.Eu tenho um balde e funciona bem.

Porém, qualquer recurso inserido na parte segura da aplicação é diretamente acessível através do navegador.Em outras palavras, o /secure página contém itens como arquivos PDF.Embora através do aplicativo os recursos sejam protegidos, esses arquivos PDF podem ser acessados ​​de qualquer lugar na Internet (exemplo de URL): http://s3.amazonaws.com/my_bucket/images/1234/the_file_ Which_should_be_secure.pdf

Posso fazer controle de acesso refinado no S3?Preciso criar um novo bucket?Idealmente, gostaria de definir um sinalizador no meu recurso que o torne invisível na Internet - não sei.

Qualquer sugestão é bem-vinda.

P.S.openid.org tem um certificado SSL expirado, então precisei criar uma nova conta vazia porque não consegui fazer login

Foi útil?

Solução

A solução mais simples e fácil é apenas nomear seus ativos S3 com nomes de arquivos aleatórios e inúteis e, em seguida, expor apenas os URLs secretos às pessoas que deveriam ter acesso.

É assim que as fotos do Facebook e muitos outros sites funcionam (não há privacidade ou segurança além da obscuridade dos nomes de arquivos individuais).

Outras dicas

Você pode tentar o que é dito nesta página:

http://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads

Os específicos estão na seção "Não há mais streaming, tempo para um redirecionamento".

Resumo: O S3 possui quatro políticas de acesso enlatadas, usando a política de leitura autenticada S3 fornece uma maneira de gerar um URL autenticado para conteúdo privado que funciona apenas por um período especificado.

Na verdade, eu não fiz isso, então me avise se funciona para você. :-)

Se você usar o PaperClip, poderá restringir o acesso a objetos armazenados na Amazon S3, expirando o URL. (Se você não se importa de usar o URL expirando)

Aqui está o wiki do pensamento/clipe de papel no github

https://github.com/thoughtbot/paperclip/wiki/restricting-access-to-objects-stored-on-amazon-s3

Além disso, existem alguns links úteis na parte inferior dessa página que você pode não querer perder.

Talvez eu esteja confuso sobre o que você está tentando realizar, mas o S3 tem permissões de acesso que exigem que uma chave de criptografia esteja no URL que você fornece ao usuário.Ao usar a gem aws-s3, esta opção é habilitada por padrão.Portanto, você não deverá conseguir acessar os arquivos a menos que o usuário esteja usando o link com a chave criptografada incorporada nele.Isso exigiria que você se certificasse de que o arquivo está configurado apenas para acesso autorizado.

Mais informações podem ser encontradas http://amazon.rubyforge.org/ sobre a gema.Procure documentação relacionada ao controle de acesso (acho que "authenticated_read" é ​​o que você deseja).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top