Azure Key Vault:用户、组或应用没有对 Key Vault 设置机密权限

Azure Key Vault: The user, group, or app does not have secrets set permission on key vault

我正在使用 Azure CLI 创建一个脚本,它将自动生成应用程序注册(服务主体),然后使用该应用程序注册创建一个将存储在 Azure Key Vault 中的机密。

但是,我收到以下错误:

用户、组或应用程序 'appid=04b07795-8ddb-461a-bbee-02f9e1bf7b46;oid=0ec2b0e8-daeb-46a8-b627-0d4f61f87157;numgroups=134;iss=https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/' 没有密钥保管库 'asakeyabcfelaqpgsfnxcy;location=eastus' 的机密设置权限。如需解决此问题的帮助,请参阅 https://go.microsoft.com/fwlink/?linkid=2125287

任何人都可以提供有关此 ID 是什么以及如何解决此错误的指导吗?这不是我的应用程序注册对象 ID 或应用程序 ID。

我觉得你现在担心的有两点,一是你添加secret失败,二是报错信息中的app id不是你注册的。

我想你已经按照文档执行了cli命令,所以我只想解释第二点。请允许我向您展示一个代码示例以获得更好的解释。

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

public async Task<IActionResult> PrivacyAsync()
{
    var kvUri = "https://your_vault_name.vault.azure.net/";
    var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential());
    _ = await client.SetSecretAsync("test0311", "hello");
    return View();
}

当我们想要将key vault secret 添加到azure 时,我们需要提供一个凭据以便我们的操作得到验证。这是这里的 DefaultAzureCredential(),它有几个来源可以像下面的屏幕截图一样获得身份验证。

也就是说,如果有人设置了environment variables认证,那么它会覆盖你在执行cli命令时输入的信息,这通常会导致应用程序与你设置的不同的问题。我想你可以按照这个文档检查你所有的配置再试一次,或者你可以直接用你在电脑上注册的应用程序添加环境变量。

顺便说一下,请不要忘记在 azure 门户中为您注册的 azure 广告应用add access policy