[英]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 相同。 这不再是必需的,因为您可以使用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 条目或电子邮件进行验证。 要进行设置,请参阅此文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.