使用Carrierwave加密/解密文件并在S3中存储(Rails)

问题描述:

我需要能够在将文件存储在S3上之前对其进行加密,然后在访问文件时对其进行解密。这些文件将是图像,文档,PDF等。使用Carrierwave加密/解密文件并在S3中存储(Rails)

我使用Carrierwave处理文件上传和存储(这是与Ruby on Rails)。我将它们存储在Amazon S3中。

有没有人这样做,或有任何想法如何实现?

谢谢。

亚马逊现在发布的功能可让您在S3中自动加密/解密文件。自己做这件事的必要性已经不存在了。细节在这里http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?UsingEncryption.html

+2

亚马逊上证所不是大多数人寻求加密的东西。你想在你的服务器被黑客攻击时保护客户文件。当有人获得您的S3凭证的访问权时,亚马逊SSE不起作用。 – m33lky

+1

我认为这是我回答自己的问题时第一次被低估。这确实解决了我的问题。 –

+1

我假设您使用了“亚马逊服务器端加密”,因为如果您要使用亚马逊客户端加密,“需要”混淆键不会奇迹般地消失。我相信加密上传文件的目的是为了最大限度地减少黑客入侵服务器的人可访问的数据量。亚马逊上证所在这里并没有真正的帮助。 – m33lky

要处理加密,您应该考虑实现处理器。如果您使用的是其他处理器,您可能需要考虑扩展Carrierwave gem并添加处理器订购机制,以确保最后进行加密。

对于解密,您可以覆盖现有访问者以使解密变为透明,或者添加一个新方法,该方法返回解密文件并使用该方法代替访问者。后一种方法可能对上游变化更有弹性。

+0

我不希望使用任何其他处理器的任何想法是什么处理器,我可以使用加密? –

我知道这个职位是几个月大,但如果你仍然在寻找答案,请检查我写的carrierwave_securefile宝石。它仍然是新的,可能在其他设置上有点bug,但它在上传之前使用Crypt19进行Blowfish加密。

http://github.com/dougc84/carrierwave_securefile

+0

谢谢我会检查出来,但是,自从Amazon发布了他们自己的S3加密功能后,我不认为我需要再处理它了。 –