使用Azure Key Vault存储密钥是否需要注册应用?本地.NET应用迁移密钥至Key Vault的费用疑问
你的Azure Key Vault相关问题解答
我来逐一拆解并解答你的问题,都是基于Azure官方政策和实际开发经验的内容:
1. 是否可以不注册Azure应用程序就使用Key Vault?
大部分生产场景下必须注册Azure AD应用(或创建服务主体),因为Azure Key Vault是基于Azure AD身份验证来管控访问权限的。
不过有个例外:如果你只是在本地临时测试,用Azure CLI登录了自己的Azure账号,那么可以通过你的个人用户身份访问Key Vault(前提是你的账号被分配了Key Vault的访问权限),但这种方式不适合生产环境——因为生产环境需要稳定、非交互式的身份验证,而个人用户身份会涉及到登录过期、权限变更等问题。
对于本地运行的.NET应用,生产环境下的标准做法是注册一个Azure AD应用(生成服务主体),然后给这个服务主体分配Key Vault的相应权限(比如读取机密的权限),应用通过服务主体的凭据(客户端ID+客户端密钥/证书)来获取访问Key Vault的令牌。
2. 注册Azure应用程序是免费还是会产生月费?
完全免费!Azure AD应用注册本身不会产生任何费用,不管你创建多少个应用注册,都不会被收费。只有当你使用Azure的其他付费服务(比如Key Vault的超出免费额度的操作、虚拟机等)时,才会产生费用。
3. Azure免费订阅使用Key Vault的成本,以及迁移数据的过程成本?
免费订阅阶段
Azure免费订阅包含Key Vault的免费额度:
- 每月10,000次密钥操作
- 每月1,000次机密操作
- 每月1,000次证书操作
- 最多存储10个密钥/机密/证书
对于普通的本地.NET应用来说,这个额度完全够用——你只是加载数据库密钥,每次应用启动调用几次机密读取操作,远远达不到免费额度的上限,所以不会产生额外费用。
未来付费阶段
Key Vault的成本非常低,主要由两部分构成:
- 存储成本:按存储的密钥/机密/证书的容量收费,每GB每月大约几美元(具体价格根据区域略有差异),但一般应用的机密数据量极小,这部分成本几乎可以忽略。
- 操作成本:按实际执行的操作次数收费,比如每10,000次机密读取操作大约几美分,只有当你有极高频率的调用时才会产生明显费用,普通应用完全不用担心“较高成本”的问题。
迁移数据并加载到.NET应用的过程
这个过程本身没有额外成本,步骤大概是这样:
- 在Azure门户创建Key Vault实例。
- 注册Azure AD应用(服务主体),并在Key Vault的访问策略中给该服务主体分配
Get机密的权限。 - 在你的.NET应用中,添加Azure Key Vault配置提供者的NuGet包(
Azure.Extensions.AspNetCore.Configuration.Secrets)。 - 修改Program.cs中的配置加载逻辑,添加Key Vault的配置源,示例代码如下:
var builder = WebApplication.CreateBuilder(args); // 从appsettings加载基础配置,包括Key Vault的URL、服务主体凭据 var keyVaultUrl = builder.Configuration["KeyVault:Url"]; var clientId = builder.Configuration["AzureAd:ClientId"]; var clientSecret = builder.Configuration["AzureAd:ClientSecret"]; // 添加Key Vault配置源 builder.Configuration.AddAzureKeyVault( new Uri(keyVaultUrl), new ClientSecretCredential(clientId, clientSecret)); // 后续应用就可以通过builder.Configuration["YourDatabaseKeyName"]获取Key Vault中的机密了
- 将appsettings.json中的数据库密钥删除,改为在Key Vault中创建对应的机密(名称和之前的配置键一致)。
- 测试应用启动,确认能正常从Key Vault加载机密并访问数据库。
内容的提问来源于stack exchange,提问作者Noobie2021
相关产品推荐
相关产品推荐

