【发布时间】: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