我想使用azure密钥保管库来存储没有azure广告身份验证的控制台应用的连接字符串。
那么,有没有办法在没有azure AD的情况下访问Azure Key Vault?
答案 0 :(得分:5)
不幸的是,您现在无法在没有Azure AD身份验证的情况下访问Azure Key Vault。
密钥保管库客户端应用程序需要访问Azure Active Directory端点以进行身份验证。使用的端点取决于Azure AD租户配置,主体类型(用户主体或服务主体)以及帐户类型。
您可以在this official document中查看有关Azure Key Vault身份验证的更多详细信息。
此外,如果这对您很重要,您可以在this UserVoice Page中发布您的想法。 Azure团队将会看到它。
答案 1 :(得分:2)
不直接,不。密钥保管库需要AAD身份验证。您需要在AAD注册某事/某人以从密钥保险库中检索秘密(您的连接字符串)。
您是否特别想使用密钥保管库来存储您的连接字符串,或者您是否只是希望将它们保存在Azure中并且未在Azure密钥保管库上修复?如果您没有在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
OR
b)实际将连接字符串存储在功能目录中的本地文件中或作为功能应用程序设置存储,如果您实际上不想在Azure中进行静态加密(可以通过函数访问本地文件&#39 ; s可选的ExecutionContext
参数' FunctionDirectory
成员
OR
c)如果您仍想使用Key Vault,请在AAD中注册您的功能应用程序,并代表您的控制台应用程序调用Key Vault。
https功能应用程序可以充当您的看门人,并在控制台应用程序中嵌入一个简单的功能键作为授权。您可以将函数的返回类型保持为您需要的连接字符串,而不是打开控制台应用程序以外的任何其他内容。
ASP.NET Web API服务也可以这样做,但如果不经常调用函数(YMMV),函数的按使用付费性质可能会使其更具成本效益。
这完全取决于您不想对用户进行身份验证的假设。如果您这样做,但他们是外部的,并且您不想使用AAD,您可能需要查看Azure B2C以授权访问。我还没有尝试过,但这里有链接:
https://azure.microsoft.com/en-gb/services/active-directory-b2c/