当前位置: 首页 > 知识库问答 >
问题:

Azure功能(带有用户指定的托管身份)从密钥保管库中检索机密在本地工作,但在Azure门户中失败

顾俊哲
2023-03-14

我创建了一个Azure函数,该函数使用用户指定的托管身份从Azure密钥库中检索机密。当我在Visual Studio中测试时,代码在本地工作,但当我发布到云时失败。我已在Azure中创建了一个“托管标识”资源,并向托管标识添加了一个“关键Vault参与者”角色分配。在设置下的my Azure函数中

以下是我在Azure门户中测试功能时收到的错误。HTTP响应代码:500内部服务器错误执行“Function1”(失败,Id=xxxxxxxxx,持续时间=19ms)服务请求失败。状态:400(错误请求)标题:日期:2021 11月22日星期一22:02:56 GMT内容长度:

我正在使用Azure。要验证的身份,请参见此处的示例:Azure应用程序验证。身份迁移指南

public static class TestManagedIdentity
{
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        string secret = String.Empty;
        string secretName = data.SecretName;

        azureKeyVaultURI = "https://MyKeyVault.vault.azure.net";
        var client = new SecretClient(new URI(azureKeuVaultURI), new DefaultAzureCredential());

        var secret = client.GetSecret(secretName).Value;
        log.LogInformation($"My secret value is {secret}");

        return new OkObjectResult("Success!");
    }
}

共有1个答案

宋嘉懿
2023-03-14

我解决了这个问题。我缺少对Azure托管标识客户端ID的引用。使用以下内容更新了代码。

var client = new SecretClient(new Uri(azureKeyVaultURI), new DefaultAzureCredential( new DefaultAzureCredentialOptions { ManagedIdentityClientId = clientId }));
 类似资料:
  • 我无法从azure key vault检索到运行在azure windows VM中的.NET控制台应用程序的秘密。下面是我使用过的代码,我已经给了服务主体在密钥库中的所有权限。

  • 我在Azure App Service中部署了一个spring boot应用程序,该应用程序使用用户管理的身份访问Azure Key Vault。 我遵循了以下提到的步骤: 创建了用户管理标识 在Azure app Service中部署了spring boot app 通过身份选项将新创建的用户管理身份添加到应用程序服务中 在应用程序服务中IAM的角色分配下添加用户托管标识为所有者角色 创建Azu

  • 我正在寻求在Azure DevOps中的ARM部署中集成密钥库的最佳方法。 例如,部署一个应用程序服务并创建一个托管服务标识,这样它就可以从密钥库中获取预先存在的数据库的机密。 1)在Azure portal中,我手动为App服务创建了一个新的服务主体,在访问策略中使用“get”和“list”权限。 2)在我的DevOps项目中,在项目设置下,我创建了一个服务连接。 3)我已经在DevOps中创建

  • 我有一个在Azure VM中托管的php应用程序,在密钥库中有一些秘密。我已经设置了托管身份并获得了进入保险库的权限。 Azure SDK for php不支持密钥库,所以我使用REST接口。 我的问题是当在本地运行时,即我的代码在桌面上以VSCode运行时,我不能调用AIMS来获取令牌,因为我在本地机器上没有托管标识。 我只能想到两个选择: null 请注意,Visual Studio提供了Az

  • 我试图从Azure密钥库中检索一个秘密(不使用凭据,如本教程:示例): 但是当我调用时,我得到一个 我的密钥库url的格式类似于“https://my-keyvault.vault.azure.net”。

  • 如何从reactjs应用程序中的azure密钥库中获取密钥?我在下面的标题中传递我的秘密密钥 如何从azure密钥库中获取“subscription-key”值?我在azure密钥库中添加了订阅密钥值。