如何在安卓中使用Azure Key Vault

3
我正在使用Azure作为云存储,可以使用以下链接上传和下载Azure Blob容器中的图像/文件。 Azure Blob storage 现在为了提供安全性,我们计划使用密钥保管库。使用密钥保管库密钥需要访问Azure中的Blob存储。 目前没有关于Android如何使用密钥保管库的信息。如果有人知道,请发帖说明。如果我漏掉了什么,请评论我将更新。我是Azure实现的新手。
编辑:我的目标是在应用程序中显示存储在Azure Blob存储中的图像。我想通过使用Key Vault而不是直接访问Azure存储来访问它。从Key Vault获取秘密密钥后如何使用该密钥连接Azure?

你想要使用KeyVault做什么?是使用BYOK进行存储加密还是从KeyVault检索存储密钥?等等... - silent
@silent 我想从密钥保管库获取密钥,以便从我的Android应用程序访问Azure Blob存储。 - YBDevi
你想把存储连接字符串存储在Azure KeyVault秘密中吗? - Joey Cai
不要在您的方案中使用(主)存储密钥!如果需要,使用带有特定到期时间的 SAS 令牌。 - silent
@JoeyCai 密钥存储在密钥保管库中,我想访问它们并使用它们来访问 Blob 存储。 - YBDevi
2个回答

1

密钥存储在密钥保管库中,我想访问它们并使用它们来访问 Blob 存储

在构建移动应用程序时,请勿直接使用 Azure Keyvault。 至少不要直接使用。

您知道,如果可能的话,我们希望将所有应用程序机密保存在设备之外。即使它们从未被存储,只会在内存中短暂存在。

为了解决这个特定的难题,我们仍然要利用 Keyvault 及其所提供的所有内容,并将 Azure 存储 API 密钥放入其中。

但是,我们不会让移动应用程序直接访问表存储,而是让 Azure Function 来执行该操作。

有关更多详细信息,请参阅此 article


TQ,上述文章给了我清晰的想法,即使使用功能应用程序,我们也将获得秘密。那么如何使用这些秘密键连接 Blob 存储。 - YBDevi
我还没有得到完整的答案,如果我找不到,那么我会接受你的答案。 - YBDevi
好的。如果您还有任何问题,请随时告诉我。 - Joey Cai
但是,我们不是正在将函数访问权限设置为公共吗?这样任何人都可以通过调用 Azure 函数来获取秘密。 - Anurag Shukla
正如@AnuragShukla所指出的那样,当您创建一个可以公开访问的Azure函数时,如何实现更好的安全性呢? - Daniel Smith
显示剩余7条评论

0

如果您对 Azure 云不是很熟悉,这里有一些基本知识:我们有Azure Function——可由 HTTP 请求或其他方式(例如数据库触发器)触发的可执行代码块,以及Azure Function App,它是一个容器,可以包含多个函数。

  1. Azure Functions 具有不同级别的安全性:匿名、函数和主机密钥 https://learn.microsoft.com/en-us/azure/azure-functions/security-concepts?tabs=v4
  2. 通过创建Azure Function App,您可以使用 OAuth2 协议保护函数应用程序本身 https://learn.microsoft.com/en-us/azure/app-service/overview-authentication-authorization

如果您正在使用其他云提供商,例如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的保护下,具有匿名的安全级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接