【发布时间】:2018-06-03 17:29:33
【问题描述】:
我想使用 azure key vault 来存储没有 azure 广告身份验证的控制台应用程序的连接字符串。
那么,有没有办法在没有 azure AD 的情况下访问 Azure Key Vault?
【问题讨论】:
标签: azure-active-directory azure-keyvault
我想使用 azure key vault 来存储没有 azure 广告身份验证的控制台应用程序的连接字符串。
那么,有没有办法在没有 azure AD 的情况下访问 Azure Key Vault?
【问题讨论】:
标签: azure-active-directory azure-keyvault
很遗憾,您目前无法在没有 Azure AD 身份验证的情况下访问 Azure Key Vault。
Key Vault 客户端应用程序将需要访问 Azure Active Directory 端点以进行身份验证。 使用的端点取决于 Azure AD 租户配置、主体类型(用户主体或服务主体)以及帐户类型。
您可以在this official document 中查看有关 Azure Key Vault 身份验证的更多详细信息。
另外,如果这对您很重要,您可以在this UserVoice Page 中发布您的想法。 Azure 团队会看到它。
【讨论】:
不直接,不。 Key Vault 需要 AAD 身份验证。您需要向 AAD 注册某事/某人,才能从 Key Vault 检索机密(您的连接字符串)。
您是特别想使用 Key Vault 来存储连接字符串,还是只想将它们保存在 Azure 中的某个地方,而不是固定在 Azure Key Vault 上?如果您没有固定在 Key Vault 上,并且没有将其用于其他任何用途,是否可以考虑将连接字符串放入 Azure 存储帐户?您可以将连接字符串存储在 Azure 表中、Azure Blob 中的文件或 Azure 文件等中。无论哪种方式最适合您 - 它仍然会在静态时被加密。 https://docs.microsoft.com/en-us/azure/storage/
我猜您不想通过用户身份验证,您只想访问连接字符串。 我的回答是基于这个假设。
您仍然需要充当控制台应用程序中介的东西。某些东西需要在 Azure 中进行身份验证才能获取连接字符串。我建议尝试使用 https 触发的 Azure 函数作为一种简单、轻量级的方式来做到这一点。您可以使用功能级授权,在本机应用程序代码中嵌入功能键。它在对函数端点的 GET 调用中使用该代码来建立其调用函数的授权。当我这样做时,我发现此链接很有帮助: http://dontcodetired.com/blog/post/Azure-HTTP-Function-Authorization-with-Function-Keys
然后该函数可以:
a) 向连接字符串所在的存储帐户提供一个有时间限制的共享访问签名,如果您喜欢这种方法,https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1
或
b) 实际上将连接字符串存储在函数目录中的本地文件中或作为函数应用程序设置,如果您实际上不希望在 Azure 中进行静态加密(可以通过函数的可选 ExecutionContext 访问本地文件参数的FunctionDirectory成员)
或
c) 如果您仍想使用 Key Vault,请在 AAD 中注册您的函数应用,并让它代表您的控制台应用调用 Key Vault。
然后,https 功能应用程序可以充当您的看门人,并在您的控制台应用程序中嵌入一个简单的功能键作为授权。您可以将函数的返回类型保留为您需要的连接字符串,而不是打开任何其他内容到您的控制台应用程序。
ASP.NET Web API 服务也可以,但如果不经常调用 (YMMV),Functions 的付费使用性质可能会使其更具成本效益。
这一切都是基于您不想对用户进行身份验证的假设。如果您这样做,但它们是外部的并且您不想使用 AAD,您可能需要查看 Azure B2C 以授权访问。我还没有尝试过,但这是链接:
https://azure.microsoft.com/en-gb/services/active-directory-b2c/
【讨论】: