继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

谷歌云中管理签名URL的风险

aluckdog
关注TA
已关注
手记 473
粉丝 68
获赞 394

什么是带有签名的临时链接?

带签名的URL 是一个很好的方式来限时访问存储在 Google Cloud Storage (GCS) 存储桶中的私有的内容。

比如说,你希望用户可以直接读写 GCS 存储桶中的对象,而不需要拥有一个 Google 账户。你可以通过你的应用程序特有的逻辑来为用户提供一个签名 URL,从而在一定时间内授予他们对该资源进行读写删除的权限。

在 Google Cloud Storage 中有兩種簽名請求的類型——使用 HMAC 簽名的 URL 和使用 RSA 簽名的 URL 以及 相關描述相關說明

带签名URL的安全隐患

签名的 URL 在其查询字符串中包含验证信息,允许没有权限的用户对某个资源执行特定的资源访问操作。生成后,任何人只要知道该 URL 就可以在 URL 到期时间到达或在用于签名 URL 的密钥被替换之前访问该资源。

这种行为存在安全隐患,因为它允许恶意内部人员生成并分享带有签名的 URL,从而可能使未经授权的用户访问到敏感 GCS 资源。

使用带有签名的 URL 来减少风险:减少风险性

以下是一些用于管理签名 URL 相关风险的控制。

检测使用带签名的URL:

你可以通过使用 Cloud Monitoring 中预设的 authn/authentication_count 存储指标,来检测带有 HMAC 和 RSA 验证类型的带签名 URL 请求。详情请参阅 此处

统计项目中HMAC/RSA签名的请求数

您可以设置基于指标的警报,这样当任何请求超出特定阈值时,您就能收到通知。更多详情,请参阅这里

另外,Signed URL 请求会记录用于创建它们的认证信息。这使您通过检查 数据访问审核日志 可以识别误用。但是,默认情况下这些日志默认是禁用的(除了 BigQuery)。要跟踪 Cloud Storage 访问,您需要使用这些日志,并且需要支付费用。

防止生成带签名的URL

HMAC签名的URL — 您可以使用预构建的组织策略约束项 constraints/storage.restrictAuthTypes 限制通过HMAC密钥签名的请求,并在组织级别应用该约束。详情请参阅 这里

你可以限制由服务账户 HMAC 密钥、用户账户 HMAC 密钥或两者签署的请求。被限制类型的 HMAC 密钥不能再在该资源中创建或激活,约束会强制执行。现有的 HMAC 密钥仍然存在,但不再可用来签署请求。它们可以被停用或删除,但不能重新激活或恢复使用。

RSA签名的URL — 唯一的方法是防止别人创建RSA签名的URL,不授予某人相关的读写权限。没有特定的权限仅用于创建签名的URL。拥有获取、创建或删除存储对象的权限的用户可以创建对应的签名URL。

从某种意义上讲,如果相关人员已经可以直接访问资源,是否通过生成签名链接访问就没有太大区别了。

防止滥用带签名的 URL

签名的 URL 会受到您定义的任何 VPC 服务控制 的限制。因此,您可以通过创建一个包含 Cloud Storage API 作为受保护服务的 服务边界,来降低通过签名 URL 泄漏数据的风险。这样可以阻止服务边界外部访问存储对象。

您可以选择通过访问级别来允许从外围范围之外访问受保护的服务(了解如何使用访问级别)。访问级别定义了一组属性,这些属性必须得到满足,以使请求得到响应。访问级别可以包含各种标准,例如IP地址、用户或设备的身份。这样只会允许符合您指定标准的经过签名的请求。

结束语

签名 URL 是一种有用的工具,适用于那些希望在安全和实用之间找到平衡的场景。这篇博客为那些觉得签名 URL 的安全风险大于其好处的客户提供了缓解措施。对于那些客户来说,签名 URL 的安全风险超过了其益处。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP