azure - Azure 中的安全 Blob

标签 azure

为特定用户组保护 Windows Azure 存储中的 blob 的最佳方法是什么。例如,我有一个本地 ASP.NET 网站(内联网),带有用于存储大文件的后端 Windows Azure blob 存储。我喜欢为每个单独的 blob 提供签名 URL 来确保安全的想法,但这对于长期存在的 blob 真的有效吗? (无限?)

我需要仅针对特定用户的 Blob 提供精细的安全级别(如何使用 Blob 存储轻松实现此目的)。 *注意我相信我不需要 ACS。如果可能的话,我想使用策略和签名 URL 来实现它。

第二个问题,我想我也可以用同样的方式保护 CDN 中的这些数据,有人可以确认吗?

谢谢

具有无限时间工作和 blob 权限的共享访问策略,例如读作业?

最佳答案

如果您需要 Blob 对单个用户的可用时间超过一小时,则必须使用附加到容器的 SAS 策略。但是,由于每个容器最多可以有 5 个,因此对于许多用户来说它无法很好地扩展。 SAS 保单的有效期可以以年为单位。

这里更典型的解决方案是让用户访问您的网站或服务,然后您以您选择的任何方式对其进行身份验证。当他们确实希望下载文件时,您应该生成具有较短到期时间的 1 次 SAS 签名(不是策略)。这可以很好地扩展并防止未经授权的用户稍后重复使用。您还可以从存储而不是网络角色中获得服务。

当您使用 CDN 时,事情会变得更加复杂。因此,虽然您可以在 CDN 资源上使用 SAS 签名,但它们并没有真正得到尊重。也就是说,唯一的URL是底层资源的关键。因此,当您请求 SAS 安全 blob 时,它只会将其拉入 CDN 并使用该 URI 作为 key 来提供服务。然后,它将使用 CDN 缓存策略(而不是 SAS 过期)来继续提供服务。这可能会导致 Blob URI 设置为在 10 分钟后过期,但 CDN 会根据过期策略使用相同的 SAS 签名将该 Blob 缓存几天。 CDN 永远不会再次联系存储进行验证。因此,使用它可能不是一个好主意。此外,由于每个 CDN 资源都以 URI 为 key ,这还意味着每次 SAS 签名更改时,您都会缓存同一文件的许多副本(增加事务和带宽费用)。长话短说,CDN 和 SAS 不能很好地混合。

关于azure - Azure 中的安全 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9698493/

相关文章:

asp.net - 如何在 Windows Azure 上使用多个实例的 asp.net 缓存

sql - 尝试使用 Delphi FireDac 连接到 Windows Azure SQL 数据库时出现错误 "no such table CUSTOMERS"

来自 Azure Function 的 C# HttpClient POST 请求(带有用于第三方 API 的授权标记)将被删除 header 和正文

c# - 使用 Azure DocumentDB 和 MVC5 处理动态数据

azure - 使用托管标识从逻辑应用程序进行身份验证来调用 Azure 函数

azure - 使用 ADAL 获取 access_token

Azure VHD 文件和页面 blob

sql - Excel 到 Azure 数据工厂到 SQL

powershell - 服务器无法验证请求。验证证书是否有效并且与此订阅关联

python - 使用 Python 从 Azure Monitor 获取特定警报