ezy*_*der 10 azure-keyvault azure-managed-identity .net-5 defaultazurecredential
我们有一个 Web api(.NET 5),它可以从 Azure KeyVault 访问一些机密。
在用于开发的本地计算机中,由于我是创建的新保管库的所有者,因此我的电子邮件具有对 keyvault 的访问权限。
因此,我通过 VS --> 工具 > 选项 --> Azure 服务身份验证 --> 帐户选择 --> "myemail@.com" 选择了我的帐户
我有下面的代码来从 Keyvault 获取机密并通过配置进行访问,就像我们访问 appsettings 值一样。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var appSettings = config.Build();
var credentialOptions = new DefaultAzureCredentialOptions();
var credential = new DefaultAzureCredential(credentialOptions);
config.AddAzureKeyVault(new Uri(appSettings["Url:KeyVault"]), credential);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
Run Code Online (Sandbox Code Playgroud)
我们在服务和控制器层中访问像 _configuration["secret"] 这样的秘密值。
我的查询是
1,如果我将此代码部署到本地服务器,它将如何工作(开发环境是本地服务器)?
2,如果我将此Web API部署到Azure,如何使用身份AD应用程序访问密钥保管库而无需更改任何代码。我们注册了 AD 应用程序,该应用程序具有对此特定 Vault 的读取权限。
我希望代码能够在本地和 Azure 上无缝运行。
小智 7
DefaultAzureCredential是从 Azure Active Directory 连接和检索令牌的全新统一方式,可与需要它们的资源一起使用
DefaultAzureCredential根据应用程序运行的环境获取令牌
如果启用以下凭据类型,将按顺序尝试 - EnvironmentCredential、ManagedIdentityCredential、SharedTokenCacheCredential、InteractiveBrowserCredential
- 如果我将此代码部署到本地服务器,它将如何工作(开发环境是本地服务器)
在开发计算机(本地服务器)中执行此操作时,需要首先配置环境,将变量 AZURE_CLIENT_ID、AZURE_TENANT_ID 和 AZURE_CLIENT_SECRET 设置为服务主体(在 Azure AD 中注册的应用程序)的适当值
- 如果我将此 Web 应用程序部署到 Azure,如何使用身份 AD 应用程序访问密钥保管库而无需更改任何代码。我们已注册 AD 应用程序,该应用程序具有对此 Vault 的读取权限
您可以为您的 Web 应用程序启用系统分配的托管身份。在 Azure Key Vault 中添加此身份的访问策略以读取机密。现在,无需对代码进行任何更改,您的 Web 应用程序就能够读取密钥保管库机密
| 归档时间: |
|
| 查看次数: |
13080 次 |
| 最近记录: |