我正在构建一个视频共享应用程序,用于录制和共享游戏剪辑。我最近添加了云存储作为一项功能,我使用 Azure SDK for Node 与上传视频和元数据的存储帐户进行交互。到目前为止一切都运行良好。我的目标是以每月少量订阅的价格出售云托管功能。
电子客户端获取存储帐户名称和访问密钥。它可以自由管理存储帐户,并且可以无限上传任意数量的内容。这让我很害怕,因为我不想收到一大笔 Azure 账单。
我假设 Azure 中会有控件来创建权限较少的存储帐户和/或施加大小限制的容器。然而,这些似乎都不存在。
所以我的问题;如何安全地将凭据分发给我的用户,以限制对 Azure 存储帐户的读取和写入?
我似乎可以使用 Azure 中的签名机制设置一个身份验证服务器,充当对我的 Azure 存储帐户的每个请求的代理,但感觉这似乎使基本用例变得过于复杂?如果没有简洁的解决方案,其他云提供商是否提供合适的解决方案?
电子客户端获取存储帐户名称和访问密钥。它 可以自由管理存储帐户并可以上传尽可能多的内容 喜欢没有限制。这让我害怕,因为我不想被击中 大额 Azure 账单。
您的理解是正确的。帐户密钥不仅可以完全控制存储帐户,如果您因某种原因更换帐户密钥,它也会带来巨大的挑战(所有用户都需要下载应用程序的新版本。
我假设 Azure 中会有控件来创建更少的权限 施加大小限制的存储帐户和/或容器。然而, 这些似乎都不存在。
是的。无法创建特权较低的帐户或对开箱即用的容器施加大小限制。这是您需要自己处理的事情。
所以我的问题;如何安全地将凭据分发给我的用户 允许限制对 Azure 存储的读取和写入 帐号?
Shared Access Signature
功能。它允许您创建 SAS URL,为用户提供对您的存储帐户的有时限且权限受限的访问。
您仍然需要实现代理。该代理的职责是生成 SAS 令牌。根据您想要的控制和安全性,您可以通过两种方式实现此代理:
这种方法的缺点是,所有内容都通过此代理进行路由,您可能需要一个非常强大的基础设施来处理用户的请求,但它非常安全,并为您提供了很多控制权。
但是,请记住,SAS URL 可能会被滥用。您可能会发现此链接对使用 SAS 时的最佳实践很有帮助:https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview#best-practices-when-using-sas .