【发布时间】:2020-02-24 07:17:31
【问题描述】:
我们正在使用 Azure Functions,这需要访问至少 1 个 Azure 存储位置。 Azure 存储位置必须支持表,因此 Azure AD Auth 已失效。存储帐户的连接字符串以及凭据信息必须对环境中的函数可用。良好的安全实践要求我们以某种频率轮换密钥。我们目前将密钥存储在 Key Vault 中,并希望继续这样做,而不是将密钥存储在 Azure 门户中。
Azure AD 身份验证在此处无效,因为它生成的令牌无法用于函数所需的表,我们是否正确?
似乎理想的方法是在Microsoft.Azure.Storage.CloudStorageAccount 中添加一个新设置,
internal const string AccountKeyVaultLocationSettingString = "AccountKeyVaultLocation";
然后向 ParseImpl 添加逻辑,以便可以将表示机密的 KeyVault URL 传递到此方法,并从那里查询密钥。
另一个选项是覆盖 Microsoft.Azure.WebJobs.Script.Scaling.StorageConnectionString(和类似的连接字符串设置),以便查询 KeyVault。
这可以添加到存储库吗?什么是 ETA?您会欢迎对此做出贡献吗?
【问题讨论】:
-
如果你只是想在 Azure 函数中从 Azure Key Vault 获取 Azure 存储连接字符串,那么使用 Azure 函数托管标识直接从 Azure Key Vault 获取如何?通过这种方式,您可以专注于您的逻辑,不会对这种集成进行任何代码修改。详情请见:azure.microsoft.com/en-us/blog/…
-
Azure 身份将是用于请求密钥的机制。问题在于如何配置 Azure 存储以知道在 Vault 中查找密钥。
-
我点击了链接,发现它似乎与我所追求的相似。问题是,它是进行一次查询,还是每次需要信息时都重新查询 KeyVault。对于我的用例,它需要以某种频率刷新 KeyVault 中的数据。
-
更新:由于 URL 中需要版本,因此这没有用。关键是允许应用程序自动获取旋转键。如果我们必须手动更改 URL,这与手动更新 Key 没有区别。
-
嗨@Daniel,如果您使用Azure自动化来轮换您的密钥,您也可以同时通过Azure自动化更新您的Azure函数中的连接字符串url,如果您需要我可以提供你带个样品。顺便说一句,如何在功能逻辑中使用密钥库 sdk 从密钥库获取连接字符串,然后连接到存储?
标签: azure-functions azure-storage azure-keyvault