【问题标题】:How to securely serve S3 files without using Signed URL?如何在不使用签名 URL 的情况下安全地提供 S3 文件?
【发布时间】:2018-11-03 10:39:30
【问题描述】:

我不是 AWS 专家,所以我希望有人能指出我正确的方向。

我有文件(特别是图像)存储在 S3 存储桶中,我需要在 KML 文件中显示这些图像,该文件将交付给客户端。图像 URL 将进入 HTML 标记。 (KML 允许将 HTML 代码作为其内容的一部分嵌入,仅供参考。)但是,这些图像不能公开访问(因为它是机密项目的一部分),只能使用特殊的 URL 访问。

我已经稍微探索了 Cloudfront 选项,据我了解,使用 Cloudfront 签名的 URL 将不起作用,因为它上面有一个过期日期,它不适用于客户端,因为最长过期日期是 7 天我听说。此外,甚至可以使用签名的 URL 作为 src 吗?

并且签名的 cookie 也不起作用,因为 Google 地球(打开 KML 文件)在呈现 HTML 代码时实际上并没有使用集成的网络浏览器。

我确实运行了一个 Python 脚本来生成此 KML 文件,因此我可以创建签名 URL,但不幸的是,我认为签名 URL 不会帮助解决上述问题。

关于如何解决这个问题有什么想法或建议吗?有没有办法让 S3 或 Cloudfront 文件 URL 包含一个不会过期的密钥?

谢谢!

【问题讨论】:

  • 您是否要求只授权一个第三方客户端安全地访问这些图像,并且 URL 没有任何到期日期?新客户在获得单独许可的情况下加入的可能性有多大(这可能)?

标签: amazon-s3 amazon-cloudfront


【解决方案1】:

CloudFront 可用于生成签名的 url,它允许您设置自己的到期日期,该日期可以延长至数年。

您还可以使用签名的 URL 分发私人内容,该 URL 是 有效期更长,可能长达数年。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-urls.html#private-content-overview-choosing-duration

根据 AWS,允许通过 CloudFront 访问 S3 中的资源而不是直接公开 S3 url 是一种很好的做法。您可以通读本文档以获取更多信息。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

最后是你问题的答案

甚至可以使用签名 URL 作为 a 的 src 吗?

是的,毕竟它只是一个带有一些额外字符的 url。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多