繁体   English   中英

如何使用自定义 CNAME 隐藏 AWS S3 存储桶 URL

[英]How to hide AWS S3 Bucket URL with custom CNAME

我想将 CDN 连接到 AWS S3 存储桶,但AWS 文档指示存储桶名称必须与 CNAME 相同。 因此,很容易被别人猜到真实的s3bucket url。

例如,

- My domain: example.com  
- My S3 Bucket name: image.example.com  
- My CDN CNAME(image.example.com) will point to image.example.com.s3.amazonaws.com

之后,人们可以访问 CDN URL -> http://image.example.com以从我的 S3 Bucket 中获取资源。 但是,在此限制下,人们可以轻松地从 CNAME (CNAME + s3.amazonaws.com) 猜测我的真实 S3 存储桶 URL。

所以,我的问题是如何隐藏我真正的 s3 存储桶 url? 因为我不想将我的真实 S3 url 暴露给任何人以防止任何攻击。

我不确定我是否理解您的要求或您想要做什么 [隐藏您的存储桶并没有真正帮助任何东西],但是我将尝试回答您关于“隐藏”您的存储桶名称的问题。 在回答之前,我想问两个问题:

  • 为什么要隐藏 S3 存储桶 url?
  • 你想阻止什么样的攻击?

您是正确的,S3 存储桶名称必须与您的 URL 相同。 不再必需的,因为您可以使用cloudfront屏蔽 S3 存储桶。 如您所知,CloudFront 是来自 AWS 的 CDN。 因此存储桶名称可以是任何内容(随机字符串)。

您可以限制对存储桶的访问,以便只有 CloudFront 可以访问它。 然后将存储桶中的数据复制到边缘位置并从那里提供服务。 即使知道 S3 URL,它也不会执行任何操作,因为对 s3 存储桶的访问受到限制,IAM 规则授予 CloudFront 访问权限,其他人没有。

访问限制是通过源访问完成的,虽然您可以使用存储桶策略手动配置它,但您也可以在 CloudFront 中设置一个标志来代表您执行此操作。 在此处获得更多信息。

在 Route53 中使用 CloudFront 名称。 不要使用 CNAME,而是使用 A 类型,并将其设置为别名。 有关详细信息,请参阅此文档

如果您使用不同的 DNS 提供商,AWS 别名自然不可用。 我建议将区域文件从您的其他提供商移至 AWS。 如果您不能这样做,那么您仍然可以使用 CNAME。 再次参见此处了解更多信息。

我建议为 CloudFront 使用您自己的域名并设置 HTTPS。 AWS 为 AWS 内的服务免费提供证书。 您可以为您的域名注册一个证书,该证书通过 DNS 条目或电子邮件进行验证。 要进行设置,请参阅此文档

如果您想限制对 AWS 内特定文件的访问,您可以使用签名 URL。 此处提供更多相关信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM