2016-01-26 214 views
2

我正在寻找在s3上设置下载空间。亚马逊S3存储敏感文件

我正在向我的网站的授权用户发送电子邮件,以便他们可以点击链接并下载文件。

我想让这个文件完全隐藏在公共视图中,但是如果我这样做,我将如何在我的网站数据库上为特定用户分配/'标记'文件?

回答

2

AWS S3 Share an Object with Others

默认情况下所有的对象都是私有的。只有对象所有者拥有访问这些对象的权限 。但是,对象所有者可以通过使用他们自己的安全凭证创建预签名的URL 来选择性地与其他人共享对象,以授予时间限制的权限 以下载对象。

对于每个想要共享的对象,您需要生成一个预先签名的URL,并带有过期期限。这个URL然后可以发送给用户。这是how to generate a pre-signed URL using PHP的例子:

$cmd = $s3Client->getCommand('GetObject', [ 
    'Bucket' => 'my-bucket', 
    'Key' => 'testKey' 
]); 

$request = $s3Client->createPresignedRequest($cmd, '+20 minutes'); 

// Get the actual presigned-url 
$presignedUrl = (string) $request->getUri(); 

我究竟是如何将能够与特定 用户在我的网站的数据库指派/“标记”的文件?

如果要跟踪哪些文件已被授予对特定用户的访问权限,可以创建一个存储userId,存储桶/密钥,预签名URL和expirationDate的表。这将允许您和/或用户稍后参考URL。这些文件可以根据expirationDate从表格中老化。