.net - Azure 共享访问签名是否意味着任何人都可以访问我的 blob?

标签 .net azure cloud database-backups

我正在编写一个备份服务来备份 SQL 数据库并将其保存在云存储中。实际上,我已经使用 Amazon S3 实现了这一点,但由于应用程序将分发给客户,因此我无法将 API key 与应用程序一起存储。我考虑过使用网络服务来提供 key ,但这不是我目前的最佳选择(因为它仍然存在 key 被盗的可能性。)

因此,我研究了 Windows Azure、Blob 服务,发现它们具有这些共享访问签名,可用于提供对云中资源的访问。您还可以使用签名将 blob 放入云中。但通读MSDN docs ,我不禁认为这是一个不安全的系统。任何知道 1. 我帐户的容器的确切名称以及 2. 如何形成签名的人都将能够访问这些对象。使用此签名时不需要 key 。至少这是我阅读文档的印象。

最后是我的问题。我对 Azure 共享访问签名的评估是否正确?如果不正确,为什么?任何人都可以建议一种替代方法来完成我想要完成的任务。

最佳答案

共享访问签名的范围可以是特定容器或特定 blob。然后,他们可以指定授予哪些权限(读取、写入、列出 blob),并且可以指定它们的有效期限。

创建 SAS 的唯一方法是拥有存储 key ,但拥有 SAS 的任何人都可以使用它来执行允许他们执行的操作。

听起来您希望允许所有客户写入 blob 但不读取它们?如果是这样,仅指定写入权限的 SAS 应该可以解决问题。

但我假设您还想限制(或计量)单个客户的使用情况?如果是这样,您可能需要服务器上有一些事件(Web 服务?)来授权每次使用并生成特定的、短期到期的 SAS 来允许该操作。然后您可以跟踪每次使用并计费。

关于.net - Azure 共享访问签名是否意味着任何人都可以访问我的 blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3110303/

相关文章:

ubuntu - 在 cloud init runcmd 中使用管道失败

.net - 逆正则表达式匹配

c# - .NET 上的 double 问题

azure - Azure Service Fabric 如何支持多区域以实现全状态服务?

jdbc - 使用 JDBC 使用默认连接字符串(管理控制台要求使用的字符串)连接到 Azure SQL 时发生证书异常

hadoop - HDFS数据节点可以是抽象的吗?

windows - 恢复 Azure Web 角色网站?

.net - 什么时候使用 Tuple 和 KeyValuePair 更好?

C#.NET 从 Web 应用程序访问串行端口

azure - 下载的许可证不足 Azure/Visual Studio Online 和 Visual Studio 2013