编辑:我的目标是在应用程序中显示存储在Azure Blob存储中的图像。我想通过使用Key Vault而不是直接访问Azure存储来访问它。从Key Vault获取秘密密钥后如何使用该密钥连接Azure?
密钥存储在密钥保管库中,我想访问它们并使用它们来访问 Blob 存储
在构建移动应用程序时,请勿直接使用 Azure Keyvault。 至少不要直接使用。
您知道,如果可能的话,我们希望将所有应用程序机密保存在设备之外。即使它们从未被存储,只会在内存中短暂存在。
为了解决这个特定的难题,我们仍然要利用 Keyvault 及其所提供的所有内容,并将 Azure 存储 API 密钥放入其中。
但是,我们不会让移动应用程序直接访问表存储,而是让 Azure Function
来执行该操作。
有关更多详细信息,请参阅此 article。
如果您对 Azure 云不是很熟悉,这里有一些基本知识:我们有Azure Function——可由 HTTP 请求或其他方式(例如数据库触发器)触发的可执行代码块,以及Azure Function App,它是一个容器,可以包含多个函数。
如果您正在使用其他云提供商,例如GCP,您也可以使用联合令牌进行身份验证,请参见https://learn.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation-create-trust-gcp?tabs=azure-cli%2Ctypescript
由于您创建了此身份验证流程,即使您的函数没有密钥(您的函数安全性是匿名),函数应用程序(您需要使用OAuth2流进行身份验证)现在也可以调用未受保护的函数URI。
还有一点需要注意的是,为了真正掌握这个知识点,可以尝试自己创建一个FunctionApp,在其中禁用身份验证,如果您访问链接,您将看不到凭据要求,并检查是否通过复制AzureFunction URI来调用函数(匿名级别安全性)。
现在在FunctionApp上添加身份验证,然后自行查看您无法再调用AzureFunction。
总之https://codemilltech.com/mobile-apps-azure-keyvault-dont-do-it/
现在你不再需要在应用程序中管理密码或API代码。所有API代码和密码现在都存储在它们应该存储的地方 - 后端。
对于错误的答案,我很抱歉,我知道这可能有点多余,但这就是我理解整个Azure资源(keyvault)通过Azure函数访问的方式,这些函数位于Function App的保护下,具有匿名的安全级别。