C# - 具有托管服务标识的 Azure 存储 [关闭]

Posted

技术标签:

【中文标题】C# - 具有托管服务标识的 Azure 存储 [关闭]【英文标题】:C# - Azure Storage with Managed Service Identity [closed] 【发布时间】:2018-10-26 05:21:54 【问题描述】:

是否有人设法通过 Azure 存储实现或拥有任何有关托管服务标识 (MSI) 的文档 - 理想情况下使用 Blob

我的目标是通过带有存储的 MSI 对我的 WebApp/WebJob 进行身份验证。设置身份验证后,我会将 blob 推送到存储。我需要这个的原因是从我的应用配置中消除任何形式的连接字符串和密码。

【问题讨论】:

请编辑您的问题并提供有关您想要完成的任务的更多详细信息。 问题中有足够的信息来保证答案,我在下面提供了。 @MurrayFoxcroft 请浏览问题的编辑历史。第二段是后来添加的。 啊,酷。那么一切都好。 我正在尝试使用系统分配的托管标识从 Azure 函数访问 Azure 存储。我遇到了Unauthorized 异常。详情在***.com/q/56284486/852956 【参考方案1】:

更新 Azure Blob 存储现在支持用于“无密钥”身份验证方案的 MSI(托管服务标识)! See the list of supported services here。

旧答案

很遗憾,不支持 Blob 存储,无论是拥有自己的身份还是提供对拥有自己身份的服务的访问权限。原因是 Blob 存储(所有 Azure 存储)不适用于 Azure Active Directory。

但是,您确实有其他选项,例如可以通过 MSI 访问的 Azure Data Lake Store 或 SQL Server。

另请注意,支持 Key Vault。在您的情况下,我将创建一个具有相关限制的存储 SAS 密钥,然后将 SAS 密钥放在 Key Vault 中。使用 WebApp 中的 MSI 从 Key Vault 检索密钥。有趣的是,我们已经能够使用 ARM 模板构建此配置,信任 WebApp MSI 和 Key Vault 中的存储密钥,只有部署帐户知道密钥,很好且安全,开发人员永远看不到或不需要SAS 密钥...

您可以在this link 找到支持 MSI(托管服务标识)的服务列表。

【讨论】:

我想指出的另一件事是,基于 Azure AD 的身份验证/授权即将在 Azure 存储中推出。他们最近添加了一些角色(例如 Storage Blob Reader 等)。他们今天不工作是另一回事:)。 确实如此,但是如果您今天有一个应用程序需要它,那么您就不走运了 :)。很高兴指出“注意这个空间” - Azure 不断发展 对此完全同意。 太好了,感谢您提供的信息。 现在 Azure 存储作为支持 MSI 的服务列在该链接中(自 2018 年 5 月起提供预览版)。是时候更新这个答案了吗?

以上是关于C# - 具有托管服务标识的 Azure 存储 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Azure 使用 REST api 和托管标识创建 blob 容器 - 403 错误

为啥我的 Azure 应用服务无法使用托管标识连接到 Azure 存储帐户?

通过托管标识通过 Synapse 访问 Azure 存储帐户

具有托管标识(用户分配)的 Azure SQL 无法针对 AAD 使用

具有用户分配的托管标识的 Azure SQL 数据库连接池

使用托管标识在 Azure 中应用服务到应用服务身份验证