0

我有一个项目,我将文件存储在服务器本身中。存储空间正在增加,所以我需要使用存储桶。我认为s3是要走的路。

问题是 pdf 文件很敏感,我不想将它们公开。我读到了一项名为 CloudFront 的服务,但后来也读到了 Laravel TemporaryUrl 的新功能。

据我了解,我不应该只使用 s3,还应该使用 TemporaryUrl。我是否也需要使用 CloudFront?那么s3 -> CloudFront -> TemporaryUrl?或者 TemporaryUrl 的目的是在两者之间消除 CloudFront?

那么使用 TemporaryUrl 方法就足够了吗?

// For saving the file:
Storage::put('file.jpg', $contents, 'private');

// For retrieving:
if ($user->has_permission) {

   $url = Storage::disk('s3')->temporaryUrl(
      'file1.jpg', Carbon::now()->addMinutes(5)
   );
}

我很困惑,真的找不到关于这个主题的任何演练。那么我应该如何使用 Laravel 5.6 存储和提供敏感数据呢?我很高兴澄清

4

1 回答 1

1

你可以CloudFront和 laravelTemporaryUrl一起使用。为此,您只需要告诉 laravel s3 驱动程序使用CloudFronturl 作为config/filesystem.php. 像这样

's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
]

现在在您的文件中像这样.env定义您的网址clouldFront

AWS_ENDPOINT="https://mycloud.cloudfront.net"

现在,当您使用 laravel 时,TemporaryUrl它会为您提供 cloudFront 网址。

编辑:(评论后)

我是否需要将 CloudFront 用于敏感数据

CloudFront 用于内容交付网络 (CDN)。因此,它与安全性无关,它使用 S3 存储桶作为源文件,并根据其配置从那里获取服务器文件。

S3足够安全吗?

S3有足够的文件权限系统可以保护你的文件,只要正确配置即可。您可以将文件私下存储在 S3 中,然后使用 laravel TemporaryUrl。它在内部所做的只是创建一个带有到期时间的 AWS 签名 URL。所以,是的,你可以使用它。如果您需要加快文件传输速度,请创建CloudFront并将其用作端点

于 2018-07-30T07:28:11.000 回答