部署后无法获取 Azure 密钥保管库机密
Unable to get Azure keyvault secret after deployment
我试图在我的应用程序中获取 keyvault 秘密,它在本地工作正常(在使用我的 AD 凭据执行应用程序时),但在部署我的 AppService 后它不工作。以下是我在 Azure 门户中分配的代码和角色 (IAM)。我和 AppService 的(角色:密钥保管库贡献者)。
public async Task<string> GetSecret()
{
var keyVaultUrl = "https://mykv.vault.azure.net/secrets/mysecret";
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = await keyVaultClient.GetSecretAsync(keyVaultUrl)
.ConfigureAwait(false);
return secret.Value;
}
public myclass()//ctor
{
var sce=GetSecret().Result;
}
当您将应用程序部署到 Azure 时,转到您的应用程序服务 > Identity
> turn on
您的系统分配的托管标识。
然后转到您的 Azure Key Vault,单击 Access policies
和 add access policy
。
选择 Secret permission
,至少要有 Get 和 List 权限。然后在 Select principal
属性中,单击您之前注册的 webapp 服务主体。
更多的细节可以参考Connect to azure key vault from an ASP.NET core app using azure managed identity的教程。
我试图在我的应用程序中获取 keyvault 秘密,它在本地工作正常(在使用我的 AD 凭据执行应用程序时),但在部署我的 AppService 后它不工作。以下是我在 Azure 门户中分配的代码和角色 (IAM)。我和 AppService 的(角色:密钥保管库贡献者)。
public async Task<string> GetSecret()
{
var keyVaultUrl = "https://mykv.vault.azure.net/secrets/mysecret";
AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
var secret = await keyVaultClient.GetSecretAsync(keyVaultUrl)
.ConfigureAwait(false);
return secret.Value;
}
public myclass()//ctor
{
var sce=GetSecret().Result;
}
当您将应用程序部署到 Azure 时,转到您的应用程序服务 > Identity
> turn on
您的系统分配的托管标识。
然后转到您的 Azure Key Vault,单击 Access policies
和 add access policy
。
选择 Secret permission
,至少要有 Get 和 List 权限。然后在 Select principal
属性中,单击您之前注册的 webapp 服务主体。
更多的细节可以参考Connect to azure key vault from an ASP.NET core app using azure managed identity的教程。