【问题标题】:How to access Azure storage account Via Azure Key Vault by service principal如何通过服务主体通过 Azure Key Vault 访问 Azure 存储帐户
【发布时间】:2022-01-03 20:28:43
【问题描述】:

我有一个外部 Web 应用程序,它可以选择使用服务主体访问存储帐户。

我想通过外部应用程序将数据直接加载到 datalake 帐户中来访问 Azure 存储帐户/blob。

这就是我想要做的:

  • 设置服务主体(使用 Azure AD 应用注册)
  • 创建存储帐户并将访问密钥存储在 Azure Key Vault 中。
  • 将服务主体机密添加到同一个密钥保管库。
  • 在 Key Vault 中创建一个策略,让服务主体有权读取 Key Vault 中的密钥和机密。
  • 还要在 Key Vault 中创建一个策略,让服务主体拥有访问存储帐户的参与者角色。
  • 还将对存储帐户容器的访问权限授予服务主体。

但我无法连接,也无法授权连接。

我很困惑我缺少哪些步骤来解决这个问题。

【问题讨论】:

  • 您的外部 Web 应用程序(我假设您在这里谈论的是应用服务)是在托管标识下运行还是使用服务主体?
  • 据我了解,您希望您的外部应用程序从您的密钥保管库中获取存储访问密钥。您的应用程序使用什么秘密来访问密钥保管库?为此,您必须与应用程序共享秘密。如果您这样做,您不妨共享该密钥并直接授予服务主体访问存储帐户的权限。这里不需要密钥库。如果您的应用程序托管在与您的存储帐户相同的 azure 租户下,那么情况就不同了。
  • @kane 应用程序是 'Adverity',作为使用服务原则将目标配置为 Azure blob 的选项。
  • @AnupamChand 我的应用程序是 SAS 产品“Adverity”,它希望将数据加载到 Azure blob,这意味着它没有托管在同一个 Azure 租户上。因此,如果这是真的,那么我已经为服务原则赋予了读取/写入存储帐户的角色......所以,他们不需要将存储访问密钥存储在密钥库中,然后从他们的服务原则中读取?
  • 然后他们应该将服务主体机密存储在他们的应用程序中,并使用它直接访问存储帐户。无需对其进行密钥保管。他们将需要使用密钥从您的 AAD 中获取不记名令牌,然后访问存储帐户。

标签: azure azure-storage azure-keyvault


【解决方案1】:

由于您要使用服务主体访问存储帐户,因此无需将存储帐户访问权限存储在密钥保管库中。

您可以按照服务主体访问存储帐户的步骤:

  1. 创建服务主体(Azure AD 应用注册)
  2. 创建存储帐户
  3. 将存储 Blob 数据参与者角色分配给服务主体

现在您将能够使用您的服务主体访问 Azure 存储 Blob 数据

注意:您不需要将服务主体客户端机密存储在密钥保管库中。因为您需要再次使用客户端密码才能首先访问密钥保管库。

【讨论】:

    【解决方案2】:

    感谢@RamaraoAdapa-MT 这行得通

    最后,我按照你说的设置, SAS -> 服务原理 -> 存储帐户权限 -> 存储帐户。

    在这种情况下,不需要 Key Vault。

    谢谢你们,
    Anupam Chand, RamaraoAdapa-MT

    【讨论】:

      猜你喜欢
      • 2019-07-28
      • 2021-04-07
      • 2021-01-29
      • 2020-07-21
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      相关资源
      最近更新 更多