Azure Keyvault - "Operation "列表“保管库策略不允许”,但所有权限均已检查

Azure Keyvault - "Operation "list" is not allowed by vault policy" but all permissions are checked

我正在使用带有 AAD 应用程序的 .NET 客户端访问 KeyVault。尽管此 AAD 应用程序启用了机密下的所有权限(下面的屏幕截图),但如果我导航到机密面板,我会收到 "The operation "List" is not enabled in this Key Vault's access policy"。

我希望能够通过 AAD 应用程序设置权限,因此无法使用 Powershell。

如果我通过 Powershell 设置权限 - 它确实有效。

我如何创建我的访问策略:

        var accessPolicy = new AccessPolicyEntry
        {

            ApplicationId = app,
            ObjectId = Obid,
            PermissionsRawJsonString = "{ \"keys\": [ \"all\" ], \"secrets\": [ \"all\"  ], \"certificates\": [ \"all\" ] }",
            TenantId = ten,

        };

        return accessPolicy;

这给了我

然后出现列表错误,所以我必须使用

Set-AzureRmKeyVaultAccessPolicy -VaultName vaultname -ResourceGroupName location -ObjectId obid -PermissionsToKeys all -PermissionsToSecrets all 

这将消除错误,但我更喜欢一个解决方案,以便我可以使用 .NET SDK 来解决。

经过多年尝试解决此问题 - 问题出在访问策略代码中。当用户在代码中注册时 - 它会将自己与应用程序 ID 相关联。应用程序 ID 是问题所在,因为它认为用户是应用程序和用户。

如果您进入门户,然后 "Access Policy" 在 Keyvault 上,它会显示下面的应用程序 + 用户。如果您尝试添加一个用户(已经在列表中) - 它会添加第二个用户 - 所以您将有 2 个相同的用户。

所以只需要:

       var accessPolicy = new AccessPolicyEntry
    {

        ApplicationId = app, // Delete this line
        ObjectId = Obid,
        PermissionsRawJsonString = "{ \"keys\": [ \"all\" ], \"secrets\": [ \"all\"  ], \"certificates\": [ \"all\" ] }",
        TenantId = ten,

    };

    return accessPolicy;

Microsoft 文档有时可能含糊不清,我相信这是其中之一。

我遇到了同样的问题,解决方案是进入我的保险库 Access Policies blade,然后单击我的应用程序并在 Key permissions / [ 上激活 List =13=]

收到错误:

The operation "List" is not enabled in this key vault's access policy.

You are unauthorized to view these contents.

这里的关键是看You are unauthorized to view these contents.

导航到 Access policies 并将您当前登录的用户添加为至少具有 List 权限的主体:

您现在可以查看密文(如果有的话):