AWS Cloudfront signed urls问题:我想知道使用公开可见密钥与他们的用户逐个用户控制Cloudfront内容访问的利弊IP地址。我将公钥定义为任意访问令牌(例如,我 分配给每个用户的公钥或ID)作为查询参数(图片中的第3部分)从文档中获取。用户IP地址可以很容易地在服务器端获得(使用PHP使用$ _SERVER [' REMOTE_ADDR'])并且是在" {{1}中编码的值}",即图片中的第4部分。
由于人们越来越多地拥有许多计算机并且属于许多网络,因此基于IP地址的访问似乎是次优的方法,并且意味着每个用户都需要有多个策略,我必须跟踪这些中的每一个。政策。
另一方面,如果字符串难以理解,基于查询字符串Policy=
的访问可能会被简单的剪切和粘贴或暴力破坏。
AWS必须有理由建议使用基于IP的方法并且不建议采用公钥方法,但是如果不是某种方法,我很难理解查询参数的含义是什么访问令牌的目的。想法?
新手的背景信息:Cloudfront签名网址允许限制对服务器上的内容(称为"原始服务器"在文档中)的访问,例如您的S3存储桶。这些签名的网址可以自定义(称为"自定义政策",上面网址的public key
部分),以包含用户IP地址,这样如果您不使用该IP地址您无法访问该内容。
答案 0 :(得分:2)
据我了解,以下可能是选择IP地址作为政策一部分的原因。
从ip地址,几乎可以保证收到签名网址的用户是签署网址请求的用户。 (我说几乎可以保证,考虑到插入ip-address的服务器代码应该知道代理x-forwarded-for头的事实。同样的提供商服务的同一家庭/办公室中的每个人的远程IP地址也是一样的。 )
通常,在现实世界中,签名网址的到期时间很短。 (意思是,在您的签名到期之前,您的IP地址不会改变。
使用ip-address,还有一个好处,您可以使用过滤器阻止已知代理用户,地理位置和安全风险提供商。 (通常称为ip白名单/黑名单)